10/23/2006

最大值與最小值

最大值與最小值分別使用max()與min()兩函數即可求得,兩者之參數型式均相同。但其結果均是以行向比較,不是列向。例如:


>> a=magic(5)

a =

17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9

>> max(a)

ans =

23 24 25 21 22



若要使用列向表示,則必須在第三參數上標明,其第三參數即為ndim值,至於第二參數則為另一組比較的陣列,若僅求一個矩陣之列向最大或最小值,則第二參數以[ ]空矩陣取代即可,而令ndim=2,如:

>> max(a,[],2)

ans =

24
23
22
21
25

>> min(a)

ans =

4 5 1 2 3

>> min(a,[],2)

ans =

1
5
4
3
2

使用轉置指令亦可得到列向最小值,只是所得的為列向量,必須調整才能符合原先之需求:

>> min(a')

ans =

1 5 4 3 2


若是兩個相同大小之矩陣進行比較大小時,則可將第二矩陣置於第二參數位置,而ndim值同樣有效,只是其預設值為ndim=1:

>> B=[1:10]';
>> b=[10:-1:1]';
>> max(B,b)

ans =

10
9
8
7
6
6
7
8
9
10

在左邊的輸出參數第一項為行向或列向之最大或最小值,其第二項輸出則為其在該行向或列向之所在位置:

>> [m,I]=max(a)

m =

23 24 25 21 22


I =

2 1 5 4 3


不過,若兩矩陣作比較,求取陣列中之最大或最小值時,輸出項中不能有第二參數,因為各參數之同列或同行進行比較,均為已知。

沒有留言: