在gnuplot中绘制时创建和修改任意长度的数组

时间:2014-08-04 16:45:24

标签: gnuplot

我想计算一个事件的出现次数(例如,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 中完成此操作

1 个答案:

答案 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视为零。