第 1 章 matlab基础第二次课.ppt
1.7.31.7.3矩阵的拆分矩阵的拆分1 1矩阵元素矩阵元素 对矩阵的单个元素进行赋值操作。例如,如果想将矩阵A A的第2行第3列的元素赋为76,则可以通过下面语句来完成:A(2,3)=76 这时将只改变该元素的值,而不影响其他元素的值。如果给出的行下标或列下标大于原来矩阵的行数和列数,则MATLAB将自动扩展原来的矩阵,并将扩展后未赋值的矩阵元素置为零。1.7.31.7.3矩阵的拆分矩阵的拆分例如:A=1,2,3;4,5,6;A(4,6)=100A=1 2 3 0 0 0 4 5 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1001.7.3 1.7.3 矩阵的拆分矩阵的拆分 在MATLAB中,也可以采用矩阵元素的序号序号来引用矩阵元素。矩阵元素的序号就是相应元素在内存中的排列顺序。矩阵元素按列编号,先第1列,再第2列,依次类推。例如:A=10,20,30;40,50,60;A(3)ans=201.7.3 1.7.3 矩阵的拆分矩阵的拆分 序号(Index)与下标(Subscript)是一一对应的,以mn矩阵A A为例,矩阵元素A A(i,j)的序号为(j1)*m+i。其相互转换关系也可利用sub2ind和ind2sub函数求得。例如:sub2ind(size(A),1,3)ans=5 size(A)函数返回包含两个元素的向量,分别是矩阵A A的行数和列数,即A是2行3列的矩阵,其中第1行第3列元素的序号为5。1.7.3 1.7.3 矩阵的拆分矩阵的拆分I,j=ind2sub(size(A),5)I=1j=3length(A):给出行数和列数中的较大者,即length(A)max(size(A)ndims(A):给出A的维数1.7.3 1.7.3 矩阵的拆分矩阵的拆分Reshape(A,m,n):在矩阵总元素保持不变的前提下,将矩阵A重新排成mn的二维矩阵。例如:X=linspace(0,11,12)*pi;%产生有12个元素的行向量xY=reshape(X,3,4)%利用向量x建立34矩阵yY=0 9.4248 18.8496 28.2743 3.1416 12.5664 21.9911 31.4159 6.2832 15.7080 25.1327 34.55751.7.3 1.7.3 矩阵的拆分矩阵的拆分2.2.矩阵的拆分矩阵的拆分(1)利用冒号表达式获得子矩阵 A(m,n)表示取A A矩阵第m行、第n列的元素,A(m,:)表示取A A矩阵第m行的全部元素,A(:,n)表示取A A矩阵的第n列全部元素。例如A=1:2:5;B=A;2*A,3*AB=1 3 5 2 6 10 3 9 151.7.3 1.7.3 矩阵的拆分矩阵的拆分B(2,:)ans=2 6 10B(:,3)ans=5 10 151.7.3 1.7.3 矩阵的拆分矩阵的拆分 A(m1:m2,:)表示取A A矩阵第m1m2行的全部元素,A(:,n1:n2)表示取A A矩阵第n1n2列的全部元素,A(m1:m2,n1:n2)表示取A A矩阵第m1m2行内,并在第n1n2列中的所有元素。例如:A=1 2 3 4 5;6 7 8 9 10;11 12 13 14 15;16 17 18 19 20A=1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 201.7.3 1.7.3 矩阵的拆分矩阵的拆分A(2:3,4:5)ans=9 10 14 15A(2:3,1:2:5)ans=6 8 10 11 13 151.7.3 1.7.3 矩阵的拆分矩阵的拆分 A(:)将矩阵A A每一列元素堆叠起来,成为一个列向量,这也是MATLAB变量的内部存储方式。例如:A=-45 65 71;27 35 91A=-45 65 71 27 35 91B=A(:)B=-45 27 65 35 71 911.7.3 1.7.3 矩阵的拆分矩阵的拆分利用一般向量和end运算符来表示矩阵下标,从而获得子矩阵。end表示某一维的末尾元素下标。例如:A=1 2 3 4 5;6 7 8 9 10;11 12 13 14 15;16 17 18 19 20;A(end,:)%取A最后一行元素ans=16 17 18 19 20A(1,4,3:end)%取A第1,4两行中第3列到 最后一列的元素ans=3 4 5 18 19 201.7.3 1.7.3 矩阵的拆分矩阵的拆分(2)利用空矩阵删除矩阵的元素 在MATLAB中,空矩阵是指无任何元素的矩阵,表示形式为。给变量x赋空矩阵的语句为 x=将某些元素从矩阵中删除,采用将其置为空矩阵的方法就是一种有效的方法。例如:A=1 2 3 4 5 6;7 8 9 10 11 12;13 14 15 16 17 18;A(:,2 4)=A=1 3 5 6 7 9 11 12 13 15 17 18 其中第2条命令将删除A A的第2列和第4列元素。1.7.4 1.7.4 算术运算算术运算1 1基本算术运算基本算术运算 MATLAB的基本算术运算有:+(加)、(减)、*(乘)、/(右除)、(左除)、(乘方)。(1)矩阵加减运算 运算规则是:若A A和B B矩阵的维数相同,则可以执行矩阵的加减运算,A A和B B矩阵的相应元素相加减。如果A A与B B的维数不相同,则MATLAB将给出错误信息,提示用户两个矩阵的维数不匹配。1.7.4 1.7.4 算术运算算术运算 一个标量也可以和其他不同维数的矩阵进行加减运算。例如:x=2,-1,0;3,2,-4;y=x-1y=1 -2 -1 2 1 -5y=y+xy=3 -3 -1 5 3 -91.7.4 1.7.4 算术运算算术运算(2)矩阵乘法 矩阵A A和B B进行乘法运算,要求A A的列数与B B的行数相等,或称A A和B B两矩阵维数相容。如果两者的维数不相容,则将给出错误信息,提示用户两个矩阵是不可乘的。例如:A=1,2,3;4,5,6;B=A*A?Error using=mtimesInner matrix dimensions must agree.在MATLAB中,还可以进行矩阵和标量相乘,标量可以是乘数也可以是被乘数。矩阵和标量相乘是矩阵中的每个元素与此标量相乘。1.7.4 1.7.4 算术运算算术运算(3)矩阵除法 在MATLAB中,有两种矩阵除法运算:和/,分别表示左除和右除。如果A A矩阵是非奇异方阵,则A AB B和B B/A A运算可以实现。A AB B等效于A A的逆左乘B B矩阵,也就是inv(A)*B,而B B/A A等效于A A矩阵的逆右乘B B矩阵,也就是B*inv(A)。1.7.4 1.7.4 算术运算算术运算例如:a=1 2 3;4 2 6;7 4 9;b=4 3 2;7 5 1;12 7 92;c1=bac1=6.0755 -3.3396 2.6038 -7.6792 5.0566 -2.4340 -0.1321 0.0943 -0.0566 c2=b/ac2=-0.1667 -3.3333 2.5000 -0.8333 -7.6667 5.5000 12.8333 63.6667 -36.50001.7.4 1.7.4 算术运算算术运算(4)矩阵的乘方和平方根 一个矩阵的乘方运算可以表示成Ax,要求A A为方阵,x为标量。例如:A=1 2 3;4 5 6;7 8 0;A2ans=30 36 15 66 81 42 39 54 691.7.4 1.7.4 算术运算算术运算 用sqrtm函数求取矩阵的平方根。其调用格式:pX=sqrtm(A):求矩阵A的平方根X,即X*X=A。pX,resnorm=sqrtm(A):不生成任何警告信息,并返回残差norm(A-X2,fro)/norm(A,fro)pX,alpha,condest=sqrtm(A):返回稳定性因子alpha和X矩阵平方根条件数的估计condest.1.7.4 1.7.4 算术运算算术运算例如:a=1 3 4;2 6 5;3 2 4;c=sqrtm(a)c=0.6190+0.8121i 0.8128-0.2263i 1.1623-0.4157i 0.3347+0.1497i 2.3022-0.0417i 1.1475-0.0766i 1.0271-0.5372i 0.3347+0.1497i 1.6461+0.2750i1.7.4 1.7.4 算术运算算术运算(4)矩阵的指数和对数 矩阵的指数运算用函数expm实现,对数运算用函数logm实现。例如:a=1 3 4;2 6 5;3 2 4;d=expm(a)d=1.0e+004*0.4668 0.7694 0.9200 0.7919 1.3065 1.5613 0.4807 0.7919 0.9475 e=logm(a)e=0.5002+2.4406i 0.5960-0.6800i 0.7881-1.2493i 0.4148+0.4498i 1.4660-0.1253i 1.0108-0.2302i 0.5780-1.6143i 0.4148+0.4498i 1.0783+0.8263i1.7.4 算术运算2 2点运算点运算 两矩阵进行点运算是指它们的对应元素进行相关运算,要求两矩阵的维参数相同。点运算符有.*、./、.和.。例如:A=1,2,3;4,5,6;7,8,9;B=-1,0,1;1,-1,0;0,1,1;C=A.*BC=-1 0 3 4 -5 0 0 8 91.7.4 算术运算算术运算 如果A A、B B两矩阵具有相同的维数,则A./B表示A A矩阵除以B B矩阵的对应元素。B.A等价于A./B。x=1 2 3;4 5 6;y=-2 1 3;-1 1 4;z1=x./yz1=-0.5000 2.0000 1.0000 -4.0000 5.0000 1.5000 z2=y.xz2=-0.5000 2.0000 1.0000 -4.0000 5.0000 1.50001.7.4 算术运算 指数也可以是标量指数也可以是标量。例如:x=1 2 3;4 5 6;z=x.2z=1 4 9 16 25 361.7.4 算术运算 底也可以是标量底也可以是标量。例如:x=1 2 3;y=4 5 6;z1=2.x,yz1=2 4 8 16 32 64 z2=2.x;yz2=2 4 8 16 32 641.7.4 算术运算MATLAB常用数学函数1.7.4 算术运算(1)函数的自变量规定为矩阵变量,运算法则是将函数逐项作用于矩阵的元素上,因而运算的结果是一个与自变量同维数的矩阵。例如:y=sin(0:pi/2:2*pi)y=0 1.0000 0.0000 -1.0000 -0.0000y=abs(y)y=0 1.0000 0.0000 1.0000 0.00001.7.4 算术运算(2)abs函数可以求实数的绝对值、复数的模、字符串的ASCII码值。x=-3.14,3+4i;abs(x)ans=3.1400 5.00001.7.4 算术运算(3)用于取整的函数有fix、floor、ceil、round,要注意它们的区别。例如:x=fix(13.37),floor(13.37),ceil(13.37),round(13.37)x=13 13 14 13x=fix(-13.67),floor(-13.67),ceil(-13.67),round(-13.67)x=-13 -14 -13 -141.7.4 算术运算 (4)rem与mod函数的区别。rem(x,y)和mod(x,y)要求要求x x,y y必须为相同大小的实矩阵或为标量必须为相同大小的实矩阵或为标量。当y0时,rem(x,y)=xy.*fix(x./y)而mod(x,y)=xy.*floor(x./y);当y=0时,rem(x,0)=NaN,而mod(x,0)=x。显然,当x,y同号时,rem(x,y)与mod(x,y)相等。rem(x,y)的符号与x相同,而mod(x,y)的符号与y相同。1.7.4 算术运算例如:x=5;y=3;rem(x,y),mod(x,y)ans=2 2x=-5;y=3;rem(x,y),mod(x,y)ans=-2 11.7.5 关系运算 MATLAB提供了6种关系运算符:(小于)、(大于)、=(大于或等于)、=(等于)、=(不等于)。(1 1)当两个比较量是标量时)当两个比较量是标量时,直接比较两数的大小直接比较两数的大小。若关系成立,关系表达式结果为1,否则为0。例如:A=5A=5A=A=10A=01.7.5 关系运算(2 2)当参与比较的量是两个维数相同的矩阵时,比较是对)当参与比较的量是两个维数相同的矩阵时,比较是对两矩阵相同位置的元素按标量关系运算规则逐个进行两矩阵相同位置的元素按标量关系运算规则逐个进行,并,并给出元素的比较结果给出元素的比较结果。最终的关系运算的结果是一个维数与原矩阵相同的矩阵,它的元素由0或1组成。1.7.5 关系运算例如:A=1 2 3;4 5 6;B=3 1 4;5 2 10;ABans=0 1 0 0 1 0 C=A=BC=1 1 1 1 1 11.7.5 关系运算(3 3)当参与比较的一个是标量,而另一个是矩阵时,则把)当参与比较的一个是标量,而另一个是矩阵时,则把标量与矩阵的每一个元素按标量关系运算规则逐个比较,标量与矩阵的每一个元素按标量关系运算规则逐个比较,并给出元素比较结果。并给出元素比较结果。最终的运算结果是一个维数与矩阵相同的矩阵,它的元素由0或1组成。1.7.5 关系运算例如:A=3 1 4;5 2 10;B=A4B=0 0 0 1 0 11.7.6 逻辑运算 MATLAB提供了3种逻辑运算符:&(与)、|(或)和(非)。此外,MATLAB还提供了4个逻辑运算函数:and(a,b)、or(a,b)、not(a)和xor(a,b)。在逻辑运算中,确认非零元素为真,用1表示;非零元素为假,用0表示。设参与逻辑运算的是两个标量a和b,那么,逻辑运算符和逻辑运算函数的含义如下:1.7.6 逻辑运算a&b或函数and(a,b)表示a和b作逻辑与运算,当a、b全为非零时,运算结果为1,否则为0。a|b或函数or(a,b)表示a和b作逻辑或运算,当a、b中只要有一个非零,运算结果为1。a和函数not(a)表示对a作逻辑非运算,当a是零时,运算结果为1;当a非零时,运算结果为0。函数xor(a,b)表示a和b作逻辑异或运算,当a、b的值不同时,运算结果为1,否则运算结果为0。1.7.6 逻辑运算(1)若参与逻辑运算的是两个同维矩阵,那么运算将对矩阵相同位置上的元素按标量规则逐个进行。最终运算结果是一个与原矩阵同维的矩阵,其元素由1或0组成。例如:A=23,54,12,6,-78;B=5,324,7,-43,76;C1=A10&B10,B a=23 54;126-78;b=a|1&a0b=1 1 1 0(3)逻辑非是单目运算符,也服从矩阵运算规则。1.7.6 逻辑运算在算术、关系、逻辑运算中,算术运算优先级最高,逻辑运算优先级最低。函数名含义all若向量的所有元素非零,则结果为1any向量中任何一个元素非零,都给出结果1exist检查变量在工作空间是否存在,存在,结果为1,否则为0find找出向量或矩阵中非零元素的位置isempty若被查变量是空阵,则结果为1isglobal若被查变量时全局变量,则结果1isinf若元素是inf,则结果矩阵相应位置元素取1,否则取0isnan若元素是nan,则结果矩阵相应位置元素取1,否则取0isfinite若元素值大小有限,则则结果矩阵相应位置元素取1,否则取0issparse若变量是稀疏矩阵,则结果矩阵相应位置元素取1,否则取0isstr若变量是字符串,则结果矩阵相应位置元素取1,否则取01.7.6 逻辑运算【例】建立矩阵A,然后找出在10,20区间的元素的位置。A=4,15,-45,10,6;56,0,17,-45,0A=4 15 -45 10 6 56 0 17 -45 0 find(A=10&A subch=ch(12:18)subch=Beijing1.8 字 符 串k=find(ch=a&ch=z);%找小写字母的位置ch(k)=ch(k)-(a-A);%将小写字母变成相应的大写字母char(ch)ans=WELCOME TO BEIJING length(k)%统计小写字母的个数ans=141.8 字 符 串把字符串的内容作为对应的MATLAB语句来执行的函数是eval.eval(t)其中t为字符串。例如:x=3;y=4;m=sqrt(x*x+y*y),x+y;y=eval(m)y=5 71.8 字 符 串函数名含义函数名含义setstr将ASCII码值转换成字符串strcat用于字符串的连接findstr查找匹配的字符串所在的位置strcmp用于字符串的比较mat2str 将矩阵转换成字符串strrep替换匹配的字符串num2str将数值转换成字符串isspace判断是否为空格int2str将整数转换成字符串ischar判断是否为字符str2num将数字型字符串转换成数值isletter判断是否为字母1.8 字 符 串 关于字符串的写法,还要注意:(1 1)若字符串中的字符含有单撇号,则该单撇号字符应用)若字符串中的字符含有单撇号,则该单撇号字符应用两个单撇号来表示。两个单撇号来表示。例如:disp(Its a book.)将输出:Its a book.1.8 字 符 串(2 2)可以用字符串向量的形式连接多个字符串,即)可以用字符串向量的形式连接多个字符串,即用中括号括起来。用中括号括起来。例如:x=8;y=10;disp(num2str(x),+,num2str(y),=,num2str(x+y)其中disp函数的自变量是一个长字符串。输出为8+10=18本 章 小 结pMATLAB的发展pMATLAB应用pMATLAB的功能pMATLAB的特点pMATLAB的系统构成pMATLAB矩阵及基本运算、变量、常用函数作 业一、在一个MATLAB命令中,3+4i和3+4*i有何区别?二、在MATLAB环境下,建立了一个变量p,同时又在当前目录下建立了一个M文件p.m,如果需要运行p.m文件,该如何处理?三、写出完成下列操作的命令(1)将矩阵A第25行中第1、3、5列元素赋给矩阵B;(2)删除A的第7号元素;(3)将矩阵A的每个元素值加30;(4)求矩阵A的大小和维数;作 业(5)将含有12个元素的向量x转换成34矩阵;(6)求一个字符串的ASCII;(7)求一个ASCII所对应的字符。四、已知A=97 67 34 10;-78 75 65 5;32 5-23-59;0-12 54 7写出完成下列操作的命令:(1)取出的前3行构成矩阵,前两列构成矩阵,右下角32子矩阵构成矩阵,B与C的乘积构成E;(2)输出50,100范围内的全部元素。五、的英语意思是什么?其主要语言功能有哪些?