gnuplot:从不同的行/列中获取变量值以进行计算

时间:2015-10-01 15:38:43

标签: gnuplot

我想从另一行获取特定值&用于规范化我的数据的列。棘手的部分是,我的数据集中的每个数据点的值都会发生变化。

这是我的数据集:

64  22370   1   585 1   10
128 47547   1   4681    1   10
256 291761  1   37449   1   10
128 48446   1.019   4681    1   10
256 480937  1.648   37449   1   10
128 7765    0.163   777 0.166   10
256 7164    0.025   1393    0.037   10
128 37078   0.780   4681    1   10
256 334372  1.146   37449   1   10
128 45543   0.958   4681    1   10
128 5579    0.117   649 0.139   10
128 40121   0.844   4529    0.968   10
128 49494   1.041   4681    1   10
# --> here it starts to repeat
64  48788   1   585 1   20
128 110860  1   4681    1   20
256 717797  1   37449   1   20
128 101666  0.917   4681    1   20
......
......

此数据文件包含总共13个不同集合的所有点,因此我使用以下内容绘制它:

plot\
'../logs.dat' every 13::1 u 6:2 title '' with lines lt 3 lc 'black' lw 1,\
'../logs.dat' every 13::3 u 6:2 title '' with lines lt 3 lc 'black' lw 1,\

现在我尝试规范化我的数据。有趣的值分别是第1行第2列(开始计数为0)$ 1:$ 2然后为每个数据点的行添加13

例如:我要绘制的第一个数据集是

(10:47547/47547)
(20:110860/110860)
...

第二个图应该是

(10:48446/47547)
(20:101666/110860)
...

等等。 在伪代码中,我会读到类似

的内容
plot\
'../logs.dat' every 13::1 u 6:($2 / take i:$2 for i = i + 13 ) title '' with lines lt 3 lc 'black' lw 1,\
'../logs.dat' every 13::3 u 6:($2 / take i:$2 for i = i + 13 ) title '' with lines lt 3 lc 'black' lw 1,\

我希望我能说明我尝试存档的内容。 谢谢你的帮助!

1 个答案:

答案 0 :(得分:1)

如果您要用于规范化的值是第一个被绘制的值,那么这样的事情是可能的:

plot y0=-1e10, "data" using 1:(y0 == -1e10 ? (y0 = $2, 1) : $2/y0)

在每个重绘时,归一化值y0初始化为-1e10。查看ternary operatorserial evaluation的帮助。

但实际上,您最好预处理数据。