使用Qt

时间:2017-01-12 12:27:21

标签: qt plot qt4 qt5 qvector

在线使用信息源我已设法生成4个传感器值随时间变化的曲线图,但是我想使用传感器中的值来绘制实时曲线图,使用前面绘图中的值绘制第5个曲线。变量sampleVector是一个2D数组,包含随时间变化的感应值(Y变量)(X变量)

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

以下是我尝试实现这一目标,但它无效。第五个情节似乎绘制的速度是它增加两倍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)
   }

}

1 个答案:

答案 0 :(得分: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()))