0

使用在线资源,我已经成功地绘制了 4 个传感器值随时间变化的图,但是我想使用来自传感器的值来绘制一个实时图,使用前一个图中的值绘制第 5 个图。变量 sampleVector 是一个二维数组,包含随时间变化的感官值(Y 变量)(X 变量)

第 5 个图的公式是:Plot5= -0.5 * (Plot0 + Plot1) ... 在所有样本上

以下是我实现这一目标的尝试,但它没有奏效。第 5 个图的绘制速度似乎是它的两倍,就像它附加了两倍的 x 值一样。它似乎也不喜欢我乘以诸如“-0.5”之类的值。我是 Qt 的新手,我还没有找到一种方法来操作和使用“sampleVector”的 Y 值。如果也可以解释的话,我也不太了解变量的格式。

先感谢您

void Plot::plotSampleVector(QVector<QVector<QPointF> > sampleVector){

//*** length of the data
 const int sampleSize = sampleVector.length();

//***Append new values to "QVector<Plot *> d_plots"
 for (int ii=0; ii< sampleSize; i++){

    d_plots[0] -> AppendPoint(sampleVector.at(ii).at(0));
    d_plots[1] -> AppendPoint(sampleVector.at(ii).at(1));
    d_plots[2] -> AppendPoint(sampleVector.at(ii).at(2));
    d_plots[3] -> AppendPoint(sampleVector.at(ii).at(3));
//***Problem Code:
    d_plots[4] -> AppendPoint(-0.5 * (sampleVector.at(ii).at(0) + sampleVector.at(ii).at(1)));

  }

//***Draw Curves
  for (int ii=0; ii<5; ii++){
    d_plots[ii] ->DrawCurveSegment(sampleSize)
   }

}
4

1 回答 1

0

您正在操纵QPointF其行为类似于数学点。所以当你这样做时

-0.5 * (sampleVector.at(ii).at(0) + sampleVector.at(ii).at(1))

您正在创建一个新点:

x = -0.5 * (x_0 + x_1)
y = -0.5 * (y_0 + y_1)

但从你的问题来看,我认为你想要的是:

x = x_0 = x_1
y = -0.5 * (y_0 + y_1)

可以写成(如果 x 值相同):

QPointF(sampleVector.at(ii).at(0).x(), -0.5 * (sampleVector.at(ii).at(0).y() + sampleVector.at(ii).at(1).y()))
于 2017-01-12T15:34:00.160 回答