You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Gnuplot如何从数组获取最小值?自定义函数与stats均失效求助

解决数组取最小值的问题

针对你在处理数组arr = [1, 2, 0, 2]取最小值时遇到的问题,这里提供几个可行的解决办法:

1. 修复自定义遍历函数

你之前写的f_mina函数无法正常运行,核心问题是没有累积每次比较后的最小值——每次循环只是单独比较相邻两个元素,没有把结果传递到下一次迭代。可以修改函数,初始化一个最小值变量,逐个遍历更新:

arr = [1, 2, 0, 2]
f_min(a,b) = (a < b) ? a : b

# 新增累积逻辑:先取第一个元素为初始最小值,再逐个比较更新
f_mina(arr, n) = (min_val = arr[1], do for [i=2:n] { min_val = f_min(min_val, arr[i]) }, min_val)

# 调用函数,|arr|可以直接获取数组长度
print f_mina(arr, |arr|)  # 输出:0

2. 使用内置数组函数(Gnuplot 5.2+)

如果你的Gnuplot版本在5.2及以上,可以直接用内置的array_min函数,无需自定义:

arr = [1, 2, 0, 2]
print array_min(arr)  # 输出:0

3. 直接用循环实现(无需自定义函数)

也可以跳过自定义函数,直接写循环逻辑,更直观:

arr = [1, 2, 0, 2]
min_val = arr[1]  # 初始化为第一个元素
do for [i=2:|arr|] {
    if (arr[i] < min_val) min_val = arr[i]
}
print min_val  # 输出:0

补充说明:你提到的stats命令确实主要用于处理数据文件中的列数据,并不支持直接对数组进行统计计算,所以用上述方法更合适。

内容的提问来源于stack exchange,提问作者atapaka

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 09:05:04