2011-04-06 127 views
3

一個有趣的(也可能是簡單的)你所有的問題,我有兩個數組,我需要確定實際最小值(即最接近零的值)和實際最大值(即離零最遠的值),而不管該值是否是積極的還是消極的。從MatLAB中的數組中獲得最接近零的值?

要做到這一點,我計算了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進行比較以查看哪一個距離零最遠。我似乎無法弄清楚如何做到這一點...

我將不勝感激任何幫助!

回答

8

你可以嘗試使用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 
+0

謝謝,使用您的解決方案與這些組合if語句給了我想要的結果...'如果((ABS(negative_max))> = positive_max) 最大= negative_max; %應該是-7 否則 max = positive_max; ((abs(negative_min))<= positive_min) end 如果((abs(negative_min))<= positive_min) min = negative_min; %應該是-2 否則 min = positive_min; 結束' – Sammio2 2011-04-06 16:23:19

+0

我沒有顯示計算出最接近於零(-2)的值和距離零(-7)最遠的值,這就是我所理解的問題所在:「我需要確定實際最小值(即值最接近於零)以及實際最大值(即距離零最遠的值),而不管該值是正值還是負值。' – 2011-04-06 16:25:37

+2

順便提一句,在評論中創建名爲'min'和'max'的變量是一個壞主意,因爲這些將與內置的MATLAB函數相沖突。 – 2011-04-06 16:27:42

0

Matlab的已經花費最大)對複數的絕對值(或MIN() 。 所以另一種快速的方法來做到這將是min(test+1i)-1imax(test+1i)-1i