9/27/2006

2.8 尋找特殊元素

要在矩陣中尋找元素中之最大值、最小值及其平均值,可分別使用max、min、mean、sum等四函數。在這些函數因應用於二維與一維而功能上有些不同。以一矩陣AA=[-5 -4 3; 3 -3 1; 6 3 1] 為例,其對應值可計算如下:


>>AA =
-5 -4 3
3 -3 1
6 3 1

>>ax_aa=max(AA)

ax_aa =
6 3 3

兩相對照之下,所得之最大值是針對AA所含之行向量取得最大值,故其結果為一列矩陣。若左邊給兩項參數,則:

>>[vmax, va]=max(AA)
vmax =
6 3 3
va =
3 3 1

va所顯示的數值顯然是指該行之最大值發生在那一列。若要求得整個矩陣之最大值,則可就vmax之列向量再作一次極大值求證,或者對原矩陣AA連續施用max函數:

>>max(vmax)
ans = 6



>>max(max(AA))
ans = 6

兩者結果一致。不過亦可利用下式指令直接求得:

>>max(AA(:))
ans = 6

為何如此?請讀者自行印證。

極小值函數min之應用與max函數完全一樣,讀者也不妨按上述的過程自行測試。

要求得一陣列之平均值或總和函數分別為mean與sum兩函數。仍以上述之矩陣AA為例:

>>AVG=mean(AA)
AVG =
1.3333 -1.3333 1.6667

>>TOT=sum(AA)

TOT = 4 -4 5

上面介紹的四種函數中,基本之運算方式是一致的,其處理過程均先以矩陣之行方向演算。實際上若矩陣AA本身即屬行向量或列向量,其運算結果即為所需之答案。這也為什麼我們若先把AA矩陣變為AA(:),使其成為行向量矩陣,即可求出整體之最大值。實際上,上述這些函數也可以列方向作處理,其方式是在輸入參數另加一項,設為dim,其型式為max(AA,dim)。當dim設為2時,表示以列方向操作,其結果為行矩陣;當dim設為1時則表示行向操作,即為預設值。這一部份讀者可以自行實驗。

2 則留言:

Ching 吳子青 提到...

在max(min)的用法裡
max(AA,x)表示在AA的每一元素AA(i,j)和x一起作判斷 取每一位置的最大值
例:
AA =

-5 -4 3
3 -3 1
6 3 1

max(AA,2)=

2 2 3
3 2 2
6 3 2

可以看到如果AA(i,j)本身比2小 就會被2取代 ... min也是相同的用法

結論:
mean(AA,2)和max(AA,2) 在後面加上的參數意義並不相同

ncbee 提到...

AA =
-5 -4 3
3 -3 1
6 3 1

max(max(AA))
ans = 6

而max(AA(:))也等於6
是因為AA(:)把AA變成一行
-5 -4 3
3 -3 1
6 3 1
變成
-5
3
6
-4
-3
3
3
1
1
所以max(AA(:))會為6

張貼留言