Gnuplot - 数组中的最小值

问题描述 投票:0回答:2

如何从数组中获取最小值:

arr = [ 1, 2, 0, 2]

我在想

f_min(a,b) = (a < b) ? a : b
f_mina(arr,n) = do for [ i = 1:n-1] { f_min(arr(i,i+1)) }

但是第二个定义不起作用。我也试过

stats
但它也不适用于数组。

gnuplot
2个回答
0
投票

要从 Gnuplot 中的数组中获取最小值,可以结合使用

stats
命令和
using
关键字。

例子:

arr = [ 1, 2, 0, 2]
stats arr using 1 nooutput
print STATS_min

这将输出

0
,这是数组中的最小值。
using 1
告诉
stats
使用数据的第一列(在这种情况下是唯一的列),
nooutput
告诉它不要输出任何其他统计信息。

如果你更喜欢使用自定义函数,你可以像这样修改你的

f_mina
函数:

f_min(a,b) = (a < b) ? a : b
f_mina(arr,n) = (n > 1) ? f_min(arr[n], f_mina(arr, n-1)) : arr[1]

arr = [ 1, 2, 0, 2]
print f_mina(arr, |arr|)

这也会输出

0
,这是数组中的最小值。

|arr|
表达式计算数组的长度,
f_mina
函数递归地对数组的每个元素应用
f_min
函数来寻找最小值。


0
投票
gnuplot> show version
        G N U P L O T
        Version 5.4 patchlevel 1    last modified 2020-12-01 

        Copyright (C) 1986-1993, 1998, 2004, 2007-2020
        Thomas Williams, Colin Kelley and many others

        gnuplot home:     http://www.gnuplot.info
        faq, bugs, etc:   type "help FAQ"
        immediate help:   type "help"  (plot window: hit 'h')

gnuplot> array arr = [ 1, 2, 0, 2]
gnuplot> stats arr using 2  nooutput
gnuplot> print STATS_min
0.0

用于绘图和统计目的的数组“列”被解释为

column(1) = index
column(2) = Array[index]   (real part)
column(3) = Array[index]   (imaginary part, if any)

所以你想要第 2 列的最小值。

© www.soinside.com 2019 - 2024. All rights reserved.