矩阵及字符串运算.doc_第1页
矩阵及字符串运算.doc_第2页
矩阵及字符串运算.doc_第3页
矩阵及字符串运算.doc_第4页
矩阵及字符串运算.doc_第5页
已阅读5页,还剩74页未读 继续免费阅读

下载本文档

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

文档简介

三 MATLAB矩阵及运算3.1 MATLAB矩阵的生成和修改3.1.1 矩阵的生成1. 直接输入数据当需要输入的矩阵维数比较小时,可以直接输入数据建立矩阵。矩阵数据(或矩阵元素)的输入格式如下:(1)输入矩阵时要以“ ”作为首尾符号,矩阵的数据应放在 “ ”内部,此时MATLAB才能将其识别为矩阵;(2)要逐行输入矩阵的数据,同行数据之间可由空格或“,”分隔,行与行之间可用“;”或回车符分隔;(3)矩阵数据可为运算表达式;(4)矩阵大小可不预先定义;(5)如果不想显示输入的矩阵(作为中间结果),可以在矩阵输入完成后以“;”结束;(6)无任何元素的空矩阵也合法。【例3.1】 a=1 2 5 和 a=1,2,5 为同一矩阵; b=3;2;5 和 b=3 2 5 为同一矩阵。【例3.2】 建立矩阵并显示结果。 X=1,2,3;4,5,6;7,8,3*3X = 1 2 3 4 5 6 7 8 92. 由矩阵编辑器生成MATLAB提供了一个矩阵编辑器,用户可以用来创建和修改比较大的矩阵。在使用矩阵编辑器之前,需要预先定义一个变量(任意的),如上例3.1所示的33矩阵X。接下来,按下列步骤进行操作:(1)选中所定义的变量,打开矩阵编辑器,如图3.1所示;(2)将文本框size中的数据3 by 3改变成欲生成矩阵的行数和列数,回车后就能看到窗口中矩阵的维数立刻发生改变; 图 3.1(3)在窗口中矩阵元素的位置上输入或修改数据,回车后自动提示输入下一行矩阵元素的数据,矩阵元素的输入顺序是按列自动进行的; 图 3.2(4)输入完成后,关闭编辑器,变量X就定义保存好了。3. 由函数自动生成MATLAB提供了一些生成矩阵的函数,用户可以方便地用他们建立自己所需要的矩阵。(1)向量、行矩阵、列矩阵的自动生成用“起始值:增量值:终止值”的格式自动生成等差数列。【例3.3】 x=(1:1:10)% 表示“起始值:增量值:终止值”,增量为1时可表示成 “起始值:终止值”,即 x=(1:10) 或 x=1:10。x = 1 2 3 4 5 6 7 8 9 10 x=1:1:10x = 1 2 3 4 5 6 7 8 9 10 I=1:15I = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15用“linspace(起始值:终止值:元素数目)”的格式自动生成等差数列;用“logspace(起始值:终止值:元素数目)”的格式自动生成对数等分数列。【例3.4】 y=linspace(30,50,11)y = 30 32 34 36 38 40 42 44 46 48 50列矩阵的生成格式如下:【例3.5】 x=(1:1:10); y=linspace(90,95,6)y = 90 91 92 93 94 95(2)其它矩阵的自动生成MATLAB提供了许多特殊矩阵的生成函数,如零矩阵zeros(m,n),全部元素为1的矩阵ones(m,n),单位矩阵eye(n),随机矩阵rand(m,n)和魔方矩阵magic(n)等,利用这些矩阵可以生成所需要的矩阵。【例3.6】 特殊矩阵的生成。 a=% 定义空矩阵,即00矩阵。a = zeros(2,2);% 定义全为0的矩阵(2 2的阵列)。ones(3,3);% 定义全为1的矩阵(3 3的阵列)。rand(2,6)% 定义随机矩阵(2 6的矩阵)。ans = 0.2259 0.7604 0.6405 0.3798 0.6808 0.5678 0.5798 0.5298 0.2091 0.7833 0.4611 0.7942 rand(2,6)% 第二次运行结果。ans = 0.9501 0.6068 0.8913 0.4565 0.8214 0.6154 0.2311 0.4860 0.7621 0.0185 0.4447 0.7919 magic(4)ans = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 13.1.2 矩阵的修改1. 矩阵元素的修改欲修改矩阵中某个元素的数值,应该先确定该元素的位置,再用赋值语句来实现。根据矩阵的行列数和元素在矩阵中的存储顺序,可以确定出欲修改元素的位置。【例3.7】 根据元素在矩阵中的存储顺序来确定矩阵元素的位置,再对元素的数值进行修改。a = 1 2 3 4 5 6 7 8;% 定义一维1x8 阵列,表示了8个元素,每个向量由一个分量构成。x= 1 2 3 4 5 6 7 8;4 5 6 7 8 9 10 11;% 定义28 矩阵,以分号“ ; ”隔离各列元素,该矩阵表示了每个向量由2个分量构成的8个向量的多维空间 x(3) % 找出 x的第三个元素,即该矩阵的元素(1,2)。ans = 2 x(1 2 5) % 找出x的第一、二、五个元素,即2 8矩阵中的元%素(1,1)、(2,1)和(1,3)。ans = 1 4 3 x(1:5) % 找出 x的前五个元素即第1个到第五个元素。ans = 1 4 2 5 3 x(10:end) % x的第十个元素后的元素,包括第10个元素。ans = 8 6 9 7 10 8 11 x(10:-1:2)% x的第十个元素和第二个元素的倒排。括号中用“:”隔开的3个参数的含义是:第一个参数表示起始的元素序号,第二个参数表示递增或递减(-)的元素数,第三个参数表示终止元素序号。ans = 8 5 7 4 6 3 5 2 4 x(find(x=10) % 找出在x大于等于10的元素,也表达为x(x=10)。ans = 10 11 x(4) = 100% 给x的第四个元素重新赋值x = 1 2 3 4 5 6 7 8 4 100 6 7 8 9 10 11 x(3) = % 删除第三个元素,注意矩阵变成了115矩阵。x = 1 4 100 3 6 4 7 5 8 6 9 7 10 8 11 x(16) = 99% 添加一个元素(加入第十六个元素)。x = 1 4 100 3 6 4 7 5 8 6 9 7 10 8 11 99在MATLAB的内部数据结构中,每一个矩阵都是一个以纵列为主(Column-oriented)的阵列(Array)因此,对于矩阵元素的存取,我们可用一维或二维的索引(Index)来定址。【例3.8】 根据矩阵行列数来确定矩阵元素的位置,再对元素的数值进行修改。 z=rand(2,5)z = 0.6299 0.5751 0.0439 0.3127 0.3840 0.3705 0.4514 0.0272 0.0129 0.6831 z(2,3)ans = 0.0272 z(2,3)=0z = 0.6299 0.5751 0.0439 0.3127 0.3840 0.3705 0.4514 0 0.0129 0.68312. 矩阵行列的修改A(m,n)表示矩阵第m行第n列的元素,中间有“,”将行和列分开。若要同时表示更多的矩阵元素,可以采用下列表示方法:A(I,:)表示矩阵A第I行全部的元素;A(:,J)表示矩阵A第J列全部的元素;A(1,3,2,4)表示矩阵A第1行、第3行与第2列、第4列交叉处的元素;A(1:3,2:4)表示矩阵A第1行到第3行与第2列到第4列交叉处的元素,也可以写成另外两种形式: A(1:3),(2:4) 和 A(1:3,2:4) 。有了矩阵多个元素的表示方法,就可以方便地进行矩阵行和列的修改。【例3.9】 矩阵行列的修改。 a=rand(4,5)a = 0.0928 0.0158 0.0576 0.6927 0.3533 0.0353 0.0164 0.3676 0.0841 0.1536 0.6124 0.1901 0.6315 0.4544 0.6756 0.6085 0.5869 0.7176 0.4418 0.6992 a(2,:)ans = 0.0353 0.0164 0.3676 0.0841 0.1536 a(1:3,2:4)=0a = 0.0928 0 0 0 0.3533 0.0353 0 0 0 0.1536 0.6124 0 0 0 0.6756 0.6085 0.5869 0.7176 0.4418 0.6992 a(1,3,2,4)=1a = 0.0928 1.0000 0 1.0000 0.3533 0.0353 0 0 0 0.1536 0.6124 1.0000 0 1.0000 0.6756 0.6085 0.5869 0.7176 0.4418 0.6992 a(4,:)= % 删除一行元素(第4行)。a = 0.0928 1.0000 0 1.0000 0.3533 0.0353 0 0 0 0.1536 0.6124 1.0000 0 1.0000 0.6756 a(:,6)=10;20;30 % 增加一列元素(第6列)。a = 0.0928 1.0000 0 1.0000 0.3533 10.0000 0.0353 0 0 0 0.1536 20.0000 0.6124 1.0000 0 1.0000 0.6756 30.00003. 子矩阵可以由一个矩阵抽取生成一个子矩阵,或者由几个子矩阵组合生成一个新矩阵。【例3.10】 矩阵抽取生成子矩阵,子矩阵组合生成新矩阵。 a=rand(2,3)a = 0.8928 0.2548 0.2324 0.2731 0.8656 0.8049 b=ones(2,5)b = 1 1 1 1 1 1 1 1 1 1 c=magic(5)c = 17 24 1 8 15 23 5 7 14 16 4 6 13 20 22 10 12 19 21 3 11 18 25 2 9 x=a, bx = 0.8928 0.2548 0.2324 1.0000 1.0000 1.0000 1.0000 1.0000 0.2731 0.8656 0.8049 1.0000 1.0000 1.0000 1.0000 1.0000 d=c(2,2:4)d = 5 7 14 y=a; dy = 0.8928 0.2548 0.2324 0.2731 0.8656 0.8049 5.0000 7.0000 14.00003.2 MATLAB矩阵的保存与提取在数值计算过程中,经常有大量的矩阵需要保存和再次使用时提取,因此有必要把数据保存于文件中。在MATLAB中可以使用mat文件来保存二进制的数据。具体步骤如下:(1)保存矩阵。如果A,B矩阵都已存在,用save命令保存,具体格式如下: save myfilename A B注意: myfilename是用户自定义的文件名,MATLAB系统会自动地加上后缀mat。系统默认的路径是MATLAB6p5work。如果用户想要改变路径,可以在文件名前加上路径。(2)提取矩阵。在重新启动MATLAB后,用load命令可以将保存在文件中的矩阵读到MATLAB工作区的内存中来。load myfilenameload命令中不指定变量名,系统仍然将A,B作为矩阵的名称来使用。对矩阵的保存与提取,用户也可以在工作空间窗口中使用保存与打开两个按钮来操作,在概述中已介绍过。3.3 MATLAB的向量运算向量就是一维矩阵(行矩阵或列矩阵),并按照矢量运算的规则进行运算。但应注意,在一些场合,向量仅仅是指一维矩阵或矩阵的某一列。本节对向量的基本运算作简单介绍。3.3.1 加减及与数加减【例3.11】向量的加减及与数加减。 a=1,3,5,7,9,11,b=2,4,6,8,10,12a = 1 3 5 7 9 11b = 2 4 6 8 10 12 c=a+bc = 3 7 11 15 19 23 d=a-1d = 0 2 4 6 8 103.3.2 数乘【例3.12】向量的数乘。 a, b向量同上例。 3*bans = 6 12 18 24 30 363.3.3 点积、叉积及混合积1. 点积计算在高等数学中,向量的点积是指两个向量在其中某一个向量方向上的投影的乘积,在MATLAB中,向量的点积可由函数dot来实现。dot(a,b)返回向量a和b的数量点积。a和b必须同维。当a和b都为列向量时,dot(a,b) 同于a*b;dot(a,b,dim)返回a和b在维数为dim的点积。【例3.13】试计算向量a=(1,2,3)和向量b=(3,4,5)的点积。a=1 2 3;b=3 4 5;dot(a,b) ans= 26 还可以用另一种方法计算向量的点积。 sum(a.*b) ans= 26或 a*(b)2. 叉积计算在数学上,向量的叉积表示过两相交向量的交点、垂直于两向量所在平面的向量。在MATLAB中,向量的叉积由函数cross来实现。c=cross(a,b)返回向量a和b的叉积向量c=ab。a和b必须为三维向量。c=cross(a,b,dim)当a和b为n维数组时,则返回a和b的dim维向量的叉积。a和b必须有相同的维数,且size(a,dim)和size(b,dim)必须为3。(略)【例3.14】计算垂直于向量a=(5,2,3)和b=(3,4,5)的向量。 a=5 2 3;b=3 4 5; c=cross(a,b)c = -2 -16 143. 混合积计算在MATLAB中,向量的混合积由以上两个函数实现。【例3.15】计算上例中向量a,b,c的混合积。 dot(a,cross(b,c)ans = 456注意函数的顺序不可颠倒,否则将会出现错误。3.4 MATLAB的矩阵运算矩阵运算是MATLAB语言最重要和最具有特色的内容之一,是编程进行科学计算的重要基础。矩阵的运算包括矩阵的基本数学运算和矩阵的函数运算。3.4.1 矩阵的基本运算矩阵的基本数学运算包括矩阵的算术运算、与常数的运算、转置运算、逆运算、行列式运算、幂运算等。1. 算术运算矩阵的算术运算是指矩阵之间的加、减、乘、除、幂等运算,表3.1给出了矩阵算术运算对应的运算符和MATLAB表达式。表3.1 经典的算术运算符经 典 的 算 术 运 算 符名称运算符MATLAB表达式加+a+b减-a-b乘*a*b除/ 或 a/b或ab幂an矩阵进行加减运算时,相加减的矩阵必须是同阶的;矩阵进行乘法运算时,相乘的矩阵要有相邻公共维,即若A为ij阶,则B必须为jk阶,此时A和B才可以相乘。常数与矩阵的运算,是常数同矩阵的各元素之间进行运算,如数加是指矩阵的每个元素都加上此常数,数乘是指矩阵的每个元素都与此常数相乘。需要注意的是,当进行数除时,常数通常只能做除数。在线性代数中,矩阵没有除法运算,只有逆矩阵。矩阵除法运算是MATLAB从逆矩阵的概念引申而来,主要用于解线性方程组。方程A*X=B,设X为未知矩阵,在等式两边同时左乘inv(A),即inv(A)*A*X= inv(A)*BX= inv(A)*B=AB把A的逆矩阵左乘以B,MATLAB就记为A,称之为“左除”。A、B两矩阵的行数必须相等。如果方程的未知数矩阵在左,系数矩阵在右,即*,同样有*inv(A)=B/A把A的逆矩阵右乘以B,MATLAB就记为/A,称之为“右除”。A、B两矩阵的列数必须相等。【例3.16】 已知A*X=B,Y*C=D,A=1,2;3,4,B=4;10,C=1,3;2,4,D=4,10 ,计算未知数矩阵X和Y。 a=1,2;3,4;b=4;10;c=1,3;2,4;d=4,10; x=abx = 2.0000 1.0000 y=d/cy = 2.0000 1.0000在MATLAB中,进行矩阵的幂运算时,矩阵可以作为底数,指数是标量,矩阵必须是方阵;矩阵也可以作为指数,底数是标量,矩阵也必须是方阵;但矩阵和指数不能同时为矩阵,否则将显示错误信息。【例3.17】 矩阵的幂运算。 aa = 1 2 3 4 a2% n为正整数,an表示矩阵a自乘n次。ans = 7 10 15 22 a(-2) % n为负整数,an表示矩阵a自乘n次的逆。ans = 5.5000 -2.5000 -3.7500 1.7500 inv(a2)ans = 5.5000 -2.5000 -3.7500 1.7500 2a (略)ans = 10.4827 14.1519 21.2278 31.7106 2.aans = 2 4 8 162. 转置运算在MATLAB中,矩阵转置运算的表达式和线性代数一样,即对于矩阵,其转置矩阵的MATLAB表达式为。但应该注意,在MATLAB中,有几种类似于转置运算的矩阵元素变换运算是线性代数中没有的,他们是:fliplr(X) 将X左右翻转;flipud(X) 将X上下翻转;rot90(A) 将A逆时针方向旋转90。3. 逆矩阵运算矩阵的逆运算是矩阵运算中很重要的一种运算。它在线性代数及计算方法中都有很多的论述,而在MATLAB中,众多的复杂理论只变成了一个简单的命令inv。【例3.18】 矩阵的逆运算。 aa = 10 2 12 34 2 4 98 34 6 inv(a)ans = -0.0116 0.0372 -0.0015 0.0176 -0.1047 0.0345 0.0901 -0.0135 -0.00454. 行列式和秩运算矩阵的行列式的值由det函数计算得出;矩阵的秩由rank函数来计算。【例3.19】 计算矩阵行列式的值和矩阵的秩。 A = 1 1 5 2 2 5 3 3 5 rank(A)ans = 2 det(A)ans = 03.4.2 矩阵的函数运算(略)矩阵的函数运算包括基本的数学函数运算、矩阵专门的函数运算以及矩阵的分解运算等内容。1. 数学函数运算(略)在MATLAB中,指数函数expm、对数函数logm、开方函数sqrtm是把矩阵作为一个整体进行运算的,即所谓的矩阵运算;其它数学函数都是对矩阵的元素分别进行运算的,即所谓的阵列运算。因此,MATLAB基本函数库中的大部分常用函数都适合于阵列运算,此时矩阵可以是任意阶。【例3.20】 e=eye(2); logm(e)ans = 0 0 0 0 e=ones(2); expm(e)ans = 4.1945 3.1945 3.1945 4.1945 sqrtm(e)ans = 0.7071 0.7071 0.7071 0.7071 a=0,pi/6,pi/3,pi/2; b=-1,0,1; sin(a)ans = 0 0.5000 0.8660 1.0000 exp(b)ans = 0.3679 1.0000 2.7183 sign(a)ans = 0 1 1 1 mean(b)ans = 0在实际运算中,对其他常用函数的矩阵运算,如三角函数运算和双曲函数运算等,可以采用通用函数形式。在MATLAB中使用通用函数的格式为funm(A,funname),其中A为输入矩阵变量,funname为调用的函数名。如funm(b,log)等同于1ogm(b),funm(b,sqrt)等同于sqrtm(b),而funm(b,sin) ,其作用等同于矩阵b的正弦运算。【例3.21】 e=ones(2);funm(e,sin)ans = 0.4546 0.4546 0.4546 0.4546 sin(e)ans = 0.8415 0.8415 0.8415 0.84152. 矩阵函数运算(略)矩阵函数的运算主要包括特征值的计算,奇异值的计算,条件数、各类范数、矩阵迹的计算和矩阵的空间运算等。这里只介绍部分常用的矩阵函数。表3.2常用的矩阵函数命令函数名称功能简介cond(A)矩阵A的条件数det(A)方阵A的行列式值dot(A,B)矩阵A,B的点积eig(A)方阵A的特征值和特征向量norm(A,1)矩阵A的1-范数norm(A)或norm(A,2)矩阵A的2-范数norm(A,inf)矩阵A的无穷大-范数norm(A,fro)矩阵A的F-范数rank(A)矩阵A的秩rcond(A)矩阵A的倒条件数svd(A)矩阵A的奇异值分解trace(A)矩阵A的迹expm(A)矩阵的指数eAexpml(A)用Pade法求矩阵的指数eAexpm2(A)用Taylor级数求矩阵的指数eA,精度差,对任何矩阵都适用expm3(A)用特征值和特征向量求矩阵的指数eA,仅当独立特征向量个数等于矩阵秩时适用logm(A)求矩阵A的对数sqrtm(A)求矩阵的平方根funm(A,fun)一般的方阵函数(1)求矩阵的维数和长度的函数(了解)【例3.22】 a=10,2,12;34,2,4;98,34,6; size(a) % 求矩阵的维数 (columns & rows)。ans =3 3 length(a) % 求矩阵的长度,矩阵的长度用向量(或columns)数定义。ans = 3注意size(a)与length(a)两者之间的区别。(2)特征值函数(了解)矩阵的特征值可以由两个函数eig和eigs计算得出。其中函数eig可以给出特征值和特征向量的值,而函数eigs则是使用迭代法求解特征值和特征向量的函数。 【例3.23】 a=10,2,12;34,2,4;98,34,6; v,d=eig(a) % 产生矩阵a的特征值d和特征向量v。v = -0.2960 -0.3635 0.3600 -0.2925 0.4128 -0.7886 -0.9093 0.8352 -0.4985d = 48.8395 0 0 0 -19.8451 0 0 0 -10.9943(3)矩阵的范数(略)【例3.24】 a=10,2,12;34,2,4;98,34,6; norm(a)ans = 109.5895 norm(a,1)ans = 142 norm(a,inf)ans = 138(4)矩阵的条件数(略)【例3.25】 a=ones(5)+i*eye(5);cond(a)ans = 5.09903. 矩阵分解运算(略)矩阵分解运算在矩阵运算中具有重要的地位。在用矩阵法求解线性方程组时,就要用到矩阵的分解运算。表3.3基本的矩阵分解函数函数指令功能简介cdf2rdf(V,D)复数对角形转换成实数块对角形chol(A)矩阵A的Cholesky分解eig(A)矩阵A的特征值分解Hess(A)矩阵A的Hessenberg形式LU(A)矩阵A的LU分解null(A)由奇异值分解得出的矩阵A的零空间的标准正交基orth(A)矩阵A行向量的标准正交基pinv(A)求矩阵A的伪逆qr(A)矩阵A的QR正交三角分解qz(A)矩阵A的QZ分解,用于广义特征值rref(A)将矩阵A转换为逐行递减的阶梯阵rsf2csf(V,D)实数块对角形转换成复数对角形schur(A)矩阵A的Schur分解subspace(A,B)计算由A,B张成的子空间的夹角svd(A)方阵A的奇异值分解(1)矩阵的LU分解(略)矩阵LU分解即矩阵的三角分解:A=LU,用于线性方程组的求解。在MATLAB中,LU分解由lu函数实现。【例3.26】求A*X=B的解。A=5,-2,1;1,5,-3;2,1,-5,B=4;2;-11。 L,U=lu(A)L = 1.0000 0 0 0.2000 1.0000 0 0.4000 0.3333 1.0000U = 5.0000 -2.0000 1.0000 0 5.4000 -3.2000 0 0 -4.3333 X=U(LB)X = 1.0000 2.0000 3.0000(2)矩阵的Chol分解(略)如果A为n阶对称正定矩阵,则存在一个非奇异下三角实矩阵L,使得A=LLT。当限定L的对角元素为正时,这种分解值是惟一的,称为Chollesky分解。在MATLAB中,这种分解由函数chol实现。【例3.27】a=4,-1,1;-1,4.25,2.75;1 2.75,3.5; L=chol(a)L = 2.0000 -0.5000 0.5000 0 2.0000 1.5000 0 0 1.0000(3)矩阵的QR分解(略)矩阵的QR分解即矩阵的正交分解。在求解矩阵的特征值时,实阵A可以写成A=QR,其中Q为正交阵,R为上三角阵。若规定R的对角元为正数,则分解惟一。在MATLAB中,QR分解由qr函数实现。【例3.28】 a = 10 2 12 34 2 4 98 34 6 Q,R=qr(a)Q = -0.0960 -0.1232 -0.9877 -0.3263 -0.9336 0.1482 -0.9404 0.3365 0.0494R = -104.2113 -32.8179 -8.0989 0 9.3265 -3.1941 0 0 -10.9638(4)矩阵的奇异值分解(略)矩阵的奇异值分解可由函数svd实现。调用形式为:U,S,V=svd(X),生成的U,S和V使得X=U SV。【例3.29】a = 10 2 12 34 2 4 98 34 6 u,s,v=svd(a)u = -0.1003 0.8857 0.4532 -0.3031 0.4066 -0.8618 -0.9477 -0.2239 0.2277s = 109.5895 0 0 0 12.0373 0 0 0 8.0778v = -0.9506 0.0619 -0.3041 -0.3014 -0.4176 0.8572 -0.0739 0.9065 0.41563.5 MATLAB的阵列运算MATLAB的运算是以阵列 (array) 运算和矩阵 (matrix) 运算两种方式进行的,而两者在MATLAB的基本运算性质上有所不同:阵列运算采用的是元素对元素的运算规则,而矩阵运算则是采用线性代数的运算规则。因此,在一些文献中阵列运算被称为数组运算或元素群运算。阵列的运算包括基本运算和函数运算两种形式。3.5.1 阵列的基本运算在MATLAB中,阵列的基本运算采用扩展的算术运算符。表3.4扩展的算术运算符扩 展 的 算 术 运 算 符名 称运 算 符MATLAB表达式阵列乘.*a.*b阵列除./ 或 .a./b或a.b阵列幂.a.b值得注意的是,在旧版本的MATLAB中,阵列运算的加减运算符多一个小圆点,即“.+”和“.-”,但在新版本的MATLAB中,这两个命令不再使用(否则会出错),因而阵列的加减法和矩阵的加减法完全统一起来了。关于常数和矩阵之间的运算,数加和数减运算可以在运算符前不加“.”,但如果一定要在运算符前加“.”,那么一定要把常数写在运算符前面,否则会出错。【例3.30】 a=1:10;b=11:20; a+bans = 12 14 16 18 20 22 24 26 28 30 a.-b? a.-bError: identifier expected, - found. a+50ans = 51 52 53 54 55 56 57 58 59 60 a.+50? a.+50Error: identifier expected, + found. 50.+aans = 51 52 53 54 55 56 57 58 59 60常数和矩阵之间的数乘运算,即为矩阵元素分别与此常数进行相乘,常数在前在后、加不加“.”都一样。常数和矩阵之间的除法运算,对矩阵运算而言常数只能做除数;而对阵列运算而言,由于是“元素对元素”的运算,因此没有任何限制(但一定要加“.”运算)。【例3.31】a =ones(3,4); a*8% a*8、8*a、a.*8和8.*a结果一样。ans = 8 8 8 8 8 8 8 8 8 8 8 8 a/3% a/3和3a都是矩阵除法,结果一样,但3/a和 a3不合法。ans = 0.3333 0.3333 0.3333 0.3333 0.3333 0.3333 0.3333 0.3333 0.3333 0.3333 0.3333 0.3333 5./aans = 5 5 5 5 5 5 5 5 5 5 5 5 a./5ans = 0.2000 0.2000 0.2000 0.2000 0.2000 0.2000 0.2000 0.2000 0.2000 0.2000 0.2000 0.2000阵列的幂运算运算符为“.”,它表示每个矩阵元素单独进行幂运算,这是同矩阵的幂运算不同的,矩阵的幂运算和阵列的幂运算所得的结果有很大的差别。【例3.32】 b=2,2;2,2 ; b2ans = 8 8 8 8 b.2ans = 4 4 4 43.5.2 阵列的函数运算在MATLAB中,矩阵按照阵列运算规则进行指数运算、对数运算和开方运算的命令分别是exp,log和sqrt,他们和矩阵运算expm,logm和sqrtm命令是完全不同的。矩阵进行其它数学函数运算(如三角函数)时,都是按阵列运算规则进行的,矩阵可以是任意阶,其命令通用形式为funname(A),其中funname为常用数学函数名(参见表2.3-2.8)。【例3.33】a =ones(3,4);b=zeros(3,4); exp(a)ans = 2.7183 2.7183 2.7183 2.7183 2.7183 2.7183 2.7183 2.7183 2.7183 2.7183 2.7183 2.7183 cos(b)ans = 1 1 1 1 1 1 1 1 1 1 1 1表3.5以具体的计算结果给出了矩阵运算和阵列运算之间的区别。表3.5矩阵运算和阵列运算的对比(两个13矩阵x和y之间的运算)矩 阵 运 算阵 列 运 算x123y456x1 2 3y4 5 6x+y579x-y-3-3-3x + 2345x-2-101x * yErrorx.*y41018x*y32x.*yErrorx*y4 5 6 8 10 1212 15 18x.*yErrorx*2246x.*2246xy16/7x.y45/222x1/213/22./x212/3x/y0 0 1/60 0 1/30 0 1/2x./y1/42/51/2x/21/213/2x./21/213/2xyErrorx.y132729x2Errorx.21492xError2.x248(x+i*y)1 - 4i 2 - 5i 3 - 6i(x+i*y).

温馨提示

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

评论

0/150

提交评论