如何在gnuplot中对行进行数学运算
比如说,我的数据文件有两列五行,如下所示如何在gnuplot中对行进行数学运算,gnuplot,Gnuplot,比如说,我的数据文件有两列五行,如下所示 1 3 2 5 3 3 4 4 5 2 现在我想画出它们,但在第二列上有一点数学运算。比如说, plot 'test.dat' u 1:($2*) 我所说的星号是指我想在第二列值上使用sqrt(row2^2+row1^2),也就是sqrt(5^2+3^2)。我怎么能做到?非常感谢 通常,只能访问当前行所有列的值。访问前一行的值是可能的,但需要技巧。基本上,必须将值保存在临时变量中 其工作原理如下: 在第一行中,保存两列的值,不要打
1 3
2 5
3 3
4 4
5 2
现在我想画出它们,但在第二列上有一点数学运算。比如说,
plot 'test.dat' u 1:($2*)
我所说的星号是指我想在第二列值上使用sqrt(row2^2+row1^2),也就是sqrt(5^2+3^2)。我怎么能做到?非常感谢 通常,只能访问当前行所有列的值。访问前一行的值是可能的,但需要技巧。基本上,必须将值保存在临时变量中 其工作原理如下:
NaN
作为值)prevY
)和当前行(currY
)计算您的值0
作为附加值)也打印出来,则必须添加最后一行(例如,0
)
在脚本中,我使用set宏
,以提高代码的可读性:
set macros
prevX = currX = prevY = currY = 0
UsePreviousXvalue = '(($0 == 0) ? (prevX = NaN, currX = $1) : (prevX = currX, currX = $1)), prevX'
AssignYvalue = '(prevY = currY, currY = $2)'
plot 'test.dat' using (@UsePreviousXvalue):(@AssignYvalue, sqrt(prevY**2 + currY**2))
嗯?你到底期望得到什么样的结果图?只是这一行和前一行的总和,或者是不同的东西?Y_old=0;使用1:(temp=$2-y_old,y_old=$2,temp)绘制'datafilename',我也得到了上面的建议,但不起作用。张贴在这里,以防你可以纠正它。谢谢你自己的回答@christophy,这对我也很有用(注意,你必须有
y\u old=0
,带小y!)。但它使用的是当前值的x值,而不是旧值的x值。再次感谢@Christoph