第4讲向量和矩阵PPT讲稿.ppt
第4讲向量和矩阵第1页,共29页,编辑于2022年,星期一n本讲教学目标本讲教学目标 掌握向量和矩阵的创建方法掌握向量和矩阵的创建方法 掌握向量和矩阵的运算掌握向量和矩阵的运算 区分矩阵和数组的差别区分矩阵和数组的差别 学会如何使用向量运算和矩阵运算函数学会如何使用向量运算和矩阵运算函数 掌握特殊矩阵的生成和稀疏型矩阵掌握特殊矩阵的生成和稀疏型矩阵 了解稀疏型矩阵和满矩阵的相互转换了解稀疏型矩阵和满矩阵的相互转换第2页,共29页,编辑于2022年,星期一n4.1 向量的创建方法向量的创建方法 向量的创建方法和一维数组类似。向量的创建方法和一维数组类似。n1)在命令窗口中直接输入向量)在命令窗口中直接输入向量 向量元素用向量元素用“”括起来,元素之间用空格、逗号或者分号括起来,元素之间用空格、逗号或者分号相隔。相隔。注意:用空格或逗号生成行向量;用分号生成列向量。注意:用空格或逗号生成行向量;用分号生成列向量。n例例1:a2=15,21,27,93,101 a2=15 21 27 93 101 a1=15;21;27;93;101;a1=15 21 27 93 101第3页,共29页,编辑于2022年,星期一n2)用冒号和函数来生成等差用冒号和函数来生成等差/等比元素向量。等比元素向量。n linspace/logspace 函数函数例例2:生成等差向量。:生成等差向量。vec1=10:5:60 vec1=10 15 20 25 30 35 40 45 50 55 60 vec2=linspace(10,60,11)vec2=10 15 20 25 30 35 40 45 50 55 60第4页,共29页,编辑于2022年,星期一n4.2 向量运算向量运算1)向量与数的四则运算向量与数的四则运算 n加、减法:向量中每个元素与数的加、减法运算。加、减法:向量中每个元素与数的加、减法运算。n乘、除法:向量中每个元素与数的乘、除法运算。乘、除法:向量中每个元素与数的乘、除法运算。例例3:vec1=80:-9:10 vec1=80 71 62 53 44 35 26 17 vec1+101 ans=181 172 163 154 145 136 127 118第5页,共29页,编辑于2022年,星期一n2)向量与向量之间的加减运算)向量与向量之间的加减运算 向量中的每个元素与另一个向量中相对应的元素的加、减法运算。向量中的每个元素与另一个向量中相对应的元素的加、减法运算。例例4:vec1=linspace(200,500,7)vec2=linspace(900,600,7)vec3=vec1+vec2 vec3=Columns 1 through 5 1100 1100 1100 1100 1100 Columns 6 through 7 1100 1100第6页,共29页,编辑于2022年,星期一n3)点积、叉积和混合积)点积、叉积和混合积 两个向量的点积等于其中一个向量的模与另一两个向量的点积等于其中一个向量的模与另一个向量在这个向量的方向上的投影的乘积。个向量在这个向量的方向上的投影的乘积。叉积的几何意义是指过两个相交向量的交点,叉积的几何意义是指过两个相交向量的交点,并与此两向量所在平面垂直的向量。并与此两向量所在平面垂直的向量。向量的混合积的几何意义是它的绝对值表示以向量的混合积的几何意义是它的绝对值表示以向量为棱的平行六面体的体积。向量为棱的平行六面体的体积。第7页,共29页,编辑于2022年,星期一n例例5-1:点积运算点积运算 x1=11 22 33 44;x2=1,2,3,4;a=dot(x1,x2)a=330sum(x1.*x2)ans=330n例例5-2:叉积运算叉积运算x1=11 22 33x1=11 22 33x2=1 2 3x2=1 2 3x3=cross(x1,x2)x3=0 0 0 第8页,共29页,编辑于2022年,星期一n4.3 矩阵的创建方法矩阵的创建方法 a.直接输入直接输入n矩阵以矩阵以“”为首尾,行与行之间用分号为首尾,行与行之间用分号“;”或或按回车键;每行中的元素用逗号按回车键;每行中的元素用逗号“,”或空格分隔;或空格分隔;当矩阵中没有任何元素时,该矩阵被称作当矩阵中没有任何元素时,该矩阵被称作“空阵空阵”。例例6:A=1,sqrt(25),9,13 2,6,10,7*2 3+sin(pi),7,11,15 4,abs(-8),12,16n B=1,2,3,4;5,6,7,8;9,10,11,12;13,14,15,16nA=1 5 9 13 2 6 10 14 3 7 11 15 4 8 12 16nB=1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16第9页,共29页,编辑于2022年,星期一nb.利用内部函数产生矩阵利用内部函数产生矩阵%ones 生成全部元素为生成全部元素为 1 的矩阵的矩阵n例例7-1:F=5*ones(3)nF=5 5 5 5 5 5 5 5 5%zeros 生成全部元素为生成全部元素为0的矩阵的矩阵n例例7-2:Z=zeros(2,4)nZ=0 0 0 0 0 0 0 0第10页,共29页,编辑于2022年,星期一nc.利用利用M文件产生矩阵文件产生矩阵(1)启动有关编辑程序或启动有关编辑程序或 MATLAB 文本编辑器,并文本编辑器,并输入待建矩阵输入待建矩阵;(2)把输入的内容以纯文本方式存盘把输入的内容以纯文本方式存盘(设文件名为设文件名为mymatrix.m);(3)在在 MATLAB 命令窗口中输入命令窗口中输入mymatrix,即运,即运行该行该M文件,就会自动建立一个矩阵,可供以后使用。文件,就会自动建立一个矩阵,可供以后使用。第11页,共29页,编辑于2022年,星期一nd.从外部数据文件调入矩阵从外部数据文件调入矩阵 用用load命令输入命令输入 用用Import 菜单输入菜单输入第12页,共29页,编辑于2022年,星期一n4.4 矩阵的操作矩阵的操作 4.4.1 矩阵元素的引用和修改矩阵元素的引用和修改 n在在MATLAB中,矩阵元素按列存储,先第一列,再第二列,中,矩阵元素按列存储,先第一列,再第二列,依次类推。依次类推。n1)通过下标引用矩阵的元素)通过下标引用矩阵的元素n2)矩阵元素的序号来引用矩阵元素)矩阵元素的序号来引用矩阵元素 例例8:A=1,2,3;4,5,6;n引用:引用:A(3)=2,A(1,2)=2n修改:修改:A(3)=9 或或 A(1,2)=9 对对mn矩阵矩阵A,元素,元素A(i,j)序号为序号为(j-1)*m+i。第13页,共29页,编辑于2022年,星期一n4.4.2 利用空矩阵删除矩阵的元素利用空矩阵删除矩阵的元素 在在MATLAB中,定义中,定义 为空矩阵。为空矩阵。给变量给变量X赋空矩阵的语句为赋空矩阵的语句为X=。注意:注意:X=与与clear X不同。不同。nclear是将是将X从工作空间中删除,从工作空间中删除,n而空矩阵则存在于工作空间中,只是维数为而空矩阵则存在于工作空间中,只是维数为0。第14页,共29页,编辑于2022年,星期一n4.4.3 利用冒号表达式获得子矩阵利用冒号表达式获得子矩阵 获得某行或某列获得某行或某列nA(:,j)取取A矩阵第矩阵第j列的全部元素列的全部元素nA(i,:)取取A矩阵第矩阵第i行的全部元素行的全部元素 获得子矩阵获得子矩阵nA(i:i+m,:)取矩阵第取矩阵第ii+m行的全部元素行的全部元素nA(:,k:k+m)取矩阵第取矩阵第kk+m列的全部元素列的全部元素nA(i:i+m,k:k+m)取矩阵第取矩阵第ii+m行内,并在第行内,并在第kk+m列中的所有元素列中的所有元素n利用一般向量和利用一般向量和 end 运算符,运算符,end 表示某一维的末尾元素下表示某一维的末尾元素下标。标。第15页,共29页,编辑于2022年,星期一n4.5 矩阵的运算矩阵的运算矩阵运算遵循线性代数中基本的运算法则:矩阵运算遵循线性代数中基本的运算法则:n加减运算必须在具有相同行列的矩阵之间进行;加减运算必须在具有相同行列的矩阵之间进行;n只有当矩阵只有当矩阵 A 的列数和矩阵的列数和矩阵 B 的行数相同时,才可进的行数相同时,才可进行矩阵行矩阵 A 和和 B 的乘法运算;的乘法运算;n乘方运算只有在矩阵为方阵时才有意义;乘方运算只有在矩阵为方阵时才有意义;n当一个矩阵和一个标量(当一个矩阵和一个标量(11的矩阵)进行运算时,的矩阵)进行运算时,其结果将是此标量和矩阵中的每一个元素其结果将是此标量和矩阵中的每一个元素“相加相加”、“相减相减”、“相乘相乘”、“相除相除”;n矩阵有两种除法运算:左除和右除。矩阵有两种除法运算:左除和右除。第16页,共29页,编辑于2022年,星期一n矩阵的除法矩阵的除法左除和右除,分别表示为左除和右除,分别表示为 和和/。n若若A矩阵是非奇异方阵,则矩阵是非奇异方阵,则AB和和B/A可以实现。可以实现。nAB=inv(A)*B,B/A=B*inv(A)。例例9:A=8,1,6;3,5,7;4,9,2;B=1,1,1;1,2,3;1,3,6;AB C=inv(A)*B A/B D=A*inv(B)nans=0.0667 0.0500 0.0972 0.0667 0.3000 0.6389 0.0667 0.0500 -0.0694nC=0.0667 0.0500 0.0972 0.0667 0.3000 0.6389 0.0667 0.0500 -0.0694nans=27 -31 12 1 2 0 -13 29 -12nD=27 -31 12 1 2 0 -13 29 -12第17页,共29页,编辑于2022年,星期一n4.5.1 矩阵运算和数组运算比较矩阵运算和数组运算比较矩阵运算和数组运算有着显著的不同,属于两种不矩阵运算和数组运算有着显著的不同,属于两种不同的运算。同的运算。n矩阵运算是从矩阵的整体出发,按照线性代数的运算矩阵运算是从矩阵的整体出发,按照线性代数的运算规则进行,有着明确而严格的数学规则;规则进行,有着明确而严格的数学规则;n而数组运算是从矩阵的单个元素出发,针对每个元素而数组运算是从矩阵的单个元素出发,针对每个元素进行的运算。进行的运算。对于加法和减法而言,矩阵运算和数组运算相同;对于加法和减法而言,矩阵运算和数组运算相同;对于乘法和除法而言,矩阵和数组的运算有着显著对于乘法和除法而言,矩阵和数组的运算有着显著的不同。的不同。第18页,共29页,编辑于2022年,星期一n4.5.2 常用矩阵运算函数常用矩阵运算函数矩阵分解函数矩阵分解函数第19页,共29页,编辑于2022年,星期一n4.6 特殊矩阵生成特殊矩阵生成 第20页,共29页,编辑于2022年,星期一n4.7 稀疏矩阵稀疏矩阵在实际应用中,往往会遇到只有少数非在实际应用中,往往会遇到只有少数非 0 元素的矩阵,元素的矩阵,我们称这些矩阵为稀疏矩阵。我们称这些矩阵为稀疏矩阵。为有效的存储和处理稀疏矩阵,为有效的存储和处理稀疏矩阵,MATLAB采用了一采用了一些优化技术:些优化技术:MATLAB中只存储稀疏矩阵中的非中只存储稀疏矩阵中的非 0 元素,并用行索引和列索引表明每个非元素,并用行索引和列索引表明每个非 0 元素在原元素在原矩阵中的位置;同样,矩阵中的位置;同样,MATLAB 中采用了一些专门中采用了一些专门的算法来处理稀疏矩阵,以避免对的算法来处理稀疏矩阵,以避免对 0 元素的运算,元素的运算,并且最大限度地减少中间结果中的非并且最大限度地减少中间结果中的非 0 元素。元素。第21页,共29页,编辑于2022年,星期一n4.7.1 稀疏矩阵的生成稀疏矩阵的生成MATLAB不会自动生成稀疏矩阵,必须利用相关不会自动生成稀疏矩阵,必须利用相关函数生成稀疏矩阵。函数生成稀疏矩阵。用于生成稀疏矩阵的函数如下表所示。用于生成稀疏矩阵的函数如下表所示。第22页,共29页,编辑于2022年,星期一n例例10:稀疏矩阵的生成稀疏矩阵的生成 A=eye(5)speye(size(A)ans=(1,1)1 (2,2)1 (3,3)1 (4,4)1 (5,5)1nA=1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1第23页,共29页,编辑于2022年,星期一n4.7.2 稀疏矩阵与满矩阵的相互转化稀疏矩阵与满矩阵的相互转化MATLAB提供了一些函数用于在稀疏矩阵和满矩提供了一些函数用于在稀疏矩阵和满矩阵之间进行转换,这些函数如下表所示。阵之间进行转换,这些函数如下表所示。第24页,共29页,编辑于2022年,星期一n例例11:稀疏矩阵与满矩阵之间的转化稀疏矩阵与满矩阵之间的转化 S(10,50)=82;S(32,14)=82;S(251,396)=25;I=find(S)生成生成S中非零元素的位置中非零元素的位置 I=3295 12309 99396第25页,共29页,编辑于2022年,星期一n4.7.3 稀疏矩阵的操作稀疏矩阵的操作大部分数学函数可用于稀疏矩阵,另外还有一些专大部分数学函数可用于稀疏矩阵,另外还有一些专门应用于稀疏矩阵的函数,如下表。门应用于稀疏矩阵的函数,如下表。第26页,共29页,编辑于2022年,星期一n例例12:稀疏矩阵的操作稀疏矩阵的操作 v=6 2 7 8;S=diag(v,1);R=sparse(S);N=issparse(S)N=0 Y=issparse(R)Y=1第27页,共29页,编辑于2022年,星期一n4.7.4 矩阵运算和数组运算比较矩阵运算和数组运算比较矩阵运算和数组运算有着显著的不同,属于两种不同矩阵运算和数组运算有着显著的不同,属于两种不同的运算。的运算。n矩阵运算是从矩阵的整体出发,按照线性代数的运算规则矩阵运算是从矩阵的整体出发,按照线性代数的运算规则进行,有着明确而严格的数学规则;进行,有着明确而严格的数学规则;n而数组运算是从矩阵的单个元素出发,针对每个元素进行的而数组运算是从矩阵的单个元素出发,针对每个元素进行的运算。运算。对于加法和减法而言,矩阵运算和数组运算相同;对对于加法和减法而言,矩阵运算和数组运算相同;对于乘法和除法而言,矩阵和数组的运算有着显著的不于乘法和除法而言,矩阵和数组的运算有着显著的不同。同。第28页,共29页,编辑于2022年,星期一 本节完,谢谢!本节完,谢谢!第29页,共29页,编辑于2022年,星期一