从gnuplot的不同行中获取特定元素的值

问题描述:

使用gnuplot 4.2,是否可以获取特定列/行的值并以某种方式使用该值?从gnuplot的不同行中获取特定元素的值

例如,假设我的数据文件包含以下

#1 2 
7 13 
5 11 
23 17 
53 12 

对于一个简单的图,其中列1为X轴和列2是Y轴我想: -

plot 'datafile' using 1:2 

我想要做的是通过该列中的第一个元素(13)规范化第2列中的所有数据。有没有办法在gnuplot本身做到这一点(即,不采用脚本语言或其他方法来预先处理数据)?

干杯

广告新列满13,然后使用:

情节 '数据文件' 使用1:($ 2/$ 3)

如果你的基本值(如13)是在你的数据集的第一行,你应该能够使用gnuplot的CVS版本来做你想做的。

看看running averages demo。沿着这些路线,您可以编写一个自定义函数,该函数在第一次调用时将基本值存储在自定义变量中,并在随后的调用中返回该变量。

(由于该演示是上市仅CVS版本,我认为所需要的功能在当前发行版本。)

使用移动平均DEMO,我成功地实现标准化的一个阴谋第二列的第一个值。

base变量用于存储参考值,而first函数在第一行初始化base

first(x) = ($0 > 0 ? base : base = x) 
plot file.dat u 1:(first($2), base/$2) 

应该指出,这不是使用gnuplot 4.2完成的。

编辑:更新使用克里斯托夫的建议。

+1

不错,+1。更普遍的是,可以检查行号是否为0来设置“base”值:first(x)=($ 0> 0?base:base = x)`。 – Christoph 2015-02-06 08:03:45