三、矩陣運算
(一)矩陣函數和特殊矩陣
- 常見的矩陣處理函數
- 表3-1 常見的矩陣函數
| 函數 | 說明 |
| /或\ | 矩陣除法中的左除或右除,可以用於求解線性方程組 |
| accumarray(ind,val) | 累加創建數組 |
| A^n | 求解矩陣A的n次冪 |
| balance(A) | 將矩陣A進行縮放以提高其特征值的精度 |
| [V,D]=cdf2rdf(V,D) | 將復數對角矩陣轉換為兩個實數對角矩陣 |
| chol(A) | 對矩陣A進行Cholesky因式分解 |
| cholinc(A,DropTol) | 對矩陣A進行不完全的Cholesky因式分解,DropTol指定分解誤差 |
| cholinc(A,Options) | 對矩陣A進行不完全的Cholesky因式分解,Options為包含3個分量的結構體 |
| cholupdate(R,X) | Cholesky因式分解的秩1升級 |
| cond(A) | 利用奇異值分解求矩陣A的范數 |
| condest(A) | 求矩陣A的范數1的條件數估計 |
| [V,D,s]=condeig(A) | 求矩陣A與重特征值相對應的條件數 |
| det(A) | 求矩陣的行列式 |
| dmperm(A) | 求矩陣A進行Dulmage-Mendelsohn排列 |
| eig(A) | 求矩陣A的特征值和特征向量 |
| [V,D]=eig(A) | 求矩陣A的特征向量矩陣(V)和特征值對角矩陣(D) |
| expm(A) | 矩陣指數函數 |
| funm(A) | 矩陣通用函數 |
| gsvd(A,B) | 求矩陣A的廣義奇異值 |
| [U,V,X,C,S]=gsvd(A) | 求矩陣A進行廣義奇異值分解 |
| hess(A) | 求矩陣A的Hessenburg標准型 |
| inv(A) | 求矩陣A的逆 |
| linsolve(A,y,options) | 快速求解方程組Ax=y,其中A的結構由options條件給定 |
| logm(A) | 矩陣的對數運算 |
| lscov(A,y,V) | 已知數據的協方差矩陣(V),求線性方程組的最小二乘解 |
| lsqnonneg(A,y) | 求線性方程組的非負最小二乘解 |
| [L,U,P]=lu(A) | 對矩陣A進行LU分解 |
| minres(A,y) | 利用最小殘差方法求線性方程組的解 |
| norm(A,type) | 求矩陣或向量(由type指定)的范數 |
| null(A) | 求A的零空間 |
| orth(A) | 求A的正交空間 |
| pinv(A) | 求A的偽逆矩陣 |
| planerot(X) | 求X進行平面旋轉 |
| ploy(A) | 求A的特征多項式 |
| polyeig(A0,A1,...) | 多項式的特征值解 |
| polyvalm(A) | 求A的矩陣多項式 |
| qr(A) | 對A進行正交三角分解 |
| qrdelete(Q,R,J) | 從QR分解中刪除行或列 |
| qrinsert(Q,R,J,X) | 在QR分解中插入行或列 |
| qz(A,B) | 廣義特征值問題求解 |
| rank(A) | 利用奇異值分解求A的秩 |
| rcond(A) | 對A進行LAPACK倒數條件估計 |
| rref(A) | 將矩陣A變換為行階梯型 |
| rsf2csf(A) | 將A由實塊對角陣轉換為復塊對角陣 |
| schur(A) | 對矩陣A進行Schur分解 |
| sqrtm(A) | 求矩陣A的平方根 |
| subspace(A,B) | 求兩個子空間A和B之間的角度 |
| svd(A) | 求矩陣A的奇異值 |
| [U,S,V]=svd(A) | 對A進行奇異值分解 |
| trace(A) | 求矩陣A的跡(即對角線元素之和) |
- 特殊矩陣
- 表3-2 特殊矩陣
| 矩陣 | 說明 |
| [] | 空矩陣 |
| blkdiag(a0,a1,...) | 以輸入參數為對角元素生成對角矩陣 |
| compan(P) | 求多項式的伴隨矩陣 |
| eye(r,c) | 產生r行,c列的單位矩陣 |
| gallery | 生成一系列的測試矩陣(50個以上) |
| hadamard(n) | 生成1個n階的Hadamard矩陣 |
| hankel(C) | 生成C的Hankel矩陣 |
| hilb(n) | 生成n階的Hilbert矩陣 |
| invhilb(n) | 生成n階的逆Hilbert矩陣 |
| magic(n) | 生成n階的魔幻矩陣 |
| ones(r,c) | 生成r行、c列的全1矩陣 |
| pascal(n) | 生成n階的Pascal矩陣 |
| rand(r,c) | 生成r行、c列的隨機矩陣(元素值介於0和1之間) |
| randn(r,c) | 生成r行、c列的零均值和單位方差的正態分布的隨機矩陣 |
| rosser | 典型的對稱矩陣特征值問題測試 |
| toeplitz(C,R) | 生成Toeplitz矩陣 |
| vander(C) | 生成Vandermonde矩陣 |
| wilkinson(n) | 生成n階的Wilkinson特征值測試矩陣 |
| zeros(r,c) | 生成r行、c列的全0矩陣 |
- 稀疏矩陣
- 稀疏矩陣中大部分元素都是0,只有少部分元素是非0的。
- 一般,MATLAB存儲稀疏矩陣需要通過3個矩陣,對於一個m×n的矩陣(假設其中有nz個非0元素,存儲在長度為nz_max的矩陣中)
- 第一個矩陣:存儲所有非0元素,矩陣長度為nz_max
- 第二個矩陣:存儲所有非0元素的行下標,矩陣長度也為nz_max
- 第三個矩陣:存儲每一列開始處的指針和標志這3個矩陣結束的指針,存儲長度為n+1
- 創建稀疏矩陣
- sparse(i,j,s,m,n,nz_max)使用[i,j,s]來創建m×n維稀疏矩陣s(s為所有非0元素構成的向量,ij為非0元素的行下標、列下標)
- spdiags(B,d,m,n)可以抽取、創建或替代對角稀疏矩陣(d表示長度為p的整數向量,B為滿矩陣)
- 表3-3 稀疏矩陣函數
| 函數 | 說明 |
| bicg | 求解雙共軛梯度迭代線性方程的解 |
| bicgstab | 求解雙共軛梯度穩定迭代線性方程的解 |
| cgs | 求解二次共軛梯度迭代線性方程曾的解 |
| cholinc | 不完全Cholesky分解 |
| colamd | 列估計最小度重排序方法 |
| colamdtree | 帶列消元樹排序后的colamd方法 |
| colmmd | 列最小度排序 |
| colperm | 對列進行隨機排序 |
| condest | 1范數估計 |
| dmperm | Dulmage-Nebdeksohn重排序方法 |
| eigs | 使用APPACK的特征值 |
| etree | 矩陣消元樹結構 |
| etreeplot | 繪制消元路徑 |
| find | 尋找非0元素索引 |
| full | 將稀疏矩陣轉化為完整矩陣 |
| gmres | 求廣義最小殘差迭代線性方程的解 |
| gplot | 繪制圖論圖形 |
| issparse | 判斷是否為稀疏矩陣 |
| lsqr | 標准方程中共軛梯度的LSQR實現 |
| luinc | 不完全LU因式分解 |
| minres | 最小殘差迭代線性方程求解 |
| Nnz | 求矩陣中的非0元素個數 |
| nonzeros | 提取矩陣中的非0元素 |
| normest | 矩陣的2范數估計 |
| nzmax | 求分配給非0元素的存儲空間 |
| pcg | 求預處理共軛梯度迭代線性方程組的解 |
| qmr | 偽最小殘差迭代線性方程組解法 |
| randperm | 產生隨機排列的數組 |
| spalloc | 為稀疏矩陣分配內存空間 |
| sparse | 創建稀疏矩陣 |
| spaugment | 建立最小二乘增廣矩陣 |
| spconvert | 從外部格式中載入稀疏矩陣 |
| sodiags | 利用對角元素生成稀疏矩陣 |
| speye | 單位稀疏矩陣 |
| spfun | 將一個函數應用於非0元素 |
| spones | 將所有非0元素用1代替 |
| spparms | 設置稀疏矩陣程序的參數 |
| sprand | 創建均勻分布的隨機稀疏矩陣 |
| sprandn | 創建高斯分布的隨機稀疏矩陣 |
| sprandsym | 創建對稱的隨機稀疏矩陣 |
| sprank | 求結構秩的值 |
| spy | 稀疏矩陣的圖形表示 |
| svds | 產生一些奇異值 |
| symbfact | 符合因式分解 |
| symamd | 對稱估計最小階次重排序法 |
| symamdtree | 帶對稱消元樹排序后的symand |
| symmd | 對稱最小階次重排序 |
| symmlq | 對稱LQ迭代線性方程的求解 |
| symrcm | 對稱的反向Cuthill-Mckee重排序 |
| treelayout | 變換成樹狀結構 |
| treeplot | 畫出樹狀圖 |
-
- 創建稀疏矩陣並畫出稀疏矩陣的圖(e_three_1.m)
(二)矩陣分析
- 范數分析
- 向量的范數
- 線性空間中的某個向量$\textbf{x}=\left \{ x_{1},x_{2},\cdots ,x_{n} \right \}$,其p范數定義為:$\left \| \mathbf{x} \right \|_{p}=\left ( \sum_{i=1}^{n}\left | x_{i}\right |^{p}\right )^{\frac{1}{p}}$
