【发布时间】:2014-11-29 06:24:57
【问题描述】:
我有一个包含两列的文件,第一列包含纯实数,第二列包含 GNUPLOT 将接受的形式的复数,{a,b}(GNUPLOT 相当于 a + bi)。我想用第二列的绝对值绘制第一列,所以我尝试了这个:
plot 'data.dat' using 1:abs(2)
但是,这似乎不起作用。有谁知道我如何告诉 GNUPLOT 在绘制之前对 dat 文件中的数据执行操作?
【问题讨论】:
标签: gnuplot
我有一个包含两列的文件,第一列包含纯实数,第二列包含 GNUPLOT 将接受的形式的复数,{a,b}(GNUPLOT 相当于 a + bi)。我想用第二列的绝对值绘制第一列,所以我尝试了这个:
plot 'data.dat' using 1:abs(2)
但是,这似乎不起作用。有谁知道我如何告诉 GNUPLOT 在绘制之前对 dat 文件中的数据执行操作?
【问题讨论】:
标签: gnuplot
这样可以节省大量精力并将数据存储在三列中,其中第二列和第三列分别表示实部和虚部。
您可以通过以下方式实现您的目标:
plot "data" using 1:(sqrt($2**2+$3**2))
【讨论】:
复杂形式 {a,b} 只接受 a 和 b 的常量,要使用 abs 函数,您必须使用
plot 'data.dat' using 1:(abs($2+$3*{0,1}))
【讨论】:
默认情况下,它似乎只是将您的复数读取为字符串..试试这个:
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 }'
【讨论】: