已阅读5页,还剩64页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Matlab矩阵的生成与运算,安徽工业大学数理学院侯为根wghou,【例1-1】表示矩阵,一、MATLAB矩阵的生成,1、直接输入法,将矩阵的元素用方括号括起来,按矩阵行的顺序输入各元素,同一行的各元素之间用空格或逗号分隔,不同行的元素之间用分号分隔。,A=1,2,3;4,5,6;7,8,0,A=1,2,3;45,6;7,80,【例1-2】试输入复数矩阵,需要避免的语句,B=1+9*i,2+8*i,3+7*j;4+6*j5+5*i,6+4*i;7+3*i,8+2*i,i,B=1+9*i,2+8*i,3+7*j;4+6*j5+5*i,6+4*i;7+3*i,8+2*i,i,2、利用M文件建立矩阵,对于比较大且比较复杂的矩阵,可以为它专门建立一个M文件。,【例1-3】利用M文件建立mymat矩阵。,(1)启动有关编辑程序或MATLAB文本编辑器,并输入待建矩阵.,(2)把输入的内容以纯文本方式存盘(设文件名为mymat.m)。,(3)运行该M文件,就会自动建立一个名为mymat的矩阵,可供以后使用。,A=410162;82947;75715;03454;23131303,3、利用MATLAB函数建立矩阵,几个产生特殊矩阵的函数:zeros、ones、eye、rand、randn、pascal、magic(n)、vander(V)、hilb(n)、toeplitz(x,y)、compan(P)。,这几个函数的调用格式相似,下面以产生零矩阵的zeros函数为例进行说明。其调用格式是:,zeros(m)产生mm零矩阵,zeros(m,n)产生mn零矩阵。,zeros(size(A)产生与矩阵A同样大小的零矩阵,相关的函数有:length(A)给出行数和列数中的较大者,即length(A)=max(size(A);ndims(A)给出A的维数。,【例1-4】分别建立33、32和与矩阵A同样大小的零矩阵。,(1)建立一个33零矩阵:zeros(3),(2)建立一个32零矩阵:zeros(3,2),(3)建立与矩阵A同样大小零矩阵:zeros(size(A),此外,常用的函数还有reshape(A,m,n),它在矩阵总元素保持不变的前提下,将矩阵A重新排成mn的二维矩阵。,【例1-5】将4阶魔方阵形变为2行8列的矩阵,reshaps(magic(4),2,8),hilb(n)指令可以产生nn的Hilbert矩阵,Hilbert矩阵,Hilbert矩阵的特性:当矩阵变大时,其矩阵会接近奇异(即矩阵的行列式会接近于0),Hilbert矩阵常被用来评估各种逆矩阵计算方法的稳定性。,【例1-6】计算6阶hilbert矩阵的行列式,det(hilb(6),x1=rand(10000,1);x2=randn(10000,1);subplot(2,1,1);hist(x1,40);title(均匀分布);subplot(2,1,2);hist(x2,40);title(高斯分布);set(findobj(gcf,type,patch),EdgeColor,w);%改边线为白色,【例1-7】产生10000个均匀均匀与正态分布的随机数,产生随机数矩阵指令rand和randn,4、建立大矩阵,大矩阵可由方括号中的小矩阵建立起来。,A=123;456;780;,5、冒号表达式,冒号表达式的一般格式:v=s1:s2:s3,还可以用linspace函数产生行向量:linspace(a,b,n),linspace(a,b,n)与a:(b-a)/(n-1):b等价,C=A,eye(size(A);ones(size(A),A,A=A;123;1;2;3;4;,【例1-8】使用小矩阵构造大矩阵,【例1-9】用不同的步距生成(0,p)间向量,V1=0:0.2:pi,V3=0:-1:pi,V2=0:pi,V4=pi:-1:0,V5=0:0.2:pi,pi,V7=0:pi/100:pi,V6=linspace(0,pi,100),二、对矩阵元素的操作,矩阵A中,位于第i行、第j列的元素可表示为A(i,j)i与j即是此元素的下标(Subscript)或索引(Index)MATLAB中所有矩阵的内部表示法都是以列为主的一维向量A(i,j)和A(i+(j-1)*m)是完全一样的m为矩阵A的列数,1、矩阵的索引或下标,我们可以使用一维或二维下标来存取矩阵,A=410162;82947;75715;03454;23131303,2、矩阵元素,MATLAB允许用户对一个矩阵的单个元素进行赋值和操作。例如A(3,2)=200,也可以采用矩阵元素的序号来引用矩阵元素。矩阵元素按列编号,先第一列,再第二列,依次类推。,以mn矩阵A为例,矩阵元素A(i,j)的序号为:(j-1)*m+i。其相互转换关系也可利用sub2ind和ind2sub函数求得。,3.子矩阵提取,(1)利用冒号表达式获得子矩阵,A(:,j)表示取A矩阵的第j列全部元素;A(i,:)表示A矩阵第i行的全部元素;A(i,j)表示取A矩阵第i行、第j列的元素。,A(i:i+m,:)表示取A矩阵第ii+m行的全部元素;A(:,k:k+m)表示取A矩阵第kk+m列的全部元素,A(i:i+m,k:k+m)表示取A矩阵第ii+m行内,并在第kk+m列中的所有元素。,利用一般向量和end运算符等来表示矩阵下标,从而获得子矩阵。end表示某一维的末尾元素下标。,【例2-1】子矩阵提取,提取矩阵A全部奇数行,所有列,将矩阵A左右翻转,提取矩阵A的3,2,1行、2,3,4列构成子矩阵,将矩阵A2,4列全变为1,B1=A(1:2:end,:),B3=A(:,end:-1:1),B2=A(3,2,1,2:4),A(:,2,4)=ones(4,2),4、利用空矩阵删除矩阵的元素,在MATLAB中,定义为空矩阵。给变量X赋空矩阵的语句为X=。,【注意】X=与clearX不同,clear是将X从工作空间中删除,而空矩阵则存在于工作空间,只是维数为0。,将某些元素从矩阵中删除,采用将其置为空矩阵的方法就是一种有效的方法。,【例2-2】将矩阵A2,4行删去,A(2,3,:=,5矩阵翻转,左右翻转:,上下翻转:,旋转90o:,如何旋转180o?,fliplr(A),flipud(A),rot90(A),rot90(rot90(A),A=1234;5678;9101112A1=diag(A)A2=diag(A,1)A3=diag(A,-1)B1=diag(A1,1)B2=diag(A3,1),6选取对角元素,7选取上下)三角元阵,c1=tril(A)c2=tril(A,1)c3=tril(A,-1)d1=triu(A)d2=triu(A,1)D3=triu(A,-1),1、直接创建稀疏矩阵,例:,S=sparse(i,j,s,m,n),其中i和j分别是矩阵非零元素的行和列指标向量,s是非零元素值向量,m,n分别是矩阵的行数和列数。,S2=sparse(122344,313423,.533143,4,4),稀疏矩阵的输入与生成,2、从文件中创建稀疏矩阵,例:设文本文件T.txt中有三列内容,第一列是一些行下标,第二列是列下标,第三列是非零元素值。,135213233341424433,利用load和spconvert函数可以从包含一系列下标和非零元素的文本文件中输入稀疏矩阵。,loadT.txtS=spconvert(T),3、稀疏带状矩阵的创建,例:,S=spdiags(B,d,m,n),其中m和n分别是矩阵的行数和列数;d是长度为p的整数向量,它指定矩阵S的对角线位置;B是全元素矩阵,用来给定S对角线位置上的元素,行数为min(m,n),列数为p。,B=rand(4,2);S3=spdiags(B,01,4,4),4、满矩阵与稀疏矩阵之间的转化,例:,S=sparse(A),A=full(S),A=0050;3030;0001;0430S=sparse(A)whos,1.数学运算,2.逻辑运算,三、Matlab基本运算,3.比较运算,4.位运算符,5.集合运算符,一、数学运算,MATLAB的基本算术运算有:(加)、(减)、*(乘)、/(右除)、(左除)、(乘方)、共轭转置()正号(+),负号(-),【注意】运算是在矩阵意义下进行的,单个数据的算术运算只是一种特例。,2.点运算,点运算符有.*、./、.和.。两矩阵进行点运算是指它们的对应元素进行相关运算,要求两矩阵的维参数相同。,1.基本算术运算,1.转置(.),幂次(.).共轭转置(),矩阵幂次()2.正号(+),负号(-)3.乘法(.*),元素右除(./),元素左除(.),矩阵乘法(*),矩阵右除(/),矩阵左除()4.加法(+),减法(-)5.冒号(:)(例如:x=1:2:5等),数学运算符之优先级:,同一类的运算符均具有相同的优先度(Priority),因此在计算上,是由左至右依次完成,矩阵的数学运算,矩阵的加减与一般标量(Scalar)的加减类似相加或相减的矩阵必需具有相同的维度,A=12345620;B=1324;C=A+BC1=A-B,例1:加减法运算,矩阵与纯量可以直接进行加减,MATLAB会直接将加减应用到每一个元素,A=12321+5,矩阵的加减法运算,矩阵的乘法与除法,标量对矩阵的乘或除,可比照一般写法,A=123;442;C=A/3B=2*A,欲进行矩阵相乘,必需确认第一个矩阵的列数(ColumnDimension)必需等于第二个矩阵的行数(RowDimension),例2:矩阵的乘法,A=1;2;B=3,4,5;C=A*B,矩阵除法,若A为非奇异方阵,则X=A-1B,若A为非奇异方阵,则X=BA-1,矩阵左除:AX=B,求XMATLAB求解:X=AB,最小二乘解,矩阵右除:XA=B,求XMATLAB求解:X=B/A最小二乘解,注:若A为非奇异方阵,则A-1在Matlab中为inv(A),矩阵的次方运算,矩阵的次方运算,可由“”来达成,但矩阵必需是方阵,其次方运算才有意义,A=magic(3);B=A2,例3:,复数矩阵z,其“共轭转置”矩阵(ConjugateTranspose)可表示成矩阵z,转置和共轭转置矩阵,i=sqrt(-1);%单位虚数z=1+i,2;3,1+2i;w=z%共轭转置(注意z后面的单引号),例4:矩阵共轭转置,i=sqrt(-1);%单位虚数z=1+i,2;3,1+2i;w=z.%单纯转置(注意z后面的句点及单引号),想得到任何矩阵z的转置(Transpose),则可表示成矩阵矩阵z.,例5:矩阵的转置,若z为实数,则z和z.的结果是一样的,2、点运算,矩阵对应元素的直接运算,例如,A=123;456;780,B=A.A,3MATLAB数组运算函数,1.规则:设X=(xij)mn,则f(X)=(f(xij)mn,sincostancotseccscasinacosatanacotasecacsc,2.常用数学函数,三角与反三角函数,exploglog10sqrtpow2,ceilfixfloorroundremsign,absangleconjimagreal,指数与对数,复变函数,取整函数,cart2sphcart2polpol2cartsph2pol,坐标转换,注:若要对函数进行矩阵运算,方法为:funm(X,f),4、MATLAB矩阵运算函数,size(A)%矩阵的大小,inv(A)%矩阵的逆,det(A)%矩阵的行列式,rank(A)%矩阵的秩,rref(A)%矩阵列的极大无关组,orth(A)%矩阵化为正交阵,trace(A)%矩阵的迹,chol(A)%三角分解,A=L*LT,lu(A)%A对称,A=L*U,U,S,V=svd(A)%A=U*S*V,qr(A)%A=q*r(q正交阵,r三角阵),norm(A,1|2|p|inf|fro)%矩阵的模,cond(A)%矩阵的条件数,4、MATLAB矩阵运算函数,eig(A)%A*x=*x,V,D=eig(A)%A*V=V*D,eig(A,B)%A*x=*B*x,V,D=eig(A,B)%A*V=B*V*D,例:设A=pascal(4),B=magic(4),并使用下列函数进行计算,向量的p-norm,一个向量a的p-norm可以定义为,p=2时,此即为向量a的长度,或称欧氏长度(EuclideanLength),欲求一向量的p-norm,可使用norm指令norm(x,p),a=34;x=norm(a,1)%x=7y=norm(a,2)%y=5z=norm(a,inf),注意:,矩阵A的p-norm可以定义如下:,例9:normMatrix,norm指令亦可用于计算矩阵的p-norm,A=123;456;789;norm(A,2),Cholesky分解是将一个对称的正定矩阵分解为一个上三角矩阵和其转置的乘积。,X=pascal(5)R=chol(X)C=R*R,LU分解是将原正方(square)矩阵分解成一个上三角形矩阵或是排列(permuted)的上三角形矩阵和一个下三角形矩阵,这样的分解法又称为三角分解。,命令格式为:,L,U=lu(A),L,U,P=lu(A),例如:,B=132;-2-61;257L,U=lu(B)L*U,L,U,P=lu(B)P*L*U,QR分解法是将矩阵分解成一个正规正交矩阵与上三角形矩阵,矩阵A不必为正方矩阵。,A=1325;-2-616;2572Q,R=qr(A)Q*QQ*R,奇异值分解(sigularvaluedecomposition,SVD)是另一种正交矩阵分解法;SVD是最可靠的分解法,但是它比QR分解法要花上近十倍的计算时间。,U,S,V=svd(A),其中U和V代表二个相互正交矩阵,而S代表一对角矩阵。和QR分解法相同者,原矩阵A不必为正方矩阵。,A=1,2;3,1S,V,D=svd(A),矩阵的比较运算,=,ba=b,关系运算符的用法:,关系运算符的用法,A=123;456;78,0b=A5A(b),3、同维矩阵间比较;返回0-1矩阵,2、矩阵与一数比较返回0-1矩阵,例2:给出矩阵A中大与5的元素值,例3:接上例,设B=magic(3),B=magic(3);BA,find指令:可传回非零元素索引,显示一维索引或下标,元素索引,index=find(A5),可以将关系运算符返回的0-1矩阵,来进行矩阵的索(Indexing)求出在A矩阵中,满足AijBij的元素,x=012;003index=find(x)x(index),x(index)则是非零元素所形成的向量,要找出满足某条件的二维索引或下标,2维索引,idx1,idx2=find(x5),idx1和idx2分别是符合条件之矩阵元素的列索引(RowIndex)及行索引(ColumnIndex),例:如何找出介于7和11的元素?,x=magic(5)x(find(7=0).*y;%消去负半波p=sin(pi/3);y2=(y=p)*p+(y=a);endwhosx*,x3,x4,x5,x6都是在for-loop中产生的变量,分别代表维度为33、44、55、66的魔方阵,class或ischar指令:判断某一个变量是否为字符串,字符串的判断,chinese=今日事,今日毕out1=class(chinese)%out1的值是“char”,代表chinese是字符串变量x=chinese+1;out2=ischar(x)%out2的值是0,代表x不是一个字符串变量,2、一个变量来储存多个字符串,第一种方法是使用二维字符数组(TwoDimensionalCharacterArrays)必须先确认每个字符串(即每一行)的长度一样,否则就必须在短字符串结尾补上空格符,departments=ee;cs;econ%注意空格符的使用,用char指令储存多个字符串,departments=char(ee,cs,econ)%注意“()”及“,”的使用,得到结果和前例一样;,从二维字符数组抽取出字符串时,切记要使用deblank指令来移除尾部的空格符,departments=char(ee,cs,econ)dept1=departments(1,:)%(1,:)代表第一行的元素dept2=deblank(dept1)%使用deblank指令来移除尾部的空格符len1=length(dept1)%显示变量dept1的长度=4len2=length(dept2)%显示变量dept2的长度=2,例如:,3、字符串的比较、寻找、代换、分解与结合,str1=today;str2=tomorrow;str3=today;out1=strcmp(str1,str2)%比较两字符串str1和str2=0out2=strcmp(str1,str3)%比较两字符串str1和str3=1,strcmp(s1,s2):比较串s
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年天津辅警协警招聘考试真题附答案详解(培优)
- 2024年大理州辅警协警招聘考试备考题库含答案详解(轻巧夺冠)
- 2023年铜梁县辅警招聘考试真题附答案详解(典型题)
- 2023年鄂州辅警招聘考试真题(含答案详解)
- 2024年吕梁辅警协警招聘考试备考题库附答案详解(综合题)
- 2023年雅安辅警协警招聘考试真题及参考答案详解
- 2024年克州辅警招聘考试题库含答案详解(精练)
- 2024年大兴安岭辅警协警招聘考试真题及答案详解(典优)
- 2024年大理州辅警招聘考试题库含答案详解(培优a卷)
- 2023年连江县辅警招聘考试题库附答案详解
- 小学生冬季校园安全教育
- 学堂在线 运动与减脂塑形 结课考试答案
- 枣庄小区停车场管理办法
- 二中初高中贯通班数学试卷
- Oct4翻译后修饰对多能干细胞命运抉择的分子调控机制解析
- 公司货物抽检管理制度
- 食品加工企业的成本控制策略
- 2025年中国光敏药物行业市场前景预测及投资价值评估分析报告
- T/CECS 10400-2024固废基胶凝材料
- T/YNIA 002-2021生物降解非织造材料
- 5.《语文综合实践:点亮古籍之光+传承中华文脉》高二语文下学期同步课堂教学设计(高教版2023拓展模块上册)
评论
0/150
提交评论