2

我有一个包含两列的文件,第一列包含纯实数,第二列包含 GNUPLOT 将接受的形式的复数,{a,b}(GNUPLOT 相当于 a + bi)。我想用第二列的绝对值绘制第一列,所以我尝试了这个:

plot 'data.dat' using 1:abs(2)

然而,这似乎不起作用。有谁知道我如何告诉 GNUPLOT 在绘制之前对 dat 文件中的数据执行操作?

4

3 回答 3

3

复杂的形式 {a,b} 只接受 a 和 b 的常量,要使用你必须使用的 abs 函数

plot 'data.dat' using 1:(abs($2+$3*{0,1}))
于 2014-11-28T22:24:57.317 回答
3

它将为您节省大量精力并将数据存储在三列中,其中第二列和第三列分别表示实部和虚部。

您可以通过以下方式实现您的目标:

plot "data" using 1:(sqrt($2**2+$3**2))
于 2013-05-29T09:27:58.723 回答
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 }'
于 2013-05-29T16:49:29.377 回答