1、第三章 Matlab矩阵分析与处理 矩阵是Matlab的基本特征,也是Matlab重要特性,它的运算功能丰富而方便,前一章介绍的矩阵的建立及基本运算,本章介绍矩阵分析与处理。3.1 特殊矩阵Matlab中产生特殊矩阵的函数有:zeros:产生全0矩阵(零矩阵)ones:产生全1矩阵 (幺矩阵)eye:产生单位矩阵rand:%产生0-1间均匀分布的随机矩阵;randn%产生均值为0,方差为1的标准正态分布随机矩阵 调用格式:zeros(m):%产生mm零矩阵;zreos(m,n):%产生mn零矩阵;zreos(size(A):%产生于矩阵A同样大小的零矩阵其它的几个函数的调用格式相似例:分别建立
2、33,32,23零矩阵zeros(3)zeros(3,2)zeros(2,3)例:建立随机矩阵(1)在区间20,50内均匀分布的5阶矩阵(2)均值为0.6、方差为0.1的5阶正态分布随机矩阵解(1)z=20+(50-20)*rand(5)输出结果:z=48.5039 42.8629 38.4630 32.1712 21.7367 26.9342 33.6940 43.7581 48.0641 30.5860 38.2053 20.5551 47.6544 47.5071 44.3950 34.5795 44.6422 42.1462 32.3081 20.2958 46.7390 33.341
3、1 25.2880 46.8095 24.1667解(2)y=0.6+sqrt(0.1)*randn(5)输出结果(略)3.2 矩阵结构变换一、对角阵 对角线上有非0元素的矩阵为对角阵,对角线上元素相等的对角阵称为数量矩阵,对角线上的元素全为1称为单位矩阵。(1)提取矩阵对角线元素A=1 2 3;4 5 6;D=diag(A)diag(A)函数还有一种形式diag(A,k),可提取第k条对角线元素,主对角向上为1,向下为-1,类推。(2)构造对角矩阵diag(1 2-1 4)ans=1 0 0 0 0 2 0 0 0 0 -1 0 0 0 0 4输出结果:diag(1:3,1)diag(1:3
4、,-1)例:建立一个55矩阵,然后将第1行乘1第2行乘2,A=1 2 3 4 5;6 7 8 9 10;11 12 13 14 1516 17 18 19 20;21 22 23 24 25d=diag(1:5)B=d*A二、三角阵三角阵又分上三角阵、下三角阵A=7 13-28;2-9 8;0 34 5 B=triu(A)triu(A,k)表示第k条对角线以上保留,其它置0A=7 13-28;2-9 8;0 34 5tril(A)%取下三角tril(A,k)与triu(A,k)一样使用3.2.2 矩阵的转置和旋转A=7 13-28;2-9 8;0 34 5B=A旋转 A=7 13-28;2-9
5、 8;0 34 5 B=rot90(A)转置格式:fliplr(A)%左右翻转 flipud(A)%上下翻转3.3 矩阵求逆于线性方程组求解为单位矩阵)IIABBA(称B为A矩阵的逆矩阵A=7 13-28;2-9 8;0 34 5 B=inv(A)C=A*B为单位矩阵)若IIAAAA(11故A与A-1是互逆的,满秩矩阵才可能互逆。二、用矩阵求逆的方法求解线性方程组线性方程组:nnnnnnnbxaxaxabxaxaxa1221111212111其矩阵表达式:bAx nnnnnnnnbbbxxxxaaaaaaaaaA2121212222111211b 线性方程Ax=b的解bAx1例:用求逆矩阵的方
6、法解线性方程组6278294532zyxzyxzyxMatlab程序:A=1 2 3;1 4 9;1 8 27;b=5;-2;6;x=inv(A)*b输出结果:x=23.0000 -14.5000 3.6667x=Ab 也可用矩阵左除det(A)求A(方阵)行列式的值A=rand(5)B=det(A)三、矩阵的秩和迹求秩函数格式:rank(A):求矩阵A的秩1、矩阵的秩矩阵线形无关的行或列数称为矩阵的秩。何谓矩阵线形无关的行或列?求迹函数格式:trace(A):求矩阵A的迹2、矩阵的迹矩阵的迹为矩阵对角线元素之和,也为矩阵的特征值之和例如A=2 2 3;4 5-6;7 8 9trace(A)输
7、出结果A=2 2 3 4 5 -6 7 8 9ans=16四、向量和矩阵的范数向量的3种常用范数及其计算函数设向量V=(v1,v2,vn)(1)2-范数niivv122(2)1-范数niivv11(3)-范数inivv1max在Matlab中,求3种向量范数的函数分别为:norm(v)或norm(v,2):计算向量v的2-范数norm(v,1):计算向量v的1-范数norm(v,inf):计算向量v的-范数例如:v1=norm(v,1)%v的1-范数v2=norm(v)%v的2-范数vinf=norm(v,inf)%v的-范数Matlab中,3种矩阵范数的函数分别为norm(A,1):计算矩阵
8、A的1-范数norm(A):计算矩阵A的2-范数norm(A,inf):计算矩阵A的-范数3.5 矩阵的特征值与特征向量对于n阶方阵A,求数 和向量 ,使得 成立,满足等式的数 称为A的特征值,而向量 称为A的特征向量 A0)(IA的非0解 为 特征向量和特征值在科学研究和工程计算中广泛应用,Matlab提供和了计算矩阵A的特征向量和特征值函数有3种:E=eig(A):求矩阵A的全部特征值,构成向量Ev,D=eig(A):求矩阵A的全部特征值,构成对角阵,并求A的特征向量构成v的列向量v,D=eig(A,nobalance):与第二种类似,但第二种格式中线对A作相似变换后求矩阵的特征值和特征向
9、量,而格式3直接求矩阵A的特征值和特征向量。注:一个矩阵有无穷多个特征向量,而eig只求n个例如:A=1 1 0.5;1 1 0.25;0.5 0.25 2;v,D=eig(A)输出结果:v=0.7212 0.4443 0.5315 -0.6863 0.5621 0.4615 -0.0937 -0.6976 0.7103D=-0.0166 0 0 0 1.4801 0 0 0 2.5365例:用求特征值的方法解方程0182573245xxxx解题思路:先构造与方程对应的多项式的伴随矩阵A,在求A的特征值,A的特征值即为方程的根。P=3-7 0 5 2-18;A=compan(P)%求伴随矩阵x
10、1=eig(A)方法1P=3-7 0 5 2-18;x2=roots(P)方法23.6 矩阵的超越函数 Matlab中的数学运算函数,如sqrt、exp、log等都是作用在矩阵个元素上例如:A=4 2;3 6B=sqrt(A)Matalb还提供了一些直接作用于矩阵的超越函数,这些函数名都在上述内部函数名之间之后缀以m,并规定输入参数必须是方阵1、矩阵平方根sqrtm(A)计算矩阵的平方根 AA=4 2;3 6B=sqrtm(A)输出结果B=1.9171 0.4652 0.6978 2.3823 若A为是对称正定矩阵,则一定能算出它的平方根。若A矩阵含有负的特征根,则sqrtm(A)将会的到一个
11、复矩阵。A=4 9;16 25;X=eig(A)B=sqrtm(A)例如:输出结果:X=-1.4452 30.4452B=0.9421+0.9969i 1.5572-0.3393i 2.7683-0.6032i 4.5756+0.2053i2、矩阵对数logm 此函数的输入参数的条件与输出结果间的关系和函数sqrtm(A)完全一样 A=4 9;1 5L=logm(A)L=1.0639 2.4308 0.2701 1.3340输出结果:3、矩阵指数expm expm(A)的功能是求矩阵指数eA,expm函数与logm函数是互逆的。B=expm(L)输出结果:B=4.0000 9.0000 1.0000 5.00004、通用矩阵函数funm funm(A,fun)对矩阵A的计算由fun定义的函数矩阵的函数值。例如:A=4 9;1 5 funm(A,log)输出结果:ans=1.0639 2.4308 0.2701 1.3340例如:A=1.0639 2.4308;0.2701 1.3340 funm(A,exp)输出结果:ans=4.0000 9.0000 1.0000 5.0000