我想从另一行获取特定值&用于规范化我的数据的列。棘手的部分是,我的数据集中的每个数据点的值都会发生变化。
这是我的数据集:
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,\
我希望我能说明我尝试存档的内容。 谢谢你的帮助!
答案 0 :(得分:1)
如果您要用于规范化的值是第一个被绘制的值,那么这样的事情是可能的:
plot y0=-1e10, "data" using 1:(y0 == -1e10 ? (y0 = $2, 1) : $2/y0)
在每个重绘时,归一化值y0初始化为-1e10。查看ternary operator
和serial evaluation
的帮助。
但实际上,您最好预处理数据。