arrays - 如何在 GNUplot 中定义和访问数组?

标签 arrays gnuplot

这是一个相当简单的问题,或者可能是太简单的问题。但是我已经尝试找到完成这些的方法,甚至在 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/

相关文章:

gnuplot - 我们如何设置刻度线的宽度?

c - 将数据值列表写入 .dat 文件以在 GNUplot 中绘制(在 C 中)

c - Arduino/C : Convert byte array to string or other comparable text format

Javascript::将回调后的 JSON 字符串转换为纯 JavaScript 数组

svg - 如何在 SVG 终端的 gnuplot 5+ 中将字体粗细设置为 "bold"?

gnuplot - 在 Gnuplot 的线图中显示特定值的标记

ubuntu - 使用 gnuplot 绘制进程树

jQuery 从属性值检索数组

python |给定每个索引的特定范围的数字,如何将主列表中的值分组到不同的列表中

java - 在 Java 中确定数组的长度(初学者)