这是一个相当简单的问题,或者可能是太简单的问题。但是我已经尝试找到完成这些的方法,甚至在 GNUplot 文档中也找不到。可能是我的错误或误解了 array
GNUplot 中的概念。我的问题是如何在 GNUplot 中定义和访问数组?
请提供简单的数组声明示例,通过循环分配数组的值。我认为这就足够了,我认为这对其他人也有用。
最佳答案
如果您使用 Gnuplot 5.1 或更高版本并且需要一维数组,您只需定义大小为 N 的数组,记住索引从 1 到 N:
gnuplot> array A[3] #Array definition
gnuplot> A[1]=2
gnuplot> A[3]=4
gnuplot> print A[1]
2
gnuplot> print A #Print the array, with empty A[2]
[2,,4]
如果您需要多个维度或使用以前版本的 Gnuplot,您可以执行以下操作:
由于以前版本的 Gnuplot 中没有向量变量,因此可以定义两个函数来获取和设置名称包含索引的幕后变量的值。功能是:
aGet(name, i) = value(sprintf("_%s_%i", name, i))
aSet(name, i, value) = sprintf("_%s_%i = %.16e", name, i, value)
要在数组 A 上分配和检索值,您执行
eval aSet("A",2,3)
print aGet("A",2)
这些函数的作用是访问一个名为 _A_2 的变量。
您可以构建类似的函数来处理矩阵:
mGet(name, i, j) = value(sprintf("_%s_%i_%i", name, i, j))
mSet(name, i, j, value) = sprintf("_%s_%i_%i = %.16e", name, i, j, value)
关于arrays - 如何在 GNUplot 中定义和访问数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30749160/