MATLAB的矩陣運算與重構
陣列運算與矩陣運算
在MATLAB中,術語矩陣和陣列在一般情況下是沒有區別的。嚴格地說,一個矩陣就是一個二維的陣列,是用來進行線性代數運算的。MATLAB運用於矩陣上的數學運算子是以線性代數中的矩陣運演算法則來進行計算的,而陣列運算是基於兩個矩陣對應元素之間的,所以在MATLAB中,陣列運算和矩陣運算是有區別的。
為了更清晰地表述陣列運算和矩陣運算的區別,本節將二者相對應的命令列表進行對比,以說明其異同。表2-8列出了兩種運算指令形式和實質功能的區別。
表2-8 陣列運算與矩陣運算的區別
【例2-11】 陣列運算和矩陣運算的比較。
A=[1 2;3 4]; % 測試矩陣A
B=[4 3;2 1]; % 測試矩陣B
r1=100+A % 矩陣A加上一個常數
r1 =
101 102
103 104r2_1=A*B % 兩個矩陣相乘,矩陣乘法
r2_1 =
8 5
20 13r2_2=A.*B % 兩個矩陣相乘,陣列乘法
r2_2 =
4 6
6 4r3_1=A\B % 矩陣左除
r3_1 =
-6.0000 -5.0000
5.0000 4.0000r3_2=A.\B % 陣列除法
r3_2 =
4.0000 1.5000
0.6667 0.2500r4_1=B/A % 矩陣右除
r4_1 =
-3.5000 2.5000
-2.5000 1.5000r4_2=B./A % 陣列除法
r4_2 =
4.0000 1.5000
0.6667 0.2500r5_1=A.^2 % 陣列冪
r5_1 =
1 4
9 16r5_2=A^2 % 矩陣冪
r5_2 =
7 10
15 22r6_1=2.^A % 陣列冪
r6_1 =
2 4
8 16
6 矩陣的重構
6.1 矩陣元素的擴充套件與刪除
MATLAB提供有對矩陣中的元素進行行或者列的擴充套件與刪除的功能。
1.矩陣元素的擴充套件
將資料儲存在矩陣現有維數以外的元素中時,矩陣的尺寸會自動增加,以便容納下這個新元素。這個功能可以用來進行矩陣的擴充套件。
【例2-12】 矩陣的擴充套件。A=magic(4)
A =
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1A(6,7)=17
A =
16 2 3 13 0 0 0
5 11 10 8 0 0 0
9 7 6 12 0 0 0
4 14 15 1 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 17A(:,8)=ones(6,1)
A =
16 2 3 13 0 0 0 1
5 11 10 8 0 0 0 1
9 7 6 12 0 0 0 1
4 14 15 1 0 0 0 1
0 0 0 0 0 0 0 1
0 0 0 0 0 0 17 1
本例中,A的原始矩陣並沒有A(6,7)這個元素,通過賦值給A(6,7),矩陣A擴充套件成了一個6´7的新矩陣,其中未賦值的擴充套件部分以0來填充。另外本例還說明了如何對矩陣的多個元素進行擴充套件賦值,直接將一個列向量賦值給了擴充套件部分。
2.矩陣元素的刪除
通過將行或列指定為空矩陣[],即可從矩陣中刪除行和列。
【例2-13】 矩陣的刪除。A=magic(4)
A =
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1A(:,1)=[] % 刪除矩陣A的第1列
A =
2 3 13
11 10 8
7 6 12
14 15 1A(2,:)=[] % 刪除矩陣A的第2行
A =
2 3 13
7 6 12
14 15 1
6.2 矩陣的重構
使用者可以通過矩陣旋轉,改變維數和擷取部分元素來產生所需要的新矩陣。MATLAB提供了一些矩陣重構函式,如表2-9所示。
表2-9 常用的矩陣重構函式及說明
【例2-14】 矩陣的重構示例。
a=reshape(1:9,3,3) % 建立測試矩陣
a= [1,7;2,8;3,9;4,10;5,11;6,12] % 建立測試矩陣
a =
1 7
2 8
3 9
4 10
5 11
6 12a = reshape(a,4,3) % 使用reshape改變a的形狀,
% 注意前後兩個a每一個單下標對應的元素是一致的
a =
1 5 9
2 6 10
3 7 11
4 8 12b=rot90(a,3) % 將矩陣a逆時針旋轉3×90°
b =
4 3 2 1
8 7 6 5
12 11 10 9>> c=fliplr(a) % 將矩陣a左右翻轉
c =
9 5 1
10 6 2
11 7 3
12 8 4>> d=flipud(a) % 將矩陣a上下翻轉
d =
4 8 12
3 7 11
2 6 10
1 5 9【例2-15】 矩陣部分元素的提取。a=[1 2 3;4 5 6; 7 8 9] % 建立測試矩陣
a =
1 2 3
4 5 6
7 8 9b=diag(a) % 求a的對角矩陣
b =
1
5
9c=triu(a,1) % c矩陣第1條對角線及以上的元素取矩陣a的元素,其餘為0
c =
0 2 3
0 0 6
0 0 0d=triu(a,2) % d矩陣第2條對角線及以上的元素取矩陣a的元素,其餘為0
d =
0 0 3
0 0 0
0 0 0e=triu(a,-1) % e矩陣中除了第3行第1列元素為0,其餘元素都取自矩陣a的元素
e =
1 2 3
4 5 6
0 8 9f=tril(a,-1) % 下三角矩陣的提取
f =
0 0 0
4 0 0
7 8 0