Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
gnuplot能否计算并绘制连续数据点之间的增量_Gnuplot - Fatal编程技术网

gnuplot能否计算并绘制连续数据点之间的增量

gnuplot能否计算并绘制连续数据点之间的增量,gnuplot,Gnuplot,例如,给定以下数据文件(本例中为x^2): gnuplot是否可以绘制点以及点之间的差异,就好像它是: 0 0 1 1 # ( 1 - 0 = 1) 4 3 # ( 4 - 1 = 3) 9 5 # ( 9 - 4 = 5) 16 7 # (16 - 9 = 7) 25 9 # (25 -16 = 9) 实际文件不仅仅是我感兴趣的列,如果可能的话,我希望避免为了添加增量而进行预处理。使用awk怎么样 plot "< awk '{print $1,$1-prev; prev

例如,给定以下数据文件(本例中为x^2):

gnuplot是否可以绘制点以及点之间的差异,就好像它是:

0 0
1 1   # ( 1 - 0 = 1)
4 3   # ( 4 - 1 = 3)
9 5   # ( 9 - 4 = 5)
16 7  # (16 - 9 = 7)
25 9  # (25 -16 = 9)
实际文件不仅仅是我感兴趣的列,如果可能的话,我希望避免为了添加增量而进行预处理。

使用awk怎么样

plot "< awk '{print $1,$1-prev; prev=$1}' <datafilename>"
plot“
以下是无需预处理即可完成此操作的方法:

gnuplot的脚本:

# runtime_delta.dem script
# run with 
#     gnuplot> load 'runtime_delta.dem'
#
reset

delta_v(x) = ( vD = x - old_v, old_v = x, vD)
old_v = NaN

set title "Compute Deltas"
set style data lines

plot 'runtime_delta.dat' using 0:(column('Data')), '' using 0:(delta_v(column('Data'))) title 'Delta' 
示例数据文件“runtime_delta.dat”:

Data
0
1
4
9
16
25
对我来说不起作用,但这是有效的,并且纯粹是gnuplot(不叫awk):

名为“data.dat”的示例数据文件:

0
1
4
9
16
25

下面是使用Gnuplot 5.1中的数组的版本。使用数组允许在单个Gnuplot实例中计算多个差异

array Z[128]
do for [i=1:128] { Z[i] = NaN }
diff(i, x) = (y = x - Z[i], Z[i] = x, y)
i
是每次使用都需要增加的实例索引。比如说

plot "file1.csv" using 1:(diff(1,$2)) using line, \
     "file2.csv" using 1:(diff(2,$2)) using line
array Z[128]
do for [i=1:128] { Z[i] = NaN }
diff(i, x) = (y = x - Z[i], Z[i] = x, y)
plot "file1.csv" using 1:(diff(1,$2)) using line, \
     "file2.csv" using 1:(diff(2,$2)) using line