Gnuplot:如何从矢量场中删除一定幅度以下的矢量?

时间:2013-03-20 23:21:21

标签: vector field gnuplot

我有一个2D CFD代码,它给出了网格上每个点的x和y流速。我目前正在使用gnuplot中的矢量字段可视化数据。我的目标是看看火山喷发的羽流延伸到多远,所以如果它能够防止向量在场地中出现,如果它们低于一定幅度,它会更加清洁。有没有人知道如何去做?我目前的gnuplot脚本如下。我也可以根据需要修改输入文件。

reset
set nokey
set term png
set xrange [0:5.1]
set yrange [0:10.1]
do for [i=0:10] {
    set title 'Eruption simulation: Timestep '.i
    set output 'path/FlowVel'.sprintf('%04.0f',i).'.png'
    plot 'path/Flow'.sprintf('%04.0f',i).'.dat' using 1:2:3:4 with vec
}

1 个答案:

答案 0 :(得分:0)

我想你想要一种过滤,gnuplot并不真正拥有,但可以通过以下技巧实现(取自gnuplot中的“​​帮助使用示例”):

 One trick is to use the ternary `?:` operator to filter data:

       plot 'file' using 1:($3>10 ? $2 : 1/0)

 which plots the datum in column two against that in column one provided
 the datum in column three exceeds ten.  `1/0` is undefined; `gnuplot`
 quietly ignores undefined points, so unsuitable points are suppressed.
 Or you can use the pre-defined variable NaN to achieve the same result.

所以我想你会想要这样的事情

plot "data.dat" u 1:2:($3**2+$4**2>mag_sq?$3:NaN):($3**2+$4**2>mag_sq?$4:NaN) w vector

其中mag_sq是您所需幅度的平方。