在gnuplot中的1D阵列上运行

时间:2013-10-03 19:42:44

标签: arrays gnuplot

如何做与此相当的事情:

In: A = [ 1 2 3 ]
In: B = 2 * A
In: B
Out: [ 2 4 6 ]

这种方法可以解决问题:

In: do for [i in "1 2 3"] { print 2*i }
Out:
2
4
6

但我想返回另一个可用于进一步操作的列表/数组。

1 个答案:

答案 0 :(得分:1)

正如您已经发现的那样,使用以空格分隔的单词是模拟数组的唯一方法。因此,您必须将输出再次格式化为一个字符串,其中单个条目由空格分隔:

out = ''
do for [i in "1 2 3"] { 
    out = out . sprintf('%d ', 2*i)
}

print sprintf('%d entries: %s', words(out), out)

打印

  

3个条目:2 4 6

如果使用花车,则必须使用例如'%f'格式化输出:

out = ''
do for [i in "1.1 2.2 3.3"] { 
    out = out . sprintf('%f ', 2*i)
}

print sprintf('%d entries: %s', words(out), out)

words计算字符串中的字数,您可以使用word从字符串中提取某个字词(从1开始):

print word(out, 2)
  

4