比方说,我的数据文件有两列,五行如下,
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)。我怎么能这样做?非常感谢!
答案 0 :(得分:1)
通常,只能访问当前行的所有列的值。可以访问前一行的值,但很棘手。基本上,您必须将值保存在临时变量中。
以下列方式运作:
在第一行中,保存两列的值,不要绘制它们(使用NaN
作为值)。
在第二行中,保存当前的x值,使用前一行的x值。然后保存当前的y值,并根据前一行(prevY
)和当前行(currY
)计算您的值。
这不会绘制最后一行。但无论如何,这还不是下一行。如果你想要它也绘制最后一行,例如0
作为附加值,您必须使用0 0
添加最后一行。
在脚本中,我使用set macros
来提高代码的可读性:
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))