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

Sam*_*io2 3 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
Run Code Online (Sandbox Code Playgroud)

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

我将不胜感激任何帮助!

Bil*_*ham 9

您可以尝试使用该abs功能

min(abs(test))
Run Code Online (Sandbox Code Playgroud)

2

max(abs(test))
Run Code Online (Sandbox Code Playgroud)

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

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

ans =

    -2


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

ans =

    -7
Run Code Online (Sandbox Code Playgroud)

  • 顺便说一下,在注释中创建名为`min`和`max`的变量是个坏主意,因为这些变量会与内置的MATLAB函数冲突. (2认同)