在MatLAB中从数组中获得最接近零的值?

时间:2011-04-06 16:15:12

标签: sorting matlab logic

一个有趣的(也可能是简单的)问题,我有两个数组,我需要确定真正的最小值(即最接近零的值)和真实的最大值(即最远的零值),无论是否价值是正面的还是负面的。

为此,我计算了positive_max和positive_min,以及negative_max和negative_min,如下所示......

test = [3, 4, -2, -7, 6];

positive_min = min(test(test>=0)); %Should be 3
positive_max = max(test(test>=0)); %Should be 6

negative_max = min(test(test<=0)); %Should be -7
negative_min = max(test(test<=0)); %Should be -2

麻烦的是,我现在需要将positive_min与negative_min进行比较以查看哪个最接近零,以及将positive_max与negative_max进行比较以查看哪个距离零最远。我似乎无法弄清楚如何做到这一点......

我将不胜感激任何帮助!

2 个答案:

答案 0 :(得分:9)

您可以尝试使用abs功能

min(abs(test))

给出2

max(abs(test))

给出7。如果要查找其中每个值的实际签名值,可以使用minmax中的第二个输出选项:

[~, inx] = min(abs(test));
test(inx)

ans =

    -2


[~, inx] = max(abs(test));
test(inx)

ans =

    -7

答案 1 :(得分:0)

Matlab已经获取了复数的max()或min()的绝对值。 因此,另一种快速方法是min(test+1i)-1imax(test+1i)-1i