我想计算一个事件的出现次数(例如,x数据值等于某个数字)并按顺序存储这些事件,同时在gnuplot中绘制文件。说我有以下文件:
1
0
0
0
1
1
0
现在我想计算一下1
的次数并将该数字存储在变量N
中。然后我想知道发生的位置并将该信息存储在数组pos
中,所有这些都在绘制文件时。对于上面的例子,结果应该是:
print N
3
print pos
1 5 6
我知道如何实现计数:
N = 0
plot "data" u ($0):($1 == 1 ? (N = N+1, $1) : $1)
print N
3
然后为了实现位置记录,它将是这样的示意图:
N = 0 ; pos = ""
plot "data" u ($0):($1 == 1 ? (N = N+1, pos = pos." ".$0, $1) : $1) # This doesn't work!
print N
3
print pos
1 5 6
如何在不使用外部bash命令的情况下在gnuplot 中完成此操作?
答案 0 :(得分:1)
好吧,因为有时候写下这个问题会触发一个回答的想法。如果有人发现它有用,我会把它留在这里:
N=0 ; pos=""
plot "data" u ($0):($1 == 1 ? (N = N+1, pos = sprintf("%s %g", pos, $0+1), $1) : $1)
print N
3
print pos
1 5 6
注意我必须使用$0+1
,因为位置1被gnuplot视为零。