专题二:MATLAB矩阵处理
2-1特殊矩阵
1.通用性的特殊矩阵
· zeros()
函数:全0矩阵,即零矩阵。
· ones()
函数:全1矩阵,即幺矩阵。
· eye()
函数:对角线矩阵,当矩阵是方阵时,即单位矩阵。
· rand()
函数:产生(0,1)区间均匀分布的随机矩阵。
· randn()
函数:产生均值为0,方差为1的标准正态分布随机矩阵。
调用格式:
zero(m):产生m * m零矩阵。
zeros(m,n):产生m* n零矩阵。
zeros(size(A)):产生与矩阵A同样大小的零矩阵。
>> A=zeros(2,3)
A =
0 0 0
0 0 0
>> zeros(size(reshape(A,3,2))) //reshape()将A转变为3行2列的矩阵
ans =
0 0
0 0
0 0
2.用于专门学科的特殊矩阵
(1)魔方矩阵–Magic Square
· n阶魔方阵由1,2,3,… n^2个整数组成,且每行每列主副对角线上元素和相同。
· n阶魔方阵每行每列元素和为(1+2+3+…+n^ 2)/n = (n+n^3)/2.
· MATLAB函数magic(n)
产生一个特定的魔方阵。
(2)范德蒙矩阵
对于向量V=[v1,v2,v3,…,vn],范德蒙矩阵一般形式为:
MATLAB函数vander(V)
生成以向量V为基础的范德蒙矩阵。
(3)希尔伯特矩阵
n阶希尔伯特(Hilbert)矩阵的一般形式为:
希尔伯特矩阵元素为H(i,j) = 1/(i+j-1)。
MATLAB函数hilb(n)
生成n阶希尔伯特矩阵。
>>format rat //分数格式
(4)伴随矩阵
设多项式p(x)为anX^ n+a(n-1)X^(n-1)+…+a1X+a0,则多项式的伴随矩阵是:
p(x)为A的特征多项式,方程p(x)=0的根为A的特征值。
MATLAB函数compan(p)
生成伴随矩阵。p是一个多项式的系数向量,高次幂在前。
(5)帕斯卡矩阵
· 根据二项式定力,(x+y)^n展开后系数随着n的增大组成一个三角形表,杨辉三角。
· 把二项式系数依次填写在矩阵的左侧对角线上,提取左侧n行n列元素组成帕斯卡矩阵。
MATLAB函数pascal(n)
生成一个n阶帕斯卡矩阵。
P(i,1)=P(1,j)=1;P(i,j)=P(i,j-1)+P(i-1,j)。
2-2矩阵变换
矩阵变换结果还是一个矩阵。
1.对角阵
· 对角矩阵:只有对角线上有非零元素
· 数量矩阵:对角线上元素相等的对角矩阵。
· 单位矩阵:对角线上元素全为1的对角矩阵。
(1)提取矩阵的对角线元素
diag(A)
:提取矩阵A主对角线元素,产生一个列向量。
diag(A,k)
:提取第k条对角线,产生列向量。k>0向上取,k<0向下取。
(2)构造对角矩阵
diag(V)
:以向量V为主对角线元素,产生对角矩阵
diag(V,k)
:以向量V为第k条对角线元素,产生对角矩阵。
2.三角阵
· 上三角阵:矩阵对角线以下元素全为0。
triu(A)
:提取矩阵A主对角线及以上的元素。
triu(A,k)
:第k条对角线及以上的元素。
· 下三角阵:对角线以上全为0。
3.矩阵的转置
· 转置运算符是小数点后接单引号(.’)。
· 共轭转置,单引号(‘),转置后求每个数的复共轭。
4.矩阵的旋转
rot90(A,k)
:将矩阵A逆时针旋转90度的k倍,k为1可省略。
5.矩阵的翻转
fliplr(A)
:对矩阵A实施左右翻转。
flipud(A)
:对矩阵A上下翻转。
6.矩阵求逆
对于一个方阵A,如果存在一个同阶方阵B,使得AB=BA=I(I为单位矩阵),则B是A的逆矩阵。
inv(A)
:求方阵A的逆矩阵。
2-3矩阵求值
1.矩阵的行列式值
det(A)
:求方阵A所对应的行列式的值。
2.矩阵的秩
rank(A)
:求矩阵A的秩。矩阵线性无关的行数或列数称为秩。
bar®绘制直方图。
·奇数阶魔方阵秩为n,一重偶数阶魔方阵秩为n/2+2,双重偶数阶魔方阵秩均为3.
3.矩阵的迹
trace(A)
:求矩阵A的迹。等于对角线元素之和,也等于特征值之和
4.矩阵的范数
矩阵或向量的范数用来度量矩阵或向量在某种意义下的长度。
(1)向量的3中常用范数:
· 向量1-范数:向量元素绝对值之和。||V||1=Σ|vi|。
· 向量2-范数:向量元素平方和的平方根。||V||2=√(Σvi^2)。
· 向量∞-范数:所有向量元素绝对值中的最大值。||V||∞=max{|vi|}。
norm(V)
或norm(V,2)
:计算向量V的2-范数。
norm(V,1)
:计算向量V的1-范数。
norm(V,inf)
:计算向量V的∞-范数。
(2)矩阵的范数
· 矩阵A的1-范数:矩阵列元素绝对值之和的最大值。
· 矩阵A的2-范数:A`A矩阵最大特征值的平方根。
· 矩阵A的∞-范数:所有矩阵行元素绝对值和的最大值。
MATLAB函数与向量的相同。
5.矩阵的条件数
· 矩阵A的条件数等于A的范数与A的逆矩阵范数的乘积。
· 条件数越接近1,矩阵的性能越好。
cond(A,1):计算A的1-范数下的条件数。
cond(A)或cond(A,2):计算A的2-范数下的条件数。
cond(A,inf):计算A的∞-范数下的条件数。
2-4矩阵的特征值与特征向量
1.矩阵特征值的数学定义
· 设A是n阶方阵,如果存在常数k和n维非零列向量x,使得等式Ax=kx成立,则k为A的特征值,x是对应特征值k的特征向量。
2.求矩阵的特征值与特征向量。
· E=eig(A)
:求矩阵A的全部特征值,构成向量E。
· [X,D]=eig(A)
:求矩阵A的全部特征向量,构成对角阵D,并产生矩阵X,X各列是相应的特征向量。
3.特征值的几何意义
eigshow()
函数,演示单位元上的向量x和向量Ax之间的关系。
2-5稀疏矩阵
1.矩阵的存储方式
(1)完全存储方式:全部元素按列存储
(2)稀疏存储方式:只存储非零元素的值及位置,即行号和列号。按列顺序存储。
2.稀疏存储方式的产生
(1)完全存储方式与稀疏存储方式之间的转化
· A=sparse(S)
:将矩阵S转化为稀疏存储方式的矩阵A。
· S=full(A)
:将矩阵A转化为完全存储方式的矩阵S。
(2)直接建立稀疏存储矩阵
· sparse()
函数其他调用格式:
sparse(m,n)
:生成一个mn的所有元素是0的稀疏矩阵。
sparse(u,v,S)
:其中u、v、S是3个等长的向量。S是要建立稀疏存储矩阵的非零元素,u(i)、v(i)分别是S(i)的行下标与列下标。
· spconvert()
函数直接建立稀疏存储矩阵。
B=spconvert(A)
:A为m3或m*4的矩阵,其每行表示一个非零元素,m是非零元素的个数。
A(i,1)表示第i个非零元素所在行。
A(i,2)表示第i个非零元素所在列。
A(i,3)表示第i个非零元素的实部。
A(i,4)表示第i个非零元素的虚部。
(3)带状稀疏矩阵的稀疏存储
· 稀疏矩阵有两种:无规则结构的稀疏矩阵,有规则结构的。
· 带状稀疏矩阵是指所有非零元素集中在对角线上的矩阵。
[B,d]=spdiags(A)
:从带状稀疏矩阵A中提取全部 非零对角线元素 赋给矩阵B,及这些非零对角线的 位置向量 d。
A=spdiags(B,d,m,n)
:
–产生带状稀疏矩阵的稀疏存储矩阵A。
–m,n为原带状稀疏矩阵的行数列数。
–矩阵B的第i列即为原带状稀疏矩阵的第i条非零对角线。
–向量d为原带状稀疏矩阵所有非零对角线的位置。
(4)单位稀疏矩阵
speye(m,n)
返回一个m*n的稀疏存储单位矩阵。
>>speye(3)
ans =
(1,1) 1
(2,2) 1
(3,3) 1
3.稀疏矩阵的应用实例