Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在gnuplot中绘制同一数据文件中两个不同列的当前记录和以前记录之间的差异_Gnuplot_Rows_Multiple Columns_Difference - Fatal编程技术网

如何在gnuplot中绘制同一数据文件中两个不同列的当前记录和以前记录之间的差异

如何在gnuplot中绘制同一数据文件中两个不同列的当前记录和以前记录之间的差异,gnuplot,rows,multiple-columns,difference,Gnuplot,Rows,Multiple Columns,Difference,我在一个文本文件中有3列数据。第一列是时间。第二列和第三列是我的变量参数。我的目的是绘制第3列数据的当前值和第2列数据的前一个值与第1列当前值之间的差值。这有点棘手,因为gnuplot通常只能访问当前行的值。但是,您可以使用语句在中巧妙地保留有限数量的先前值 不幸的是,您没有给出任何示例数据,因此这里是我的测试数据文件test.dat(没有时间,您需要自己调整): 以下脚本绘制第3列中的当前值与第2列中的上一个值之间的差值: back2 = back1 = 0 shift(x) = (back2

我在一个文本文件中有3列数据。第一列是时间。第二列和第三列是我的变量参数。我的目的是绘制第3列数据的当前值和第2列数据的前一个值与第1列当前值之间的差值。

这有点棘手,因为gnuplot通常只能访问当前行的值。但是,您可以使用语句在
中巧妙地保留有限数量的先前值

不幸的是,您没有给出任何示例数据,因此这里是我的测试数据文件
test.dat
(没有时间,您需要自己调整):

以下脚本绘制第3列中的当前值与第2列中的上一个值之间的差值:

back2 = back1 = 0
shift(x) = (back2 = back1, back1 = x)
plot 'test.dat' using 0:(shift($2), $0 < 1 ? 1/0 : $3 - back2) w lp pt 7 ps 2
back2=back1=0
移位(x)=(后退2=后退1,后退1=x)
使用0:(移位($2),$0<1-1/0:$3-back2)w lp pt 7 ps 2绘制“test.dat”
这里发生的基本情况如下:

语句中,可以使用
语句分隔多个语句,例如使用逗号分隔赋值。只有一列中的最后一个表达式用作实际数据值

第二列的
shift
函数首先将前一行的值分配给变量
back2
,然后将当前值分配给变量
back1
。因此,调用
shift($2)
将前一行第2列中的值保存到变量
back2
。然后,您可以按
$3-back2
进行实际计算。条件
$0<1
将丢弃没有先前值的第一行

结果是:


请更新您的问题,以显示您的数据样本。
back2 = back1 = 0
shift(x) = (back2 = back1, back1 = x)
plot 'test.dat' using 0:(shift($2), $0 < 1 ? 1/0 : $3 - back2) w lp pt 7 ps 2