我有一个包含两列的文件,第一列包含纯实数,第二列包含 GNUPLOT 将接受的形式的复数,{a,b}(GNUPLOT 相当于 a + bi)。我想用第二列的绝对值绘制第一列,所以我尝试了这个:
plot 'data.dat' using 1:abs(2)
然而,这似乎不起作用。有谁知道我如何告诉 GNUPLOT 在绘制之前对 dat 文件中的数据执行操作?
我有一个包含两列的文件,第一列包含纯实数,第二列包含 GNUPLOT 将接受的形式的复数,{a,b}(GNUPLOT 相当于 a + bi)。我想用第二列的绝对值绘制第一列,所以我尝试了这个:
plot 'data.dat' using 1:abs(2)
然而,这似乎不起作用。有谁知道我如何告诉 GNUPLOT 在绘制之前对 dat 文件中的数据执行操作?
复杂的形式 {a,b} 只接受 a 和 b 的常量,要使用你必须使用的 abs 函数
plot 'data.dat' using 1:(abs($2+$3*{0,1}))
它将为您节省大量精力并将数据存储在三列中,其中第二列和第三列分别表示实部和虚部。
您可以通过以下方式实现您的目标:
plot "data" using 1:(sqrt($2**2+$3**2))
默认情况下,它似乎只是将您的复数读取为字符串..试试这个:
plot 'data.dat' using 1:(sqrt($2**2+$3**2)) '%lf { %lf , %lf }'
但是,我想不出一种使用内置 abs 的方法..由于某种原因,这不起作用:
plot 'data.dat' using 1:(abs({$2,$3})) '%lf { %lf , %lf }'