版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Matlab矩阵的生成与运算安徽工业大学数理学院侯为根【例1-1】表示矩阵一、MATLAB矩阵的生成1、直接输入法将矩阵的元素用方括号括起来,按矩阵行的顺序输入各元素,同一行的各元素之间用空格或逗号分隔,不同行的元素之间用分号分隔。A=1,2,3;4,5,6;7,8,0A=1,2,3;4,5,6;7,8,0087654321A【例1-2】,试输入复数矩阵需要防止的语句B=1+9*i,2+8*i,3+7*j;,4+6*j,5+5*i,6+4*i;7+3*i,8+2*i,iB=1,+9*i,2+8*i,3+7*j;,4+6*j,5+5*i,6+4*i;7+3*i,8+2*i,iiiiiiiiiiB
2、28374655647382912、利用M文件建立矩阵对于比较大且比较复杂的矩阵,可以为它专门建立一个M文件。【例1-3】利用M文件建立mymat矩阵。(1),启动有关编辑程序或MATLAB文本编辑器,并输入待建矩阵.(2),把输入的内容以纯文本方式存盘(设文件名为mymat.m)。(3),运行该M文件,就会自动建立一个名为mymat的矩阵,可供以后使用。A=4,10,1,6,2;8,2,9,4,7;,7,5,7,1,5;0,3,4,5,4;23,13,13,0,3,3、利用MATLAB函数建立矩阵几个产生特殊矩阵的函数:zeros、ones、,eye、rand、randn、pascal、,m
3、agic(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的维数。指令指令说说 明明zeros(m,n)产生阶为产生阶为 mn, 元素全为元素全为0的矩阵的矩阵ones(m,n)产生阶为产生阶为 mn, 元素全
4、为元素全为1的矩阵的矩阵eye(n)产生阶为产生阶为 nn的单位阵的单位阵pascal(m,n)产生阶为产生阶为 mn 的的 Pascal 矩阵矩阵vander(m,n) 产生阶为产生阶为 mn 的的 Vandermonde 矩阵矩阵hilb(n)产生阶为产生阶为 nn 的的 Hilbert 矩阵矩阵rand(m,n)产生产生 0,1均匀分布的随机数矩阵均匀分布的随机数矩阵,其阶为其阶为 mnrandn(m,n)产生产生=0, =1的正态分布随机数矩阵的正态分布随机数矩阵,其阶为其阶为 mnmagic(n)产生阶为产生阶为nn的魔方阵的魔方阵diag(v)产生以向量产生以向量v为对角元素的对角
5、阵为对角元素的对角阵【例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,矩阵, 11jiHij,Hilbert矩阵Hilbert,矩阵的特性:,当矩阵变大时,其矩阵会接近奇异即矩阵的行列
6、式会接近于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,和,randn4、建立大矩阵大矩
7、阵可由方括号中的小矩阵建立起来。A=1,2,3;4,5,6;7,8,0;,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),AA=A;1,2,3;1;2;3;4;【例1-8】使用小矩阵构造大矩阵【例1-9】,用不同的步距生成,(0,p),间向量V1=0:0.2:piV3=0:-1:piV2=0:piV4=pi:-1:0V5=0:0.2:pi,piV7=0:pi/100:piV6=linspace(
8、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=4,10,1,6,2;8,2,9,4,7;,7,5,7,1,5;0,3,4,5,4;23,13,13,0,3,2,、矩阵元素MATLAB允许用户对一个矩阵的单个元素进行赋值和操作。例如,A(3,2)=200也可以采用矩阵元素的序号来引用矩阵元素。矩阵元素按列编号,先
9、第一列,再第二列,依次类推。以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运算符等来表示矩阵下标,从而获得子矩阵。
10、end表示某一维的末尾元素下标。,【例2-1】子矩阵提取提取矩阵A,全部奇数行,所有列将矩阵A,左右翻转提取矩阵A的,3,2,1,行、2,3,4,列构成子矩阵将矩阵A,2,4列全变为1B1=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=,与clear,X不同,clear是将X从工作空间中删除,而空矩阵那么存在于工作空间,只是维数为0。将某些元素从矩阵中删除,采用将其置为空矩阵的方法就是一种有效的方法。【例2-2】
11、将矩阵A,2,4行删去A(2,3,:=5,矩阵翻转左右翻转:上下翻转:旋转,90o:如何旋转180o?fliplr(A)flipud(A)rot90(A),rot90(rot90(A),A=1,2,3,4;5,6,7,8;9,10,11,12A1=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.,数学运算2.,逻辑运算三、,Matlab根本运算3.,
12、比较运算4.,位运算符5.,集合运算符一、数学运算MATLAB的根本算术运算有:(加)、(减)、*(乘)、/(右除)、(左除)、(乘方)、共轭转置正号+,负号-【注意】运算是在矩阵意义下进行的,单个数据的算术运算只是一种特例。2.,点运算点运算符有.*、./、.和.。两矩阵进行点运算是指它们的对应元素进行相关运算,要求两矩阵的维参数相同。,1.,根本算术运算1.转置.,幂次.共轭转置,矩阵幂次2.正号+,负号-3.乘法.*,元素右除./,元素左除.,矩阵乘法*,矩阵右除/,矩阵左除4.加法+,减法-5.冒号:例如:,x,=,1:2:5,等数学运算符之优先级:同一类的运算符均具有相同的优先度(P
13、riority),因此在计算上,是由左至右依次完成矩阵的数学运算,矩阵的加减与一般标量Scalar的加减类似,相加或相减的矩阵必需具有相同的维度,A,=,12,34,56,20;B,=,1,3,2,4;C,=,A,+,BC1=,A-B,例1:,加减法运算矩阵与纯量可以直接进行加减,MATLAB,会直接将加减应用到每一个元素,A=1,2,3,2,1,+,5矩阵的加减法运算矩阵的乘法与除法标量对矩阵的乘或除,可比照一般写法,A,=,1,2,3;,4,4,2;,C,=,A/3,B,=,2*A欲进行矩阵相乘,必需确认第一个矩阵的列数,Column,Dimension,必需等于第二个矩阵的行数Row,D
14、imension,例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,其“共轭转置矩阵(Conjugate,Transpose)可表示成矩阵z,转置和共轭转置矩
15、阵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,=1,2,3;4,5,6;7,8,0B,=,A.ABAC* .ijijijbac 087654321AAAB.,3MATLAB数组运算函数1.,规那么:设X=(xij
16、)mn,那么,f,(X)=(f,(xij)mnsin,cos,tan,cot,sec,csc,asin,acos,atan,acot,asec,acsc2.,常用数学函数三角与反三角函数exp,log,log10,sqrt,pow2ceil,fix,floor,round,rem,signabs,angle,conj,imag,real指数与对数复变函数取整函数cart2sph,cart2pol,pol2cart,sph2pol,坐标转换注:假设要对函数进行矩阵运算,方法为:funm(X,f)4、,MATLAB矩阵运算函数size(A),%矩阵的大小inv(A),%矩阵的逆det(A),%矩阵
17、的行列式rank(A),%矩阵的秩rref(A),%矩阵列的极大无关组orth(A),%矩阵化为正交阵trace(A),%矩阵的迹chol(A),%三角分解,A=L*LTlu(A),%A对称,A=L*U,U,S,V=svd(A),%A=U*S*Vqr(A),%A=q*r(q正交阵,r三角阵norm(A,1|2|p|inf|fro),%矩阵的模cond(A),%矩阵的条件数4、,MATLAB矩阵运算函数eig(A),%A*x=*xV,D=eig(A),%A*V=V*Deig(A,B),%A*x=*B*xV,D=eig(A,B),%A*V=B*V*D例:设A=pascal(4),B=magic(4
18、),并使用以下函数进行计算向量的p-norm一个向量a的p-norm可以定义为,11ip,aa/ppipp=2,时,此即为向量,a,的长度,或称欧氏长度Euclidean,Length,欲求一向量的p-norm,可使用norm指令norm(x,p)a,=,3,4;x,=,norm(a,1),%,x,=,7y,=,norm(a,2),%,y,=,5z,=,norm(a,inf),iia)norm(a,1ia)norm(a,imaxinf ,注意:,矩阵A的p-norm可以定义如下:ppxpxAxAmax例9:,normMatrixnorm,指令亦可用于计算矩阵的,p-normA,=,1,2,3;
19、,4,5,6;,7,8,9;norm(A,2)矩阵的比较运算,=,5aba=b关系运算符的用法:关系运算符的用法A=1,2,3;,4,5,6;7,8,0b=A5A(b)3、同维矩阵间比较;返回0-1矩阵2、矩阵与一数比较返回0-1矩阵例2:给出矩阵A中大与5的元素值例3:,接上例,设B=magic(3)B=magic(3);BAfind指令,:,可传回非零元素索引,显示一维索引或下标,元素索引index=find(A5),可以将关系运算符返回的0-1矩阵,来进行矩阵的索Indexing求出在A矩阵中,满足AijBij的元素,x,=,0,1,2;,0,0,3,index,=,find(x),x(
20、index),x(index)那么是非零元素所形成的向量,要找出满足某条件的二维索引或下标2维索引idx1,idx2=find(x5),idx1和idx2分别是符合条件之矩阵元素的列索引(Row,Index)及行索引(Column,Index)例:如何找出介于7和11的元素?x,=,magic(5)x(find(7x&x11),【例2.4,】产生5阶随机方阵A,其元素为10,90区间的随机整数,然后判断A的元素是否能被3整除并取出这些元素。,(1),生成5阶随机方阵A。A=fix(90-10+1)*rand(5)+10)(2),判断A的元素是否可以被3整除。P=rem(A,3)=0(3
21、),取出A中能被3整除的元素。A1=A(P)矩阵的逻辑运算MATLAB提供了3种逻辑运算符:逻辑变量&(与)、|(或)、(非)和xor异或。对,double,变量来说,非,0,表示逻辑,1设A与B为两个命题逻辑运算相应元素间的运算与运算或运算非运算异或运算,A&BA|BAXor(A,B)数值为1那么为True,数值为0那么为False当所有向量元素为真(非零),那么all指令传回1,否那么为0。当任一向量元素为真(非零),那么any指令传回1,否那么为0。,相关的指令有all及any:a,=,0,1,2,3,result1,=,all(a)retult2,=,any(a)res
22、ult3,=,any(a0),范例all,及,any,指令也可以接受矩阵输入,此时他们会对每一个行向量进行运算,【例2.5】在0,3区间,求y=sin(x)的值:要求消去负半波方法1:x=0:pi/100:3*pi;,y=sin(x);y1=(x2*pi).*y;,%消去负半波q=(xpi/3&x7*pi/3&x=0).*y;,%消去负半波p=sin(pi/3);y2=(y=p)*p+(y=a&t=a&t=z)转置:无论是中文或英文,每一个字符都会占用两个字节(2Bytes),故字符串变量t总共由35个字符构成,占用的内存总计为70个字节(70bytes),字符
23、的储存whos,指令:,检视字符串变量t所占用储存空间(whos变量)MATLAB,是以两个字节来储存一个字符,所以也可以支持中文码,而且中文的ASCII内码都会大于数字128,由于,MATLAB,将字符串以其相对应之,ASCII,内码即数字形式储存成一列向量,故假设对此字符串直接进行数值运算,MATLAB,会先将此字符串转成数值,再进行一般数值向量的运算,z=安徽工业大学,whos,zz=z+1char(z)eval,指令:,直接“执行某一特定字符串,其效果就如同直接在,MATLAB,指令窗口内输入此一特定字符串,eval,指令特别适用于在for-loop内自动产生有规律的变量名称,例如:c
24、lear,all,%,去除所有变量for,i,=,3:6eval(,x,int2str(i),.,=magic(,int2str(i),););,end,whos,x*,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、一个变量来
25、储存多个字符串,第一种方法是使用二维字符数组Two,Dimensional,Character,Arrays必须先确认每个字符串即每一行的长度一样,否那么就必须在短字符串结尾补上空格符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,的长度=4,len2,=,length(dept2),%,显示变量,dept2,的长度=2,例如:3、字符串的比较、寻找、代换、分解与结合str1,=,today;,str2,=,tomorrow;,str3,=,today;,out1,=,strcmp(str1,str2),%,比较两字符串,str1,和,str2,=,0out2,=,strcmp(str1,str3),%,比较两
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年陕西省商洛市商南县中考五模物理试题含解析
- 2026浙江绍兴市镜湖开发集团有限公司招聘2人笔试历年参考题库附带答案详解
- 2026浙江温州苍南县建设发展集团有限公司招聘工作人员笔试历年参考题库附带答案详解
- 2026年河北省武安市高一化学上册期末考试模拟卷附参考答案【培优B卷】
- 2026浙江宁波文旅会展集团有限公司第一批统筹招聘14人笔试历年参考题库附带答案详解
- 2026泸州老窖股份有限公司招聘12人笔试历年参考题库附带答案详解
- 2025年黑龙江省牡丹江市绥芬河市某国企招聘工作人员若干人备考题库答案详解
- 2026云计算服务市场竞争格局与行业垂直应用深度报告
- pc协议书和手机协议书
- 离婚协议书第六集内容
- 乒乓球课程教案
- 2025年生地会考试卷及答案湘潭
- 河南省西学中考试题目及答案
- 雨课堂在线学堂《长安与中国佛教期末复习题及答案》考核测试答案
- DB3311∕T 164─2023 中华鳖三段式养殖技术规范
- 东南大学成贤学院《大学物理A》2025 - 2026学年第一学期期末试卷(A卷)
- 2024-2025学年安徽省合肥六中高一(下)期末数学试卷(含答案)
- 重庆市护理三基三严考试题库(含答案)
- 郎溪直升班招生数学试卷
- 浙江科技学院《食物营养与健康》2023-2024学年第一学期期末试卷
- 河南省公路水运工程平安工地建设等级划分表、评价指南、评价标准
评论
0/150
提交评论