我是gnuplot的新手,并且只学习了开始绘图的基础知识。我正在编写一个执行DSP的C程序,需要实时绘制结果。另外,我已经按照以下方式设置我的程序,以结合gnuplot中的情节' - '功能。父进程将不断执行DSP计算,并使用管道实时将结果发送给子进程。孩子将收到来自父母的信号,醒来,并通过烟斗将结果发送到gnuplot。
基本上,数据路径如下:
父母(计算) - >管道 - >孩子(等待来自父母的输入) - >管道 - > gnuplot(绘图)
例如,在孩子中,包含在条件等待中
getline(&lineBuffer, lineSize, stdin);
printf("%s", lineBuffer);
fflush(stdout);
其中lineBuffer
可以是任意char*
,将数据从父级重定向到gnuplot。我拥有绘图所需的所有数据,并且可以采用任何格式进行格式化。然而,在尝试以下后,没有成功。
如果尚未定义外观和标签,
set terminal x11 persist noraise
set xlabel "Frequency"
set ylabel "Decibel"
set xrange [0:2000]
set yrange [-100:100]
set style data lines
启动初始绘图命令,
plot '-' using 1:2 smooth unique
开始发送数据,每个点都是一个新行,我将数据格式化为
Frequency Decibel
在特定时间,例如
1000 -30.00
1001 -31.00
....
通过发送结束数据
e\n
然后我重新开始发送数据的过程,并以
结束replot
这看起来是对的吗?另一方面,我也有兴趣绘制特定频率的时间序列,经过大量搜索后,显然我需要一个缓冲区或临时文件才能完成此任务,这也是正确的吗?