1、第2 章 MATLAB 语言基础,2.1 基本 概 念 2.1.1 MATLAB 数据类型,数值型数据分成整型和浮点型。整型数据主要为图像处理等特殊的应用问题提供数据类型。 对一般数值运算,绝大多数情况是采用双精度浮点型的数据。,MATLAB 对不同数据类型的变量在程序中被引用时,不用事先对变量的数据类型进行定义或说明,系统会依据变量被赋值的类型自动进行类型识别。这样简化了程序,但使运行时间加长。,2.1.2 常量与变量 常量:是程序语句中取不变值的量。 数值常量:0.568 字符串常量:s=Tomorrow and Tomorrow 特殊常量:由系统默认给定一个符号来表示。,MATLAB 特
2、殊常量 i或j:虚数单位,定义为i2 = j2 = 1 Inf 或inf:正无穷大,由零做除数引入此常量 NaN:不定式,Not a Number,表示非数值量,产生于0/0,/,0*等运算 pi:圆周率的双精度表示 eps:容差变量,当某量的绝对值小于eps 时,可认为此量为零,即为浮点数的最小分辨率,PC 上此值为2-52 Realmin 或realmin:最小浮点数,2-1022 Realmax 或realmax:最大浮点数,21023,2. 变量: 在程序运行中其值可以改变的量,变量由变量名来表示。 MATLAB 中变量名的命名规则: 变量名必须以字母开头,且只能由字母、数字或者下画线
3、3 类符号组成,不能含有空格和标点符号等。 (2) 变量名区分字母的大小写。例如,“a”和“A”是不同的变量。 (3) 变量名不能超过63 个字符,第63 个字符后的字符被忽略。 (4) 关键字(如if、while 等)不能作为变量名。 (5) 最好不要用特殊常量符号作变量名。 常见的错误命名如f(x),y,y,a-2, 2A等。,2.1.3 标量、向量、矩阵与数组 (1) 数组:数组不是一个数学量,而是用于高级语言程序设计的概念,二维数组的数学原型是矩阵。数组元素按一维线性方式组织在一起,即为一维数组,一维数组的数学原型是向量。MATLAB 中,数组直接采用运算符,有自己独立的运算符和运算法
4、则。 (2) 矩阵:MATLAB 将矩阵作为基本运算量,可以直接实现矩阵的简单加减乘除以及与矩阵相关的其他运算。,(3) 向量:矩阵的特例,MATLAB中,n 维的行向量是一个1n 阶的矩阵,而列向量则当成n1阶的矩阵。 (4) 标量:MATLAB 中,既可视为简单变量,又可当成11 阶的矩阵。 (5) MATLAB 中,二维数组和矩阵的数据结构形式相同,但运算方式不同。即:二维数组和矩阵的表示、建立、存储根本没有区别,区别只在它们的运算符和运算法则不同。 (6) 数组的维和向量的维:数组的维是从数组元素排列后所形成的空间结构去定义的:线性结构是一维,平面结构是二维,立体结构是三维,还有四维以
5、至多维。向量的维相当于一维数组中的元素个数。,2.1.4 字符串 字符串在 MATLAB 中用单引号来标示的: 例:S=I Have a Dream. 内是一个字符串,S 是字符串变量。在MATLAB 中,字符串的存储是按其中字符逐个顺序单一存放的,且存放的是它们各自的ASCII 码,字符串实际可视为一个字符数组,其中的每个字符则是这个数组的一个元素。,2.1.5 运算符:算术、关系和逻辑运算符 1. 算术运算符 (1)矩阵算术运算符,(2) 数组算术运算符,数组的运算都是元素间的运算,即对应下标元素一对一的运算。,2. 关系运算符,3. 逻辑运算符,4. 运算符的优先级,2.1.6 命令、函
6、数、表达式和语句 1. 命令:如clear 2. 函数:包括基本函数和各种工具箱。最一般的引用格式是:函数名(参数1,参数2,),例:sin(A) 3. 表达式用多种运算符将常量、变量、函数等多种运算对象连接起来构成的运算式子就是MATLAB 的表达式。 例:A+B&C-sin(A*pi),(A+B)&C-sin(A*pi)。,4. 语句表达式本身即可视为一个语句。典型的语句是赋值语句,其一般的结构是:变量名=表达式。 例:F=(A+B)&C-sin(A*pi),2.2 向量运算 2.2.1 向量的生成 直接输入法:向量名=a1,a2,a3, 例:,A=2,3,4,5,6,B=1;2;3;4;
7、5,C=4 5 6 7 8 9A =2 3 4 5 6B =12345C =4 5 6 7 8 9,逗号的作用之一:矩阵一行中各元素间的分隔符。分号的作用之一:矩阵中行与行的分隔符。,2. 冒号表达式法 a1:step:an a1为向量的第一个元素,an为向量最后一个元素的限定值,step 是变化步长,省略步长时系统默认为1。 例:, A=1:2:10,B=1:10,C=10:-1:1,D=10:2:4,E=2:-1:10, F=0:2:7 A = 1 3 5 7 9 B = 1 2 3 4 5 6 7 8 9 10 C = 10 9 8 7 6 5 4 3 2 1 D = Empty mat
8、rix: 1-by-0 E = Empty matrix: 1-by-0 F = 0 2 4 6 8,注:an未必是生成的向量的最后一个元素。,3. 函数法 (1)线性等分:linspace( ) A=linspace(a1,an,n)a1是向量的首元素,an是向量的尾元素,n 把a1 至an 之间的区间分成向量的首尾之外的其他n-2 个元素,其步进为(an-a1)/(n-1)。省略n 则默认生成100个元素的向量。,例:A=linspace(1,50),B=linspace(1,30,10),(2) 对数等分A=logspace(a1,an,n),a1是向量首元素的幂,即A(1)=10a1;
9、an 是向量尾元素的幂,即A(n)=10an。n 是向量的维数。省略n 则默认生成50 个元素的对数等分向量。 例:A=logspace(0,49),B=logspace(0,4,5),冒号( a1:step:an)与 linspace(a1,an,n)的区别 (1)冒号表达式中,an不一定恰好是向量的最后一个元素, 而linspace表达式中,an一定是尾元素。 (2)a1与an确定时,冒号表达式依据步长确定向量个数,linspace则是依据向量个数确定步长。 (3) 实际应用时,同时限定尾元素和步长去生成向量,有时可能会出现矛盾,此时必须做出取舍。,2.2.2 向量的加减和数乘运算 维数相
10、同的行向量之间可以相加减, 维数相同的列向量也可相加减, 标量数值可以与向量直接相加减、乘除(标量与向量间的乘除运算就是数乘),维数不同的行向量或列向量间不可以加减运算。, A=1 2 3 4 5,B=3:7, C=linspace(2,4,3),AT=A,BT=BA =1 2 3 4 5B =3 4 5 6 7C =2 3 4AT =12345BT =34567, E1=A+B,E2=A-B,F=AT-BT, G1= 3*A,G2=B/3,G3=3+A,H=A+C,E1 = 4 6 8 10 12 E2 = -2 -2 -2 -2 -2 F = -2 -2 -2-2-2 G1 = 3 6 9
11、 12 15 G2 = 1.0000 1.3333 1.6667 2.0000 2.3333 G3 = 4 5 6 7 8 ? Error using = plusMatrix dimensions must agree.,2.2.3 向量的点、叉积运算 1. 点积运算:dot(A,B) 参与运算的两向量各对应位置上元素相乘后,再将各乘积相加,结果是一标量而非向量。(例如功的运算) 运算函数:dot(A,B),A、B 是维数相同的两向量。, A=1:3,B=linspace(1,3,3),AT=A,BT=B, A =1 2 3 B =1 2 3 AT =123 BT =123, e=dot(A
12、,B),f=dot(AT,BT) e =14 f =14,2. 叉积运算: cross(A,B)向量A、B 的叉积是一新向量C,C 的方向垂直于A 与B 所决定的平面。用三维坐标表示时A=Ax i + Ay j + Az kB=Bx i + By j + Bz kC=AB=(AyBz-AzBy)i + (AzBx -AxBz )j + (AxBy-AyBx )k 叉积运算的函数:cross(A,B),该函数计算的是A、B 叉积后各分量的元素值,且A、B 只能是三维向量。(例如洛仑兹力的计算), A=1:3,B=3:5,E=cross(A,B),F=cross(B,A) A =1 2 3 B =
13、3 4 5 E =-2 4 -2 F =2 -4 2, A=1:4,B=3:6,C=1 2,D=3 4 A =1 2 3 4 B =3 4 5 6 C =1 2 D =3 4 E=cross(A,B),F=cross(C,D) ? Error using = cross A and B must have at least one dimension of length 3. cross(A,C) ? Error using = cross A and B must be same size.,3. 混合积运算 该运算也只能发生在三维向量之间。 A=1 2 3,B=3 3 4,C=3 2 1,
14、D=dot(C,cross(A,B) A =1 2 3 B =3 3 4 C =3 2 1 D =4,2.3 矩阵运算 MATLAB中各种运算的对象就是矩阵,标量只是矩阵的特例。 2.3.1 矩阵元素的存储次序 MATLAB 规定矩阵元素在存储器中的存放次序是按列的先后顺序存放,即存完第1 列后,再存第2 列,依次类推。一维数组或者说向量元素是依其元素本身的先后次序进行存储。,2.3.2 矩阵元素的表示及相关操作 1. 元素的下标表示法: (1) 全下标方式:用行下标和列下标来标示矩阵中的一个元素。对一个mn 阶的矩阵A,其第i 行、第j 列的元素用全下标方式就表示成A(i,j)。 (2) 单
15、下标方式:将矩阵元素按存储次序的先后用单个数码顺序地连续编号。全下标元素A(i,j)对应的单下标表示便是A(s),其中s = (j-1)mi。 判别方法:括号()中是否有逗号,A=1 2 3;6 5 4;8 7 9A =1 2 36 5 48 7 9 A(2,3),A(6) ans =4ans =7 显示矩阵中全下标元素A(2,3)和单下标元素A(6)的值, A(1:2,3) ans =34 显示矩阵A 第1、2 两行的第3 列的元素值A(6:8) ans =7 3 4 显示矩阵A 单下标第68号元素,用一向量表示一下标区间,2. 矩阵元素的赋值 (1) 全下标方式:在给矩阵的单个或多个元素赋
16、值时,采用全下标方式接收。clear A(1:2,1:3)=1 1 1;1 1 1 A = 1 1 1 1 1 1 A(3,3)=2 A = 1 1 1 1 1 1 0 0 2 给原矩阵中并不存在的元素下标赋值会扩充矩阵阶数,注意补0 的原则,(2) 单下标方式:A(3:6)=-1 1 1 -1 %用一向量给单下标表示的连续多个矩阵元素赋值 A = 1 1 1 1 1 1 -1 -1 2 A(3)=0;A(6)=0 %用单下标对单一元素赋值 A = 1 1 1 1 1 1 0 0 2,(3) 全元素方式:将矩阵B 的所有元素全部赋值给矩阵A,即A(:)=B,不要求A、B同阶,只要求元素个数相等
17、。 A(:)=1:9 A = 1 4 7 2 5 8 3 6 9 A(3,4)=16,B=11 12 13;14 15 16;17 18 19;0 0 0 A = 1 4 7 0 2 5 8 0 3 6 9 16 B = 11 12 13 14 15 16 17 18 19 0 0 0,将43 阶矩阵B 按列全部赋给34 阶矩阵A A(:)=B A = 11 0 18 16 14 12 0 19 17 15 13 0,3. 矩阵元素的删除用空矩阵(用表示)将矩阵中的单个元素、某行、某列、某矩阵子块及整个矩阵中的元素删除。, clear A(2:3,2:3)=1 1;2 2 A =0 0 00
18、1 10 2 2 A(2,:)= A =0 0 00 2 2 删除A 矩阵的第2 行,“:”可表示所有行或列, A(1:2)= A =0 2 0 2 删除新矩阵A 的前两个单下标元素,矩阵变成向量 A= A = 删除所有元素,2.3.3 矩阵的创建 MATLAB中,矩阵与其他量区别:矩阵的所有元素必须放在方括号 内;每行的元素之间需用逗号或空格隔开;矩阵的行与行之间用分号或回车符分隔;元素可以是数值或表达式。,1. 直接输入法x=27;y=3; A=1 2 3;4 5 6;B=2,3,4;7,8,9;12,2*6+1,14; C=3 4 5 7 8 x/y 10 11 12; A,B,C,A
19、=1 2 34 5 6,B =2 3 47 8 912 13 14,C =3 4 57 8 910 11 12,2. 抽取法:从大矩阵中抽取出需要的小矩阵(或子矩阵)。 (1) 用全下标方式 clear A=1 2 3 4;5 6 7 8;9 10 11 12;13 14 15 16,A =1 2 3 45 6 7 89 10 11 1213 14 15 16,取矩阵A行数为13,列数为23 的元素构成子矩阵B B=A(1:3,2:3) B =2 36 710 11,取矩阵A 行数为1、3,列数为2、4 的元素构成子矩阵C C=A(1 3,2 4) C =2 410 12,取矩阵A 第4 行,
20、所有列,“:”可表示所有行或列 D=A(4,:) D =13 14 15 16,取2、4 行,最后列,用“end”表示某一维数中的最大值 E=A(2 4,end) E =816,(2) 用单下标方式clear A=1 2 3 4;5 6 7 8;9 10 11 12;13 14 15 16,A =1 2 3 45 6 7 89 10 11 1213 14 15 16,B=A(4:6;3 5 7;12:14)B =13 2 69 2 1015 4 8,C=A(4:5,7,10:13)C =13 2 10 7 11 15 4,注:必须在单下标引用中的最外层加上一对方括号分号不能少。,3. 拼接法:
21、小矩阵拼成大矩阵,注意行列匹配。, A=1 2 3;4 5 6;7 8 9,B=9 8;7 6;5 4,C=4 5 6;7 8 9A =1 2 34 5 67 8 9B =9 87 65 4C =4 5 67 8 9,E=A B;B AE =1 2 3 9 84 5 6 7 67 8 9 5 49 8 1 2 37 6 4 5 65 4 7 8 9,F=A;CF =1 2 34 5 67 8 94 5 67 8 9,4. 函数法,zeros(m,n):生成mn 阶的全0 矩阵 ones(m,n):生成mn 阶的全1 矩阵 rand(m,n):生成取值在01之间满足均匀分布的随机矩阵 randn
22、(m,n):生成满足正态分布的随机矩阵 eye(m,n):生成mn 阶的单位矩阵如m=n,则可简写。如zeros(m), ones(m)等。 magic(m):生成魔方矩阵, A=ones(3,4),B=eye(3,4),C=magic(3),D=eye(3)A =1 1 1 11 1 1 11 1 1 1 B =1 0 0 00 1 0 00 0 1 0,C =8 1 63 5 74 9 2 D =1 0 0 0 1 0 0 0 1, format rat;D=hilb(3),E=pascal(4) D =1 1/2 1/3 1/2 1/3 1/4 1/3 1/4 1/5 E =1 1 1
23、1 1 2 3 4 1 3 6 10 1 4 10 20 HILB(N) is the N by N matrix with elements 1/(i+j-1) format rat,即format rational,5. 拼接函数和变形函数法,cat(n,A1,A2,A3,),n=1 时,表示沿行方向拼接,增加行;n=2,表示沿列方向拼接,增加列。 A1=1 2 3;9 8 7;4 5 6,A2=A1 A1 =1 2 3 9 8 7 4 5 6 A2 =1 9 4 2 8 5 3 7 6 cat(2,A1,A2) ans =1 2 3 1 9 4 9 8 7 2 8 5 4 5 6 3 7
24、 6, cat(1,A1,A2,A1) ans =1 2 3 9 8 7 4 5 6 1 9 4 2 8 5 3 7 6 1 2 3 9 8 7 4 5 6,repmat: repmat(A,m,n),m 和n 分别是沿行和列方向重复拼接矩 阵A 的次数。 A1 A1 =1 2 3 9 8 7 4 5 6 repmat(A1,2,2) ans =1 2 3 1 2 3 9 8 7 9 8 7 4 5 6 4 5 6 1 2 3 1 2 3 9 8 7 9 8 7 4 5 6 4 5 6,reshape reshape(A,m,n),m 和n 分别是变形后新矩阵的行列数。 A=linspace(
25、2,18,9) A =2 4 6 8 10 12 14 16 18 B=reshape(A,3,3) B =2 8 14 4 10 16 6 12 18 a=20:2:24,b=a a =20 22 24 b =20 22 24,C=B b,D=reshape(C,4,3) C =2 8 14 20 4 10 16 22 6 12 18 24 D =2 10 18 4 12 20 6 14 22 8 16 24,6. 加载法将已经存放在外存中的.mat 文件读入MATLAB 工作空间中。 a6=magic(3) a6 =8 1 63 5 74 9 2 save sam2-23 a6 dir .
26、 sam2-23.mat, clear, load sam2-23 a6 whosName Size Bytes Classa6 3x3 72 double arrayGrand total is 9 elements using 72 bytes,7. M 文件法M文件法和加载法相似,都是将保存在外存中的矩阵读入内存工作空间中,不同点在于加载法读入的是数据文件(.mat),而M 文件法读入的是内容仅为矩阵的.m文件。在程序设计中,当矩阵的规模较大,而这些矩阵又要经常被引用时,先用直接输入法将某个矩阵准确无误地赋值给一个程序中会被反复引用的矩阵,且用M文件将其保存。每当用到该矩阵时,就只需在程
27、序中引用该M文件即可。 例:mfile,2.3.4 矩阵的代数运算 1. 求矩阵行列式的值(determinant):det(A), A=3 2 4;1 -1 5;2 -1 3,D1=det(A)A =3 2 41 -1 52 -1 3D1 =24, B=ones(3),D2=det(B),C=pascal(4),D3=det(C)B =1 1 11 1 11 1 1D2 =0C =1 1 1 11 2 3 41 3 6 101 4 10 20D3 =1,矩阵必须是方阵,2. 矩阵加减、数乘与乘法, A=1 3;2 -1;B=3 0;1 2; A+Bans =4 33 1 2*Aans =2
28、64 -2 2*A-3*Bans =-7 61 -8,两矩阵相加减就是对应的元素相加减。(注意:两矩阵的阶数必须相同) 矩阵与标量相加减,MATLAB自动把该标量扩展成同阶等元素矩阵进行相加减,即将矩阵的所有元素与该标量逐一进行加减。 矩阵与标量相乘,矩阵的所有元素与该标量逐一进行加乘。,矩阵的乘法 A:np阶矩阵 B: pm阶矩阵 C=A*B: nm阶矩阵,其任一元素C(i,j)的值为A阵的第i行和B阵的第j列对应元素乘积的和。 C(i,j)=A(i,1)B(1,j)+ A(i,2)B(2,j)+ A(i,p)B(p,j)=k A(i,k)B(k,j) 矩阵相乘有定义的前提是两矩阵内阶相等。
29、,a:a11 a12 a13a21 a22 a23,b:b11 b12b21 b22b31 b32,c=a*b a11*b11+a12*b21+a13*b31 a11*b12+a12*b22+a13*b32 a21*b11+a22*b21+a23*b31 a21*b12+a22*b22+a23*b32,d=b*a b11*a11+b12*a21 b11*a12+b12*a22 b11*a13+b12*a23 b21*a11+b22*a21 b21*a12+b32*a22 b21*a13+b22*a23 b31*a11+b32*a21 b31*a12+b32*a22 b31*a13+b32*a2
30、3,a:a11 a12 a13,b:b11 b21b31,c=a*b a11*b11+a12*b21+a13*b31,d=b*a b11*a11 b11*a12 b11*a13 b21*a11 b21*a12 b21*a13 b31*a11 b31*a12 b31*a13,a =8 1 63 5 7c1=a*bc1 =187 69 70 184136 110 101 163,b =16 2 3 135 11 10 89 7 6 12,c2=b*a ? Error using = mtimes Inner matrix dimensions must agree.,3. 求矩阵的逆矩阵(inve
31、rse):对于任意nn方阵A,如果能找到一个同阶的方阵V,使AV=I,其中I为n阶的单位矩阵eye(n)。则V就是A的逆矩阵。用数学符号表示为:V=A-1。逆矩阵V的存在条件:行列式det(A)的值不等于0。如果矩阵A的det(A)=0,那么A称为奇异矩阵。MATLAB中逆矩阵V的求解函数:V=inv(A), A=1 0 1;2 1 2;0 4 6 A =1 0 12 1 20 4 6 format rat;A1=inv(A) A1 =-1/3 2/3 -1/6 -2 1 0 4/3 -2/3 1/6 A1*A ans =1 0 0 0 1 0 0 0 1,4. 矩阵的除法在线性代数中,本无除
32、法,只有“逆矩阵A-1”。矩阵除法是MATLAB从逆矩阵的概念引申来的。 (1) 左除方程: D*X = B (其中X为未知矩阵)左乘inv(D): inv(D)*D*X = inv(D)*BI*X = inv(D)*BX = inv(D)*B 将D的逆阵左乘以B,记成D,称为“左除”,所以X = DB,求下列线性方程组的解,设X=x1;x2;x3;x4为列向量,矩阵A= 1 4 7 6;0 2 1 1;0 1 1 3;1 0 1 1,B=0;-8;-2;1为列向量,则方程形式为AX=B,其求解过程用左除:XAB, A=1 4 -7 6;0 2 1 1;0 1 1 3;1 0 1 -1,B=0
33、;-8;-2;1,x=AB A =1 4 -7 6 0 2 1 1 0 1 1 3 1 0 1 -1 B =0 -8 -2 1 x =3 -4 -1 1, A*xans =-0.0000-8.0000-2.00001.0000, inv(A)*Bans =3.0000-4.0000-1.00001.0000,(2) 右除方程: X*D = B (其中X为未知矩阵)右乘inv(D): X*D*inv(D) = B*inv(D)X*I = B*inv(D)X = B*inv(D) 将D的逆阵右乘以B,记成/D ,称为“右除”,所以X = B/D,设X=x1 x2 x3 x4为行向量,矩阵A=1 0
34、 0 1;4 2 1 0;-7 1 1 1;6 1 3 -1,矩阵B=0 8 2 1为行向量,则方程形式为XA=B,其求解过程用右除X=B/A: A=1 0 0 1;4 2 1 0;-7 1 1 1;6 1 3 -1,B=0 -8 -2 1,x=B/A A =1 0 0 14 2 1 0-7 1 1 16 1 3 -1 B =0 -8 -2 1 x =3.0000 -4.0000 -1.0000 1.0000 B*inv(A) ans =3.0000 -4.0000 -1.0000 1.0000,5. 求矩阵的秩 6. 求矩阵的特征值与特征向量(Eigenvalues and eigenvec
35、tors.),矩阵的乘幂与开方 矩阵的乘幂,运算符: 底数是矩阵,指数是标量:这就是矩阵与自身相乘,为保证内阶数相同,底数矩阵必须是方阵。 底数是标量,指数是矩阵:指数矩阵必须是方阵。 底数是矩阵,指数是矩阵:出错矩阵的开方(Matrix square root):运算的依据在于开方所得矩阵相乘正好等于被开方的矩阵。 开方函数:sqrtm(A), A=1 -3 3;3 -5 3;6 -6 4; A3ans =28 -36 3636 -44 3672 -72 64 A*A*Aans =28 -36 3636 -44 3672 -72 64, 3A ans =40.5556 -40.4444 40
36、.444440.4444 -40.3333 40.444480.8889 -80.8889 81.0000 A1.2 ans =1.7097 - 0.6752i -3.5683 - 0.6752i 3.5683 + 0.6752i3.5683 + 0.6752i -5.4270 - 2.0256i 3.5683 + 0.6752i7.1367 + 1.3504i -7.1367 - 1.3504i 5.2780 - 0.0000i, A=1 -3 3;3 -5 3;6 -6 4; A1=sqrtm(A) A1 =1.0000 + 0.7071i -1.0000 + 0.7071i 1.0000
37、 - 0.7071i1.0000 - 0.7071i -1.0000 + 2.1213i 1.0000 - 0.7071i2.0000 - 1.4142i -2.0000 + 1.4142i 2.0000 + 0.0000i A12 ans =1.0000 -3.0000 - 0.0000i 3.0000 3.0000 - 0.0000i -5.0000 + 0.0000i 3.0000 - 0.0000i6.0000 - 0.0000i -6.0000 + 0.0000i 4.0000 - 0.0000i, A=magic(3) A =8 1 63 5 74 9 2 (sqrtm(A)2 a
38、ns =8.0000 + 0.0000i 1.0000 - 0.0000i 6.0000 + 0.0000i3.0000 - 0.0000i 5.0000 - 0.0000i 7.0000 + 0.0000i4.0000 - 0.0000i 9.0000 + 0.0000i 2.0000 + 0.0000i sqrtm(A2) ans =8.2660 3.3670 3.36703.3670 8.2660 3.36703.3670 3.3670 8.2660,8. 矩阵的指数与对数 矩阵的指数与对数运算也是以矩阵为整体而非针对元素的运算。矩阵的指数与对数运算是一对互逆的运算。 矩阵指数运算函数:
39、expm( ) 矩阵对数运算函数:logm( ),以e为底!, A=1 -1 1;2 -4 1;1 -5 3 A =1 -1 12 -4 11 -5 3 Ae=expm(A) Ae =1.3719 -3.7025 4.48100.3987 -2.3495 2.9241-2.5254 -7.6138 9.5555 Ae1=logm(Ae) Ae1 =1.0000 -1.0000 1.00002.0000 -4.0000 1.00001.0000 -5.0000 3.0000,9. 矩阵转置 共轭转置:运算符为 非共轭转置:运算符为transpose()实矩阵:共轭转置与非共轭转置的效果没有区别,
40、 复矩阵:共轭转置是在转置的同时实现共轭,而转置不进行共轭操作。,a=1:9 a =1 2 3 4 5 6 7 8 9 A=reshape(a,3,3) A =1 4 72 5 83 6 9 B=A B =1 2 34 5 67 8 9 Z=A+i*B Z =1.0000 + 1.0000i 4.0000 + 2.0000i 7.0000 + 3.0000i2.0000 + 4.0000i 5.0000 + 5.0000i 8.0000 + 6.0000i3.0000 + 7.0000i 6.0000 + 8.0000i 9.0000 + 9.0000i,Z=A+i*B Z =1.0000 +
41、 1.0000i 4.0000 + 2.0000i 7.0000 + 3.0000i2.0000 + 4.0000i 5.0000 + 5.0000i 8.0000 + 6.0000i3.0000 + 7.0000i 6.0000 + 8.0000i 9.0000 + 9.0000i Z ans =1.0000 - 1.0000i 2.0000 - 4.0000i 3.0000 - 7.0000i4.0000 - 2.0000i 5.0000 - 5.0000i 6.0000 - 8.0000i7.0000 - 3.0000i 8.0000 - 6.0000i 9.0000 - 9.0000i
42、 transpose(Z) ans =1.0000 + 1.0000i 2.0000 + 4.0000i 3.0000 + 7.0000i4.0000 + 2.0000i 5.0000 + 5.0000i 6.0000 + 8.0000i7.0000 + 3.0000i 8.0000 + 6.0000i 9.0000 + 9.0000i,10. 矩阵的提取与翻转,triu(A):提取矩阵A 的右上三角(triangular)元素,其余元素补0 tril(A):提取矩阵A 的左下三角元素,其余元素补0 diag(A):提取矩阵A 的对角线(Diagonal)元素 flipud(A) 矩阵A 沿水平轴上下翻转(flip) fliplr(A) 矩阵A 沿垂直轴左右翻转 flipdim(A,dim) 矩阵A 沿特定轴翻转。dim=1,按行翻转;dim=2,按列翻转 rot90(A) 矩阵A 整体逆时针旋转90, a=linspace(1,23,12) a =1 3 5 7 9 11 13 15 17 19 21 23 A=reshape(a,4,3) A =1 3 5 79 11 13 1517 19 21 23 diag(A) ans =11121,