matlab实验三_第1页
matlab实验三_第2页
matlab实验三_第3页
matlab实验三_第4页
matlab实验三_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1nMATLAB的所有数值功能都是以(复)矩阵为基本单元进行的,向量和标量都作为特殊的矩阵来处理,向量看作是仅有一行或一列的矩阵,标量看作是11的矩阵。实验三 矩阵运算2 矩阵运算简介nMATLAB中数组和矩阵是两个不同的概念,确切的说矩阵是数组的一个特例,是二维的数值型数组,表示了一种线性变换的关系。n在MATLAB 中,从运算的角度看,矩阵运算从矩阵的整体出发,采用线性代数的运算规则,数组运算从数据的元素出发,针对每个元素进行运算。3MATLABMATLAB中创建矩阵应遵循的原则:中创建矩阵应遵循的原则:n矩阵的元素必须在方括号矩阵的元素必须在方括号“”中;中; n矩阵的同行元素之间用空格

2、或逗号矩阵的同行元素之间用空格或逗号“,”分隔;分隔;n矩阵的行与行之间用分号矩阵的行与行之间用分号“;”或回车符分隔;或回车符分隔; n矩阵的尺寸不必预先定义;矩阵的尺寸不必预先定义; n矩阵元素可以是数值、变量、表达式或函数;矩阵元素可以是数值、变量、表达式或函数;n无任何元素的空矩阵也是合法的。无任何元素的空矩阵也是合法的。 矩阵的创建42、矩阵的创建方法:(1)命令窗口直接输入元素序列创建矩阵。(2)在M文件中用MATLAB语句创建矩阵。(3)通过MATLAB内部函数创建矩阵。(4)通过外部数据文件导入创建矩阵。5 n命令窗口直接输入命令窗口直接输入: : 具体方法如下:将矩阵的元素用

3、方括号括起来,按矩具体方法如下:将矩阵的元素用方括号括起来,按矩阵行的顺序输入各元素,矩阵的同行元素之间用空格或阵行的顺序输入各元素,矩阵的同行元素之间用空格或逗号逗号“,”,”分隔,矩阵的行与行之间元素用分号分隔,矩阵的行与行之间元素用分号“;”;”或或回车符分隔;回车符分隔; X=1 2 3;4 5 6;7 8 9 Y=1,2,3;4,5,6;7,8,9 有运算表达式的矩阵有运算表达式的矩阵 Z=sin(pi/2),8*4;log(10),exp(2) 方法一: 命令窗口直接输入 6方法二: 通过M文件创建矩阵n当矩阵的规模较大时,直接输入法就力不从心,出现差错也不容易修改。因此可以使用M

4、文件生成矩阵。n方法:建立一个M文件,其内容是生成矩阵的命令,在MATLAB的命令窗口中输入此文件名,即将矩阵调入工作空间(写入内存)。7方法二: 通过M文件创建矩阵n例3-2 用建立M文件的方式生成矩阵 (1) 建立M文件mydata.m内容如下 function A=mydata A=1,2,3;4,5,6;7,8,9 %生成矩阵 A=1,2,3;4,5,6;7,8,9 (2) 运行M文件mydata.m mydata 则生成矩阵A。 8方法三:通过函数创建矩阵nMATLAB中提供了一些内部函数来生成特殊矩阵如eye生成单位阵,zeros生成全零阵等,n常用的生成特殊矩阵的函数将在后面介绍

5、。9 矩阵运算n主要介绍矩阵的算术运算、关系运算、逻辑运算和常用的有关矩阵的其他运算(矩阵的逆,矩阵的秩、矩阵的分解等)。 10 矩阵的算术运算1、矩阵的加(+)减(-)运算:nAB 矩阵A和矩阵B的和与差,即矩阵相应位置的元素相加、减。 进行加减运算的矩阵,要求维数相同,即行数和列数分别相等,如果A与B大小不同,MATLAB将自动给出错误信息。 A和B其中之一可以是标量,表示矩阵中的每个元素分别与标量相加减,结果为矩阵。 11 矩阵的算术运算例3-4 求A+B,A-2 例3-5 两个矩阵如下所示,维数不同,求两者相 减的差。132352423 ,543432321BA321,54343232

6、1BA12 A=1,2,3;2,3,4;4,5,6; B=3,2,4;2,5,3;2,3,1; A+Bans = 4 4 7 4 8 7 6 8 7 B+2ans = 5 4 6 4 7 5 4 5 3 A-2ans = -1 0 1 0 1 2 2 3 4 C=2,5,8;A+C? Error using = plusMatrix dimensions must agree.132、矩阵的乘法(*)和点乘(.*)nA*B 矩阵A和B的乘法。A和B其中之一可以是标 量,表示该标量与矩阵每个元素相乘。当A、B均为矩阵时,要求两矩阵有相邻公共阶。nA.*B 矩阵A和B的对应位置元素相乘,要求A和B

7、维数相同。A和B其中之一可以为标量,表示该标量与矩阵每个元素相乘。 14例3-6 求A*5, A.*5,A*B,A.*B。132352423 ,543432321BA A*5ans = 5 10 15 10 15 20 20 25 30 A.*5ans = 5 10 15 10 15 20 20 25 30 A*Bans = 13 21 13 20 31 21 34 51 37 A.*Bans = 3 4 12 4 15 12 8 15 6153、 矩阵的左除()、右除(/)和矩阵的点除法(.,./)n AB 相当inv(A)*B(A的逆阵左乘B),可以利用矩阵左除求解 线性方程组AX=b,X

8、=Ab。如果A奇异阵或接近奇异, MATLAB将会给出警告信息。nA/B 大体相当于A*inv(B),但在计算方法上存在差异. nA./B 矩阵A的元素除以矩阵B的对应元素,即等于A(i,j)/B(i,j), 要求A和B为同维矩阵,或其中之一为标量。nA.B 矩阵B的元素除以矩阵A的对应元素,即等于B(i,j)/A(i,j), 要求A和B为同维矩阵,或其中之一为标量。n同阶对应元素进行相除 A./B = B.A) (/ABBA16n例3-7 , 求AB, B/A, A./C, A.C A.Cans= 1.0000 1.0000 1.0000 Inf 5.0000 Inf 2.3333 4.00

9、00 9.0000n注意:注意:在A.B的结果中,“Inf”表示无穷大,在MATLAB中,被零除或浮点溢出都不按错误处理,只是给出警告信息,同时用“Inf”标记。243654321C ,121 ,123010321BA174、 矩阵的幂运算:nAB A的B次方。 (1)A和B都是标量时,表示标量A的B次幂。 (2)A为矩阵,B为标量时要求A必须是方阵。 (3)当A为标量,B为矩阵时,要求B为方阵。 其中V为方阵A的特征向量矩阵, 为方阵A的特征值对角矩阵。(4)A和B都是矩阵时,无定义。1*1VAAVBAnnD1185、矩阵的点幂运算:. A.B 等于A(i,j)B(i,j),A和B维数相同或

10、其中一个为标量。例3-8 ,求:A3, A1.5, V,D=eig(A),C=V*(D.1.5)*V(-1),A.3,3.A,3p ,132352423 ,133212321BA196、矩阵的转置: nA矩阵的转置是把矩阵的行换成同序数的 列,得到新矩阵。如果A是复矩阵,则运 算结果是共轭转置。nA.也表示矩阵A的转置,当A为复矩阵时,不 求共轭。例3-9 求:A,A.,B,B. 4321,1221BiiA20矩阵函数1、矩阵的共轭nMATLAB中求矩阵的共轭矩阵的函数是conj,其调用格式为: B=conj(A) 求矩阵A的共轭矩阵B,复数矩阵的共轭与复数的共轭类似,复数矩阵的共轭矩阵与复数

11、矩阵的实部相同,虚部相反。例3-12 求:A、B的共轭矩阵 4321 ,1221BiiA212、矩阵的秩nMATLAB中求矩阵秩的函数是rank,其调用格式为: rank(A) 求矩阵A的秩。3、方阵的行列式求方阵的行列式的函数为det,其调用格式为det(A)4、矩阵的特征值分解nMATLAB中,求方阵的特征值和特征向量的函数为eig,调用格式如下: e=eig(A) 求方阵A的特征值组成的列向量e。225、矩阵的逆和伪逆nB=inv(A) 求矩阵A的逆。要求矩阵A是方阵且是非奇异的,如果A是病态的或接近奇异的,则会给出警告信息。nB=pinv(A) 求矩阵A的伪逆。如果A不是方阵或A是奇异

12、阵,则可以用函数pinv(A)求得A的伪逆。伪逆只有逆的某些性质,与逆不同。其求解是建立在奇异值分解和把小于默认误差的奇异值当作0的基础上计算的,且满足B*A=I或A*B=I中的一个。nC=rref(A) 求矩阵A的行简化阶梯形,如果不能确定矩阵A是否非奇异,我们可以用行简化阶梯形进行判断。23n在实际应用中很少显式地使用矩阵的逆。n在MATLAB中很少使用求逆法x=inv(A)*b来求线性方程组Ax=b的解,而使用矩阵除法x=Ab来求解。n因为MATLAB设计函数inv时,采用的是高斯消去法,而设计除法求解线性方程组时,并不求逆,而是直接用高斯消去法求解,有效减少了残差,并提高了求解速度。n

13、因此因此MATLABMATLAB推荐尽量使用除法运算,少用求逆运算。推荐尽量使用除法运算,少用求逆运算。注意:注意:24例3-13 矩阵的逆和伪逆% magic(n)函数返回一个由整数1到整数n2组成的nn矩阵。%该矩阵的各行与各列元素的和相等,n3 A=magic(3)A = 8 1 6 3 5 7 4 9 2 B=rand(3)B = 0.1472 -0.1444 0.0639 -0.0611 0.0222 0.1056 -0.0194 0.1889 -0.1028 A*Bans = 1.0000 0 -0.0000 -0.0000 1.0000 0 0.0000 0 1.000025 C

14、*Dans = 1.0000 0.0000 0.0000 1.0000 D*Cans = 0.6668 0.2909 0.3709 0.2909 0.7461 -0.3238 0.3709 -0.3238 0.5871 C=rand(2,3)C = 0.8147 0.1270 0.6324 0.9058 0.9134 0.0975 D=pinv(C)D = 0.5492 0.2421 -0.6520 0.9075 1.0047 -0.494126 矩阵的特殊操作1 常用的特殊矩阵常用的特殊矩阵1、空矩阵n空矩阵由下列命令创建:nA= 空阵中不包括任何元素,是00阶的矩阵;空阵可以在MATLAB

15、的运算中传递。nMATLAB中还定义了空向量。当nA=1,2,3,4,5;6,7,8,9,10;11,12,13,14,15;16,17,18,19,20;A(2:3,4:5)ans= 9 10 14 15 A(1,2,2,4)ans = 2 4 7 931n还可以利用一般向量和end运算符来表示矩阵下标,end 表示矩阵某维的末尾元素下标。例如: A(end,:) %取A最后一行 ans = 16 17 18 19 20 A(1,4,3:end) %取A第1,4行中第3列到最后一列的元素 ans = 3 4 5 18 19 2032n还有一种经常用到的命令是A(:) ,A(:)在赋值语句的右

16、端表示由矩阵A的元素按列的顺序排成的列向量。例如: A=1,2;3,4 b=A(:) b = 1 3 2 433n如果A(:)出现在赋值语句的左端,表示用一个向量对矩阵A进行赋值,此时矩阵A必须事先存在。如,A是上述矩阵,那么A(:)=5:8,表示行向量(5,6,7,8)的4个元素依次按照列顺序给A的元素赋值,保持A的维数不变。 A= 5 7 6 8342、部分扩充 (1)单个矩阵的扩充n对一个矩阵的单个元素进行赋值和操作,如:nA(3,2)=200 % 表示将矩阵A的第3行第2列元素赋值为200n如果给出的行值和列值大于原矩阵的行数和列数,MATLAB自动扩展原矩阵,扩展后未赋值的元素置为0

17、。35例3-17 单个矩阵扩充A=1,2,3;4,5,6; A(2,3)=10A = 1 2 3 4 5 10A(4,5)=10A = 1 2 3 0 0 4 5 6 0 0 0 0 0 0 0 0 0 0 0 1036(2)多个矩阵组成大矩阵n大矩阵可以由多个小矩阵按行列排列在方括号中建立。如: C=A,eye(size(A);ones(size(A),A,则 即987654321AAAsizeonesAsizeeyeAC)()(987111654111321111100987010654001321C373、部分删除、部分删除 n利用空矩阵的特性,可以从一个矩阵中删除部分行和部分利用空矩阵

18、的特性,可以从一个矩阵中删除部分行和部分列元素。如:列元素。如:A A是一个是一个4 45 5的矩阵,的矩阵,A(:,3,4)= A(:,3,4)= 表示表示删除删除A A的第的第3 3列和第列和第4 4列元素。列元素。 例例3-18 3-18 矩阵的部分删除矩阵的部分删除 A=1,2,3;4,5,6;7,8,9 A=1,2,3;4,5,6;7,8,9 A = A = 1 2 3 1 2 3 4 5 6 4 5 6 7 8 9 7 8 9 A(1,3,:)= A(1,3,:)= A = A = 4 5 6 4 5 6384、部分修改 n当矩阵的角标出现在等号左端时,表示对原矩阵中的部分或全部元

19、素重新赋值。n如:A(1,3,:)=B(1,2,:) 表示将矩阵A的第1、3行用矩阵B的1,2行代替。 例3-19 矩阵的部分修改 A=1,2,3;4,5,6;7,8,9; B=zeros(4,3); A(1,3,:)=B(1,2,:) A = 0 0 0 4 5 6 0 0 0395、矩阵的变维nMATLA可以实现矩阵元素的重新排列,以实现矩阵尺寸或维数的变化。根据MARLAB矩阵元素的排列顺序规则,重新排列的元素按照先排列,再排行,然后排列第三维,第四维的顺序排列。n命令:C=reshape(A,m,n) A为原始矩阵,C为变维后的矩阵,m,n等分别为新矩阵各维的阶数(行、列等)。新矩阵的

20、各维阶数的乘积必须与原矩阵的各维阶数的乘积相同。40例3-20 矩阵的变维A=1:12; reshape(A,3,4)ans = 1 4 7 10 2 5 8 11 3 6 9 1241 6、矩阵的翻转和旋转n对矩阵进行翻转和旋转的函数如下:nB=fliplr(A) 对矩阵A进行左右翻转生成矩阵B,如果A是行向量,则返回一个大小和A 相同,元素的排列顺序和A相反的行向量;如果A是列向量,返回A本身。nB=flipud (A) 对矩阵A进行上下翻转生成矩阵B,如果A是行向量,返回A本身;如果A是列向量,则返回一个大小和A相同,元素的排列顺序和A相反的列向量。nB=flipdim(A,dim) 矩

21、阵A的第n维翻转生成矩阵B,dim=1时,行翻转,相当于flipud; dim=2时,列翻转,相当于fliplr。42nB=rot90(A) 将矩阵A逆时针旋转90。生成矩阵B。nB=rot90(A,k) 将矩阵A逆时针旋转k*90。生成矩阵B,k是整数。43 例3-21 对矩阵进行翻转和旋转 A=1,2,3;4,5,6 ; flipud(A)ans = 4 5 6 1 2 3 flipdim(A,1)ans = 4 5 6 1 2 3 fliplr(A)ans = 3 2 1 6 5 4 flipdim(A,2)ans = 3 2 1 6 5 4 rot90(A)ans = 3 6 2 5 1 4 rot90(A,2)ans = 6 5 4 3 2 1 rot90(A,-1)ans = 4 1 5 2 6 3654321A447、矩阵的抽取n矩阵的抽取包括:抽取对角线元素(diag),抽取矩阵的上三角(triu)和下三角(tril)部分。函数的调用格式如下:nb=diag(A,n) 抽取矩阵A的第n条对角线生成列

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论