如何用c++;实时数据? 我试图用C++实时可视化传感器数据。传感器的输出高达1kHz,但gnuplot仅在10Hz左右绘制数据 我使用GnUpTror IoStand()将数据从我的C++脚本中导入GNUTRAP,这是简单和容易的。但绘图过程似乎很慢,更新绘图需要十分之一秒。有没有办法增加这个频率

如何用c++;实时数据? 我试图用C++实时可视化传感器数据。传感器的输出高达1kHz,但gnuplot仅在10Hz左右绘制数据 我使用GnUpTror IoStand()将数据从我的C++脚本中导入GNUTRAP,这是简单和容易的。但绘图过程似乎很慢,更新绘图需要十分之一秒。有没有办法增加这个频率,c++,gnuplot,real-time,iostream,C++,Gnuplot,Real Time,Iostream,编辑: 下面是一个简单代码的示例 #include <vector> #include <utility> #include <gnuplot-iostream/gnuplot-iostream.h> typedef std::pair<double, double> Point; int main() { std::vector<Point> data; double x = 0.0; double y = 0.0;

编辑: 下面是一个简单代码的示例

#include <vector>
#include <utility>
#include <gnuplot-iostream/gnuplot-iostream.h>

typedef std::pair<double, double> Point;

int main() {
  std::vector<Point> data;

  double x = 0.0;
  double y = 0.0;
  double c = 0.0;

  Gnuplot gp;
  gp << "set terminal wxt size 800, 400\n";

  while (x < 10000) {
    x += 0.01;
    y = sin(x);
    c += 0.01;
    data.push_back(Point(x,y));
    //std::cout <<  x << std::endl;
    if (c > 0.1) {
      gp << "plot '-' with lines title 'sin(x)'\n";
      gp.send1d(data);
      c = 0.0;
    }
  }

  return 0;
}
#包括
#包括
#包括
typedef std::对点;
int main(){
std::矢量数据;
双x=0.0;
双y=0.0;
双c=0.0;
gnuplotgp;

gp如果传感器以1 kHz采样率输出数据,这绝对不意味着你应该以该频率绘制数据。这太疯狂了!如果你的眼睛不能以该频率看到数据,那么以该频率绘制数据有什么意义

你应该像每0.1秒一样对要绘制的点进行分组,然后将它们与所有数据一起绘制。要清楚:

  • 收集一些数据,将其放入要绘制的数组中
  • 绘制阵列的数据
  • 在0.1秒内收集更多数据(或0.2或0.5,或可能每100个样本收集一次数据;这是您的决定)
  • 将其添加到要打印的数据数组中
  • 可选:如果阵列太大,则从前面修剪数据
  • 绘制数据
  • 回到3

  • 如果传感器以1 kHz的采样率输出数据,这绝对不意味着你应该以该频率绘制数据。这太疯狂了!如果你的眼睛不能以该频率看到数据,那么以该频率绘制数据有什么意义

    你应该像每0.1秒一样对要绘制的点进行分组,然后将它们与所有数据一起绘制。要清楚:

  • 收集一些数据,将其放入要绘制的数组中
  • 绘制阵列的数据
  • 在0.1秒内收集更多数据(或0.2或0.5,或可能每100个样本收集一次数据;这是您的决定)
  • 将其添加到要打印的数据数组中
  • 可选:如果阵列太大,则从前面修剪数据
  • 绘制数据
  • 回到3

  • 你能看到1kHz的更新吗?也许设定一个较低的目标?你每次都会重新生成整个数据集文件吗?让我们看一看!我不需要1kHz的更新,但也许100Hz就足够了。终端是wxt(在Linux中,我忘了提到)。数据存储在boost:tuple中,x和y值是双倍的,存储在一个向量中。该向量不断附加新的数据点,然后发送到gnuplot。你看电视的速度约为每秒25帧。仍然希望看到a,因为这是一个要求。可能是代码中的速度变慢。你如何将数据发送到gnuplot是相关的。你认为呢能看到1kHz的更新吗?也许设定一个较低的目标?你每次都要重新生成整个数据集文件吗?让我们看一看!我不需要1kHz的更新,但也许100Hz就足够了。终端是wxt(在Linux中,我忘了提到)。数据存储在boost:tuple中,x和y值是双倍的,存储在一个向量中。该向量不断附加新的数据点,然后发送到gnuplot。您以每秒25帧的速度观看电视。仍然希望看到a,因为这是一个要求。可能代码中的速度变慢了。如何将数据发送到gnuplot是相关的。啊哈I u现在可以理解了。我现在已经将数据收集到一个数组中,每当它完成绘图时都会被发送到gnuplot。我现在可以看到我所有的数据点,但“帧率”现在变慢了,大约1-5赫兹,随着更多点的增加,速度也变慢了。30秒后,我有30000个数据点,这对gnuplot来说是不是太难有效处理了,还是?@OveBaardsgaard,这就是第5步存在的原因。啊哈,我现在明白了。我现在已经将数据收集到一个数组中,在每次完成绘图时发送给gnuplot。我开始现在可以看到我所有的数据点了,但是“帧速率”现在变慢了,大约1-5赫兹,并且随着更多的点的增加它会变慢。30秒后我有30000个数据点,这是gnuplot无法有效处理的吗?还是@OveBaardsgaard这就是第5步存在的原因。