笔记来源于B站视频link,推荐大家去看一看
专题二 MATLAB矩阵处理
2.1 特殊矩阵
一类是通用性的特殊矩阵,另一类是用于专门学科的特殊矩阵
-
通用的特殊矩阵
- zeros函数:产生全0矩阵,即零矩阵
- ones函数:产生全1矩阵,即幺矩阵
- eye函数:产生对角线为1地矩阵。当矩阵是方阵时,得到一个单位矩阵。
- rand函数:产生(0,1)区间均匀分布的随机矩阵
- randn函数:n代表normal,正态分布的意思,产生均值为0,方差为1的标准正态分布随机矩阵
这几种函数的调用格式相似,以zero函数为例进行说明:
-
zeros(m):产生m×m的零矩阵
-
zeros(m,n):产生m行n列的零矩阵
-
zeros(size(A)):产生于矩阵同样大小的零矩阵
-
用于专门学科的特殊矩阵
-
魔法矩阵——Magic Square
- n阶魔方阵由1,2,3,……n2 共n2 个整数组成,且每行、每列以及主、副对角线上各n各元素之和都相等
- n阶魔方阵每行每列元素的和为(1+2+3+……+n2)/n=(n+n3)/2
- MATLAB函数magic(n)只产生一个特定的魔方阵。
-
-
范德蒙矩阵
对于向量v=[v1,v2,……,vn],范德蒙矩阵的一般形式为:
在MATLAB中,函数vander(V)生成以向量V为基础的范德蒙矩阵。
范德蒙矩阵常用在各种通信系统的纠错编码中,如Reed-Solomon编码即为范德蒙矩阵为基础。
- 希尔伯特矩阵
n阶希尔伯特矩阵的一般形式为:
H(i,j)=1/(i+j-1)
在MATLAB中,生成n阶希尔伯特矩阵的函数是hilb(n)。
-
伴随矩阵
设多项式p(x)为anxn+an-1xn-1+……+a1x+a0,则多项式的伴随矩阵是:
p(x)称为矩阵A的特征多项式,方程p(x)=0的根称为A的特征值。
MATLAB中生成伴随矩阵的函数是compan(p),其中p是一个多项式的系数向量,高次幂系数排在前,低次幂系数排在后。例如生成x3-2x2-5x+6的伴随矩阵:
-
帕斯卡矩阵
根据二项式定理,(x+y)n展开后的系数随着n的增大组成一个三角形表,这个三角形称为杨辉三角形。这里的三角形每行代表不同n时的二项式系数,把二项式系数依次填写在矩阵的左侧对角线上,然后提取左侧的n行n列元素即为n阶帕斯卡矩阵。
帕斯卡矩阵的第一行和第一列元素都为1,其余位置的元素时该元素的左边元素与上面元素相加,即P(i,j)=P(i,j-1)+P(i-1,j),且P(i,1)=1,P(1,j)=1。
2.2 矩阵变换
矩阵变化是指对一个矩阵进行运算,其结果还是一个矩阵。
-
对角阵
对角矩阵:只有对角线上有非零元素的矩阵。
数量矩阵:对角线上的元素相等的对角矩阵。
单位矩阵:对角线上的元素都为1的对角矩阵。
-
提取矩阵的对角线元素
-
diag(A):提取矩阵A主对角线元素,产生了一个列向量。
-
diag(A,K):提取矩阵A第K条对角线的元素,产生一个列向量。
与主对角线平行,往上为第1,2,……n条,往下为第-1,-2,……-n条。
-
-
构造对角矩阵
- diag(V):以向量V为主对角线元素,产生对角矩阵。
- diag(V,K):以向量V为第k条对角线元素,产生对角矩阵。
-
-
三角阵
-
上三角阵
矩阵的对角线以下的元素全为零的矩阵
-
triu(A):提取矩阵A的主对角线及以上的元素。
-
triu(A,k):提取矩阵A的第k条对角线及以上的元素。
-
-
-
下三角阵
对角线以上的元素全为零的矩阵
在MATLAB中,提取矩阵A的下三角矩阵的函数是tril,其用法与triu函数完全相同。
-
矩阵的转置
矩阵行列交换。
-
转置运算符是小数点后面接单引号(.')。
-
共轭转置,其运算符是单引号(’),它在转置的基础上还要取每个数的复共轭。
-
如果矩阵的元素是实数,那么转置和共轭转置的结果是一样的。
-
矩阵的旋转
- rot90(A,K):将矩阵A逆时针方向旋转90°的k倍,当k为1时可省略。
-
矩阵的翻转
左右翻转将原矩阵的第一列和最后一列交换,第二列和倒数第二列交换,以此类推。
- fliplr(A):对矩阵A实施左右翻转。
- flipud(A):对矩阵A实施上下翻转。
-
矩阵求逆
- 对于一个方阵A,如果存在一个与其同阶的方阵B,使得AB=BA=I(单位矩阵),则称AB互为对方的逆矩阵。
- inv(A):求方阵A的逆矩阵。
2.3 矩阵求值
矩阵求值是指对一个矩阵进行某种运算,其结果还是一个数值。
-
矩阵的行列式值
- 把一个方阵看成一个行列式,并对其按行列式的规则求值,这个值就称为方阵所对应的行列式的值。
- det(A):求方阵A所对应的行列式值。
-
矩阵的秩
- 矩阵线性无关的行数或列数称为矩阵的秩
- rank(A):求矩阵A的秩
- 奇数阶魔方阵秩为n,即奇数阶魔方阵时满秩矩阵。
- 一重偶数阶魔方阵秩为n/2+2(n是的倍数,但非4的倍数)
- 双重偶数阶魔方阵秩均为3(劫数是4的倍数)
-
矩阵的迹
- 等于矩阵的对角线元素之和,也等于矩阵的特征值之和。
- trace(A):求矩阵A的迹
-
矩阵的范数
-
用来度量矩阵或向量在某种意义下的长度。
-
向量的3种常用范数:
- 向量1—范数:向量元素的绝对值之和
- 向量2—范数:向量元素平方和的平方根
- 向量—无穷大范数:所有向量元素绝对值中的最大值
-
MATLAB种求向量范数的函数为:
- norm(V,1):计算向量V的1—范数。
- norm(V)或norm(V,2):计算向量V的2—范数。
- norm(V,inf):计算向量V的无穷大—范数。
-
矩阵的范数
- 矩阵A的1—范数:矩阵列元素绝对值之和的最大值
- 矩阵A的2—范数:矩阵A的转置与矩阵A本身的乘积矩阵的最大特征值的平方根。
- 矩阵A的无穷大—范数:所有矩阵行元素绝对值之和的最大值
-
求矩阵范数的函数:
MATLAB提供了3种矩阵范数的函数,其函数调用格式与求向量的范数的函数完全相同。
-
-
矩阵的条件数
用于描述矩阵性能的参数。
矩阵A的条件数等于A的范数与A的逆矩阵的范数的乘积。
条件数越接近于1,矩阵的性能越好,反之矩阵的性能越差。
- cond(A,1):计算A的1—范数下的条件数。
- cond(A)或cond(A,2):计算A的2—范数下的条件数。
- cond(A,inf):计算A的无穷—范数下的条件数。
2.4 矩阵的特征值与特征向量
矩阵特征值的数学定义
设 A 是n阶方阵,如果存在数m和非零n维列向量 x,使得 Ax=mx 成立,则称 m 是矩阵A的一个特征值(characteristic value)或本征值(eigenvalue),x是对应特征值的一个特征向量。
求矩阵的特征值和特征向量
-
E=eig(A):求矩阵A的全部特征值,构成向量E
-
[X,D]=eig(A):求矩阵A的全部特征值,构成对角阵D,并产生矩阵X,X各列是相应的特征向量。
-
特征值之间的几何意义
MATLAB提供了一个eigshow函数,可以演示单位圆上的向量x和Ax之间的关系。
2.5 稀疏矩阵
稀疏矩阵是指0元素的个数远远多于非0元素个数的矩阵。
-
矩阵的存储方式
-
完全存储方式
将矩阵的全部元素按列存储
-
稀疏存储方式
只存储矩阵的非零元素的值及其位置,即行号和列号。采用稀疏存储方式时,矩阵元素的存储顺序并没有改变,也是按列的顺序进行存储。
-
-
稀疏存储方式的产生
-
完全存储方式与稀疏存储方式之间的转化
- A=sparse(S):将矩阵S转化为稀疏存储方式的矩阵A
- S=full(A):将矩阵A转化为完全存储方式的矩阵S
-
直接建立稀疏存储矩阵
-
sparse函数的其他调用格式:
- sparse(m,n):生成一个m×n的所有元素都是0的稀疏矩阵
- sparse(u,v,S):其中u、v、s是3个等长的向量。S是要建立的系数存储矩阵的非零元素,u(i)、v(i)分别是S(i)的行和列下标。
-
使用spconvert函数直接建立系数存储矩阵,其调用格式为:
B=spconvert(A)
A是一个m×3或m×4的矩阵,其每行表示一个非零元素,m是非零元素的个数。
- A(i,1)表示第i个非零元素所在的行
- A(i,2)表示第i个非零元素所在的列
- A(i,3)表示第i个非零元素的实部
- A(i,4)表示第i个非零元素的虚部
若矩阵的全部元素都是实数,则无须第4列
-
-
带状稀疏矩阵的稀疏存储
稀疏矩阵有两种基本类型:无规则结构的稀疏矩阵与有规则结构的稀疏矩阵
带状稀疏矩阵是指所有非零元素集中在对角线上的矩阵。
- [B,d]=spdigs(A):从带状稀疏矩阵A中提取全部非零对角线元素赋给矩阵B及其这些非零对角线的位置向量d
- A=spdiags(B,d,m,n):产生带状稀疏矩阵的系数存储矩阵A,其中m、n为原带状稀疏矩阵的行数和列数,矩阵B的第i列即为原带状稀疏矩阵的第i条非零对角线,向量d为原带状稀疏矩阵所有非零对角线的位置。
-
单位矩阵的稀疏存储
单位矩阵:只有对角线元素为1,其他元素为0的矩阵。
- speye(m,n):返回一个m×n的稀疏存储单位矩阵
-