0

我对 gnuplot 完全陌生,只学习了开始绘图的基础知识。我正在编写一个执行 DSP 并需要实时绘制结果的 C 程序。此外,我以以下方式设置了我的程序,以结合 gnuplot 中的 plot '-' 功能。父进程会不断地进行DSP计算,并通过管道将结果实时发送给子进程。孩子将收到来自父母的信号,唤醒,并通过管道将结果发送到 gnuplot。

基本上,数据的路径是这样的:

父(计算)-> 管道-> 子(等待父输入)-> 管道-> gnuplot(绘图)

例如,在 child 中,包含在有条件的等待中

getline(&lineBuffer, lineSize, stdin);
printf("%s", lineBuffer);
fflush(stdout);

wherelineBuffer可以是任意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

这看起来对吗?另一方面,我也有兴趣绘制特定频率的时间序列,经过多次搜索,显然我需要一个缓冲区或一个临时文件来完成这个,这也正确吗?

4

0 回答 0