9/27/2006

2.4二維矩陣與陣列

二維矩陣是MATLAB最常用的型式,其應用也符合數學運算的原則。但是,在MATLAB中也獨自創出其特有的運算法,使矩陣的運算更為靈活。矩陣的大小通常列數乘行數表示,如[2x3]即為二列三行之矩陣,以A為例:


>>A=[1 2 3;4 5 6]
A =
1 2 3
4 5 6

上述變數A可利用鍵盤輸入矩陣,但要記得利用分號隔出另一列,各列中之元素則仍以空格或分號區隔,其方式與前面所述之行、列向量之使用相同。上面所得之矩陣A是為2x3的矩陣。在MATLAB中也有一個指令size可以檢查其大小,例如:

>>m=size(A)
m =
2 3

這時候m本身也是一個列矩陣,其第一元素2代表二列,第二元素3代表三行。

矩陣與矩陣之間,可以作線性代數之運算。以M=magic(4)為例:

>>M=magic(4)
M=
16 3 2 13
5 10 11 8
9 6 7 12
4 15 14 1

將M作移置後,再相加,得:

>>M+M'
ans =
32 8 11 17
8 20 17 23
11 17 14 26
17 23 26 2


兩矩陣亦可相乘,可以產生另一矩陣:

>>M'*M
ans =
378 212 206 360
212 370 368 206
206 368 370 212
360 206 212 378

矩陣M之判定式為零,可以利用以下指令計算:

>>m=det(M)
m=
0

陣列(array)為矩陣之特殊型式,其外觀型式與矩陣相同,只是陣列之意義在於元素與元素間的一對一的關係,故常以行矩陣為主。陣列之操作,除加法與減法與矩陣相同外,其餘乘、除、倒除、次方、移置等均需在其對應符號(*、/、\、^、')之前加點(.)號,以表示是元素與元素間一對一的操作。例如,前面之M矩陣,以陣列相乘考慮時為:

>>M.*M
ans =
256 9 4 169
25 100 121 64
81 36 49 144
16 225 196 1


如何建立一般表格


利用陣列之觀念,亦可創造不同意義之矩陣,或以矩陣型式表示之對照表格,這可以將不同行矩陣以中括號組合而成之新矩陣表示之,例如:

>> m=(0:9)';
>> table=[m m.^2 2.^n]
??? Undefined function or variable 'n'.

>> table=[m m.^2 2.^m]
table =
0 0 1
1 1 2
2 4 4
3 9 8
4 16 16
5 25 32
6 36 64
7 49 128
8 64 256
9 81 512

同理,亦可作一個以10為底的對數函數表:

>> format short g
>> x = (1:0.1:2)';
>> logs = [x log10(x)]
logs =
1 0
1.1 0.041393
1.2 0.079181
1.3 0.11394
1.4 0.14613
1.5 0.17609
1.6 0.20412
1.7 0.23045
1.8 0.25527
1.9 0.27875
2 0.30103