Matlab基礎教程(4)——矩陣
文章目錄
- Matlab基礎教程(4)——矩陣
- 矩陣建立與編輯
- 矩陣運算
矩陣是由
個數
排成的
行
列數表,記成
含有
個
維行向量,
個
維列向量。
矩陣建立與編輯
建立 - 直接輸入
用
[]
定義矩陣,同一行的元素用
,
或空格分割,不同行的元素用
;
或回車分割
矩陣的大小不需要預先定義,若
[]
中不寫元素,表示空矩陣
建立 - 從檔案中讀取
可以将較為常用的矩陣寫入
.m
檔案,調用時直接運作該檔案,即可在工作台看到相應矩陣。除此之外,可以使用
load
指令調用
.txt
等類型的檔案。
建立 - 用函數生成特殊矩陣
可以用某些函數生成具有某些特點的矩陣,常用函數如下
函數 | 說明 |
| 建立指定大小的機關矩陣 |
| 建立指定大小矩陣,其中元素均為1 |
| 建立指定大小矩陣,其中元素均為0 |
| 建立指定大小矩陣,其中元素服從範圍内的均勻分布 |
| 建立指定大小矩陣,其中元素服從标準正态分布 |
| 建立系數向量為的多項式的伴随矩陣 |
| 建立以向量中的元素為對角線的對角陣 |
| 建立一個的Hilbert矩陣 |
| 建立一個階幻方 |
| 将矩陣轉化為稀疏矩陣形式,即由的非零元素和下标構成稀疏矩陣 |
矩陣拼接
A = [1 2 3 4];
B = zeros(2);
C = ones(2);
D = [A; B C]
% D =
%
% 1 2 3 4
% 0 0 1 1
% 0 0 1 1
用
,
或空格銜接,以實作矩陣的橫向拼接,如上例中的矩陣與矩陣
用
;
或換行銜接,以實作矩陣的縱向拼接,如上例中的矩陣與拼接矩陣
引用矩陣中的某些元素
對矩陣的每個次元均指定一個索引,即可引用相應的資料。
索引可以是标量(一個數)、向量(隻能包含正整數)和
:
(表示全部)。
A = [1 2 3 4
5 6 7 8
9 10 11 12];
A(2,2) % 第2行第2列,即元素6
A(3,[2,4]) % 第3行第2和第4列,即[10 12]
A(1:3,3) % 第3列第1行至第4行,即[3;7;11]
A(3,:) % 第3行所有元素,即[9 10 11 12]
A(:,4) % 第4列所有元素,即[4;8;12]
矩陣變形
- 變換次元:通過函數
實作:将中的資料按列取出,再根據指定的次元,從左至右按列填充reshape(X,m,n)
t = 1:12;
A = reshape(t, 2, 6)
% A =
% 1 3 5 7 9 11
% 2 4 6 8 10 12
B = reshape(A, 4, 3)
% B =
% 1 5 9
% 2 6 10
% 3 7 11
% 4 8 12
也可以僅指定一個次元,讓函數自适應另一個次元的大小
C = reshape(B, 3, []); % 重構為3*4的矩陣
D = reshape(C, [], 2); % 重構為6*2的矩陣
- 旋轉與翻轉
函數 | 說明 |
| 将矩陣逆時針方向旋轉 |
| 将矩陣左右翻轉 |
| 将矩陣上下翻轉 |
| 時對行翻轉, 時對列翻轉 |
三角陣/對角陣的抽取
提取對角線/用對角線構造對角陣
v = 1:3;
A = diag(v) % 生成以向量v為對角線的對角陣
% 1 0 0
% A = 0 2 0
% 0 0 3
v = diag(A) % 提取矩陣A的對角線,生成列向量
% 1
% v = 2
% 3
A = diag(v,2) % 生成以向量v為主對角線上第2條對角線的對角陣
% 0 0 1 0 0
% 0 0 0 2 0
% A = 0 0 0 0 3
% 0 0 0 0 0
% 0 0 0 0 0
v = diag(A,2) % 提取主對角線上第2條對角線,生成列向
% 1
% v = 2
% 3
提取上/下三角陣
A = ones(3);
tril(A) % 提取下三角陣
% 1 0 0
% 1 1 0
% 1 1 1
tril(A,1) % 從主對角線上第一條對角線開始提取下三角陣
% 1 1 0
% 1 1 1
% 1 1 1
triu(A) % 提取上三角陣
% 1 1 1
% 0 1 1
% 0 0 1
triu(A,-1) % 從主對角線下第一條對角線開始提取上三角陣
% 1 1 1
% 1 1 1
% 0 1 1
幾個函數雖然功能不同,但第二個參數中對角線的定位規則一緻,正數代表主對角線上的對角線,負數代表下面的對角線,提取時取閉區間。
矩陣運算
加減運算
要求進行運算的矩陣形狀一緻,計算時對應位置相加減即可,有交換律和結合律。
乘運算
若有三個矩陣,則對矩陣中的任意一個元素,有
即
其中矩陣的列數(第二次元)需要等于矩陣的行數(第一次元)。
矩陣乘運算不滿足交換律。
點乘運算
兩個形狀一緻的矩陣,對應位相乘,得到一個形狀不變的矩陣。
除法運算 - 左除
線性方程組,若非奇異,即它的逆矩陣存在,則可解出
X=inv(D)*B=D\B
條件:的階數等于的行數。(非奇異表明是方陣)
除法運算 - 右除
線性方程組,若非奇異,即它的逆矩陣存在,則可解出
X=B*inv(D)=B/D
條件:的列數等于的階數。
- 除号偏向哪邊,哪邊要求非奇異
- 使用除法運算解線性方程組比使用
求逆的方法更迅速,且擁有更小的殘差inv
常用矩陣運算函數
函數 | 說明 |
| 傳回2-範數逆運算的條件數,即最大奇異值與最小奇異值之比 |
| 傳回 1-範數條件數的下限 |
| 傳回矩陣的行列式(一個值) |
| 傳回矩陣的特征值/特征向量 |
| 傳回矩陣的逆 |
| 傳回矩陣的範數, 可以為 ,不填預設為 |
| 傳回矩陣的2-範數,相當于 |
| 傳回矩陣的秩 |
| 矩陣的正交化運算,傳回适用于矩陣範圍的标準正交基,列數等于秩 |
| 傳回1-範數的逆條件數 |
| 傳回矩陣對角線之和,即矩陣的迹 |
| 矩陣指數運算,每個元素變為 |
| 矩陣對數運算,每個元素變為 |
| 矩陣開方運算,傳回使 |
| 将複數對角矩陣轉換成實數塊對角矩陣 |
| 将實數塊對角矩陣轉換成複數對角矩陣 |
| 将矩陣轉換成逐行遞減的階梯矩陣 |
| 一般的矩陣函數 |
關于矩陣的條件數與“病态”:
矩陣的條件數用于刻畫矩陣的“病态”程度,定義為
它是一個不小于1的實數,當時,說矩陣是“病态”的,反之則是“良态”的。
s = svd(A); % 傳回矩陣A的奇異值列向量s
[U,S,V] = svd(A); % 傳回矩陣A的奇異值分解因子U、S和V