三、矩阵运算
(一)矩阵函数和特殊矩阵
函数 |
说明 |
/或\ |
矩阵除法中的左除或右除,可以用于求解线性方程组 |
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的迹(即对角线元素之和) |
矩阵 |
说明 |
[] |
空矩阵 |
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 |
画出树状图 |
(二)矩阵分析
- 向量的范数
- 线性空间中的某个向量$\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}}$
|