矩陣是數組的一種表現形式。
生成矩陣
兩種方式:1.枚舉式直接賦值法。2.用函數
如何生成數值矩陣
1.實數矩陣輸入規則
所有元素都要放在“[ ]”中;
同行元素用**“ ,”或“空格”** 分隔;
不同行的用“;”分隔。
2.向量輸入
3.利用函數生成矩陣
ps:
1.其中size函數返回該矩陣的行數和列數。
2.magic(n)魔方陣中,當n>2時有多個魔方陣,但是matlab中只產生一個特定的魔方陣。
習題1
代碼
結果
單位陣所以式子成立
習題2:魔方陣
補充1:範德蒙矩陣
常用於各種通信系統的糾錯編碼中,例如裏的所羅門編碼以其爲基礎。
舉例:生成一個1~5的範德蒙矩陣
補充2:希爾伯特矩陣
命令
例子
補充3:伴隨陣
命令
例子:
補充4:帕斯卡矩陣
例子:生成一個5階帕斯卡矩陣,驗證它的逆矩陣所有元素也爲整數
inv()是矩陣求逆運算
4.創建多維數組
方法一: 直接賦值法
方法二: 採用cat函數
如何生成複數矩陣
兩種方法:
矩陣變換
一、對角陣
1.提取對角陣的對角線
2.構造對角矩陣
例子
%構造一個矩陣A,使A的第一行*1,第二行*2……
>> %分析:A左乘一個對角陣,該對角陣的對角線爲1 2 3 4 5……即可實現上述功能。右乘則爲對列的操作。
>> A=fix(0+(99-10+1)*rand(5))
>A =
14 54 40 74 9
71 23 7 48 86
28 58 20 89 0
47 62 82 7 69
14 67 13 39 73
>> D=diag(1:5)
D =
1 0 0 0 0
0 2 0 0 0
0 0 3 0 0
0 0 0 4 0
0 0 0 0 5
>> D*A
ans =
14 54 40 74 9
142 46 14 96 172
84 174 60 267 0
188 248 328 28 276
70 335 65 195 365
2.三角陣
1.生成一個與A大小相同的三角陣。
2.提取矩陣下三角函數tril() 函數。
3.矩陣轉置
ps:若矩陣元素是實數則兩個沒區別,要是複數矩陣共軛轉置則會產生不同結果。
4.矩陣的旋轉
5.矩陣的反轉
6.矩陣求逆
例題
解:
>> A=[1 2 3;1 4 9;1 8 27];
B=[5;-2;6];
%方法一,用逆矩陣法
>> x=inv(A)*B
x =
23
-29/2
11/3
>> %方法二,用左除法
x=A\B
x =
23
-29/2
11/3
>> %由上式可見兩種方法是等價的
7.矩陣的乘法
特備註意維度上的匹配、矩陣的運算對象。
經驗分享:
1.矩陣與數值型數據之間的乘法運算滿足分配律。
2.此外,(A+C)×B-(A×B+C*B)的運算示例也反映出矩陣之間的乘法運算滿足右分配律。
3.對於兩個2×3矩陣的乘法運算AxC,由於矩陣A的列數3與矩陣C的行數2不相等,矩陣A與矩陣C儘管在維度上相同,但是參與乘法運算時維度不匹配,因此造成MATLAB編譯錯誤。
4.讀者可以在保證矩陣維度匹配的前提下,自行檢驗矩陣乘法是否滿足交換律與左結合律(即形如:AX(B+C)=A×B+AxC)。結果:方陣滿足交換律。
維度匹配下左結合律的驗證:
A=[1 1 1;2 2 2;3 3 3;4 4 4];
B=[1 1 1 1;1 1 1 1;1 1 1 1];
C=[2 2 2 2;2 2 2 2;2 2 2 2];
>> A*(B+C)
ans =
9 9 9 9
18 18 18 18
27 27 27 27
36 36 36 36
>> A*B+A*C
ans =
9 9 9 9
18 18 18 18
27 27 27 27
36 36 36 36
8.矩陣的除法
matlab中的矩陣除法運算被細分爲左除與右除運算。
1.對於參與矩陣除法運算的兩個對象A與B而言若均爲數值型標量,則左除與右除運算是等價的。
2.對於一般的二維矩陣A和B而言,左除與右除運算在對矩陣A和B的維度匹配上存在不同的要求:
經驗分享:
9.矩陣冪運算
matlab中矩陣的冪運算對方陣有效,因爲對於非方陣而言,相鄰的運算矩陣無法
滿足“維度匹配”的要求即左側矩陣的列數不等於相鄰右側矩陣的行數,因此冪運算無法進行。
10.矩陣比較
矩陣的比較關係是針對於兩個矩陣對應元素的,所以在使用關係運算時,首先應該
保證兩個矩陣的維數一致或其中一個矩陣爲標量。關係運算是對兩個矩陣的對應運算進行比較,若關係滿足,則將結果矩陣中該位置元素置爲1,否則置0。
11.對矩陣元素進行取整
12.對矩陣進行邏輯運算
13.矩陣的分解
具體的講述見Manii的如下文章:
視覺SLAM中的數學——解方程AX=b與矩陣分解:奇異值分解(SVD分解) 特徵值分解 QR分解 三角分解 LLT分解
課本上的介紹如下:
例子
14.查找矩陣中的最值
15.查找矩陣中的元素
矩陣求值
1.行列式
例題:
答案:
>> format rat;
>> A=[1 2 3;-3 2 1;4 1 2];
>> det(inv(A))
ans = -1/10
>> 1/det(A)
ans = -1/10
2.矩陣的秩
ps:關於秩的概念已經沒有印象了,所以又學習了一遍,並將一些簡單的手寫筆記掃描了下來。點擊右側矩陣秩的手寫筆記
例題:該例題中涉及到一些繪圖的知識見後面內容
分析上圖可知
3.矩陣的跡
等於矩陣對角線元素之和,也等於矩陣的特徵值之和。
命令:
>> A=[1 3 2;-3 2 1;4 1 2]
A =
1 3 2
-3 2 1
4 1 2
>> B=trace(A)
B = 5
>> C=sum(diag(A))
C = 5
4.矩陣的範數
用來度量矩陣或向量在某種意義上的長度。
所以範數在不同定義下的值也不同,如下:
三種定義分別對應的命令:
5.矩陣的條件數
等於矩陣的範數與該矩陣的逆矩陣的範數的乘積。
條件數越接近1,矩陣的性能越好,否則越差。
因爲範數有三種不同情況,所以與之對應有三種範數命令。
矩陣的特徵值和特徵向量
這部分知識點見https://blog.csdn.net/qq_45562910/article/details/104178703
函數調用:
特徵值的幾何意義
當X與AX方向相同時稱爲特徵方向 在該方向上有AX=λX
例題:
>> A=[0,0.5,0.5,3,5.5,5.5,6,6,3,0;0,0,6,0,6,0,0,8,1,8];
>> X=[1,0.5;0,1];
>> Y=X*A;
>> subplot(2,2,1);
>> fill(A(1,:),A(2,:),'r');
>> subplot(2,2,2);
>> fill(Y(1,:),Y(2,:),'r');
啓示:在構建字庫時,不必構建斜體字庫,只需對正體字庫進行線性變換即可。
稀疏矩陣
定義:零元素的個數遠多於非零元素的個數。
矩陣的存儲方式
完全存儲: 將矩陣的全部元素按列存儲,對於稀疏矩陣0也要存儲。
係數存儲: 只存儲非零元素的值和位置。
>> A=sparse(eye(5))
A =
(1,1) 1
(2,2) 1
(3,3) 1
(4,4) 1
(5,5) 1
>> B=full(A)
B =
1 0 0 0 0
0 1 0 0 0
0 0 1 0 0
0 0 0 1 0
0 0 0 0 1
>> A=sparse([1,2,2],[2,1,4],[4,5,-7])
A =
(2,1) 5
(1,2) 4
(2,4) -7
>> B=full(A)
B =
0 4 0 0
5 0 0 -7
>> A=[2,2,1;2,1,-1;2,4,3]
A =
2 2 1
2 1 -1
2 4 3
>> B=spconvert(A)
B =
(2,1) -1
(2,2) 1
(2,4) 3
關於矩陣的一些命令表