China-pub.coM 下载 第3章矩阵运算 MATLAB中的大多数运算可以直接对矩阵应用。除了在第2.4节中讨论的算术运算+、一、 *、八、/人、1外,还有用于转置和共轭的运算符、有理数运算符和逻辑运算符。 MATLAB学生版的用户应该知道矩阵中的元素总数极限是16384。 此外,矩阵有算术函数和逻辑函数,有些函数仅能在二维矩阵中使用。 3.1加法和减法 如果矩阵A和B具有相同的维数,那么就可以定义两个矩阵的和A+B和两个矩阵的差A一B。 矩阵A士B,即元素agp士bgp。在MATLAB中,一个mXn矩阵A和一个标量,即一个1X1矩阵 s之间也能进行加和减运算。矩阵A+s得到与A相同的维数,元素为a十s。 ■例3.1 假设A和B定义如下: A-(G)B=(8) MATLAB命令 Add=A+B, sub-AB,Add100=A+100 得到结果: Add 6 8 10 12 Sub -4 -4 -4 -4 Add100= 101102 103 104 ■ 3.2乘法 如果矩阵A的列数等于矩阵B的行数,那么矩阵相乘,即C=AB,就被定义为二维矩阵。如果 不是这种情况,MATLAB就返回一个错误信息。只有一个例外就是这两个矩阵之一是1X1,如一 个标量,那么MATLAB是可以接受的。在MATLAB中,乘法的运算符是*,因此,命令是C=A*B。 元素c是A的第i行和B的第j列的点积。点积的定义可参见命令集23和附录B。矩阵C有与 A相同的行数和与B相同的列数
下载 第3章 矩 阵 运 算 M AT L A B中的大多数运算可以直接对矩阵应用。除了在第 2 . 4节中讨论的算术运算 +、-、 *、^、/、\外,还有用于转置和共轭的运算符、有理数运算符和逻辑运算符。 M AT L A B学生版的用户应该知道矩阵中的元素总数极限是 1 6 3 8 4。 此外,矩阵有算术函数和逻辑函数,有些函数仅能在二维矩阵中使用。 3.1 加法和减法 如果矩阵A和B具有相同的维数,那么就可以定义两个矩阵的和 A+B和两个矩阵的差A-B。 矩阵A±B,即元素ai j…p±bi j…p。在M AT L A B中,一个m×n矩阵A和一个标量,即一个1×1矩阵 s之间也能进行加和减运算。矩阵 A+s得到与A相同的维数,元素为ai j+s。 ■ 例3 . 1 假设A和B定义如下: M AT L A B命令 Add=A+B, Sub=A-B, Add100=A+100 得到结果: 3.2 乘法 如果矩阵A的列数等于矩阵B的行数,那么矩阵相乘,即C = A B,就被定义为二维矩阵。如果 不是这种情况,M AT L A B就返回一个错误信息。只有一个例外就是这两个矩阵之一是1×1,如一 个标量,那么M AT L A B是可以接受的。在M AT L A B中,乘法的运算符是*,因此,命令是C = A*B。 元素ci j是A的第i行和B的第j列的点积。点积的定义可参见命令集 2 3和附录B。矩阵C有与 A相同的行数和与B相同的列数。 ■
38 China-pub.com MATLAB5手册 下载 对于方阵,也定义了积BA,但其结果通常与AB不同。 ■例3.2 (a)假设A和B如同例3.1,命令 A,B,MultAB=B,MultBA 在屏幕上显示如下的结果: A= 1 2 3 B= S 6 7 8 MultAB 19 22 43 50 MultBA 23 34 31 46 (b)令x和y为: x=(123) y= 10 100 命令s=x*y, M=y*x,结果为: S= 321 M= 1 2 10 20 30 100 200 300 ■ MATLAB也包含其他乘积。命令dot(x,y)得到具有相同元素数量的两个向量x和y的点 积,也称为标量积或内积。如果点积为零,则两个向量是正交的。如果A和B具有相同的维数, 则定义两个矩阵A和B的点积,在MATLAB中定义列方式。其结果是一个行向量,其元素是第 1列、第2列等的点积,可参见附录B。 命令集23 点积 dot(x,y) 得到向量x和y的点积 dot(A,B) 得到一个长度为的行向量,这里的元素是A和B对应列的点积。矩 阵A和B必须是具有相同的维数mXn。多维矩阵可参见helpdesk。 dot(A,B,dim在dim数组中给出A和B的点积
对于方阵,也定义了积B A,但其结果通常与A B不同。 ■ 例3 . 2 (a) 假设A和B如同例3 . 1,命令 A, B, MultAB=A*B, MultBA=B*A 在屏幕上显示如下的结果: (b) 令x和y为: 命令s = x* y, M = y* x,结果为: M AT L A B也包含其他乘积。命令 d o t ( x,y )得到具有相同元素数量的两个向量 x和y的点 积,也称为标量积或内积。如果点积为零,则两个向量是正交的。如果 A和B具有相同的维数, 则定义两个矩阵A和B的点积,在M AT L A B中定义列方式。其结果是一个行向量,其元素是第 1列、第2列等的点积,可参见附录B。 命令集2 3 点积 dot(x, y) 得到向量x和y的点积 dot(A, B) 得到一个长度为n的行向量,这里的元素是A和B对应列的点积。矩 阵A和B必须是具有相同的维数m×n。多维矩阵可参见h e l p d e s k。 dot(A, B, dim)在d i m数组中给出A和B的点积。 3 8 M ATLAB 5 手册 下载 ■
China-bub.com 第3章矩阵运算 下载 对于各具三个元素的两个向量x和y,命令cross(x,y给出向量积或叉积,即: xx y=(x2y3-x3y2 x3y1-x1y3 x1y2-X2)1) 对向量x和y,向量xXy是正交的。 cross命令也可以应用于3Xn矩阵,其结果是一个3Xn矩阵,这里的第i列是A和B中的第 列的叉积。 命令集24 叉积 cross(x,y) 得到向量x和y的叉积。 cross(A,B) 得到一个3×n矩阵,其中的列是A和B对应列的叉积。矩 阵A和B必须具有相同的维数3×n。 cross(A,B, dim)在dim数组中给出向量A和B的叉积。A和B必须具有相同 的维数,size(A,dim和size(B,dim必须是3。 ■例3.3 假设: x=(100) y=(010) 命令crossprod=cross(8,y得到: crossprod= 001 对x和y,它是正交的,即: scalarl=dot(x,crossprod),scalar2=dot(y,crossprod) 得: scalar1 0 scalar2 0 ■ 在MATLAB中,有一个完成二维矩阵卷积的函数。可以使用FIR滤波器(有限脉冲响应)作 为一个自变量,这部分内容在helpdesk中描述。 命令集25 矩阵的卷积 conv2 (A,B) 返回矩阵A和B的二维卷积 conv2(hcol,hrow,A)矩阵A与向量hcol列方式和向量hrow行方式的卷积。 conv2(…,format) 得到一个卷积的特殊形式。参数format必须是下列 字符串之一: “same'返回最接近中心的部分卷积,其维数与相同。 “vaid'仅返回不考虑边缘补零计算的部分卷积。 convn(A,B) 返回矩阵A和B的多维卷积。 convn (.format) 得到卷积的一个特殊形式,如上所示
对于各具三个元素的两个向量 x和y,命令cross(x, y)给出向量积或叉积,即: 对向量x和y,向量x×y是正交的。 c r o s s命令也可以应用于3×n矩阵,其结果是一个3×n矩阵,这里的第i列是A和B中的第 i列的叉积。 命令集2 4 叉积 cross(x, y) 得到向量x和y的叉积。 cross(A, B) 得到一个3×n矩阵,其中的列是 A和B对应列的叉积。矩 阵A和B必须具有相同的维数3×n。 cross(A, B, dim) 在d i m数组中给出向量 A和B的叉积。A和B必须具有相同 的维数,size(A, dim)和size(B, dim)必须是3。 ■ 例3 . 3 假设: x=(1 0 0) y=(0 1 0) 命令crossprod=cross(x, y) ,得到: c r o s s p r o d = 0 0 1 对x和y,它是正交的,即: scalar1=dot(x,crossprod), scalar2=dot(y,crossprod) 得: 在M AT L A B中,有一个完成二维矩阵卷积的函数。可以使用 F I R滤波器(有限脉冲响应)作 为一个自变量,这部分内容在 h e l p d e s k中描述。 命令集2 5 矩阵的卷积 conv2(A, B) 返回矩阵A和B的二维卷积 conv2(hcol, hrow, A)矩阵A与向量h c o l列方式和向量h ro w行方式的卷积。 c o n v 2 (…, f o r m a t ) 得到一个卷积的特殊形式。参数 f o r m a t必须是下列 字符串之一: ‘s a m e’返回最接近中心的部分卷积,其维数与A相同。 ‘v a l i d’仅返回不考虑边缘补零计算的部分卷积。 convn(A, B) 返回矩阵A和B的多维卷积。 c o n v n (…, format) 得到卷积的一个特殊形式,如上所示。 第3章 矩 阵 运 算 3 9 下载 ■
40 China-pub.coM MATLAB5手册 下载 Kronecker张量积可以用于创建大的矩阵,它由命令kron(A,B)得到。如果A是一个mXn 矩阵,B是一个kXr矩阵,那么这个命令就返回一个m·kXr·n的矩阵。 命令集26 张量积 kron(A,B) 得到A和B的Kronecker张量积。 ■例3.4 假设: A=(子9)B=(G6 命令K=kron(A,的结果为: K= 4 6 0 0 2 0 2 0 0 -1 -2 -3 3 -1 0 -1 0 1 ■ 3.3除法 在MATLAB中,有两个矩阵除法的符号,左除1和右除/。如果A是一个非奇异方阵,那么 A\B和B/A对应A的逆与B的左乘和右乘,即分别等价于命令inv(A)*B和B*inv(A)。可是, MATLAB执行它们时是不同的,如例3.5所示。A的逆,inv(A)或A-在第7.1节中介绍。 如果A是一个方阵,那么X=A\B是矩阵方程AX=B的解A-B,这里的X具有与B相同的维 数。在B=b是一个列向量这样一个特殊情况下,x=A\b是线性系统AX=b的解。参见第7.2节。 如果A是一个m>n的mXn矩阵,X=A\B得到矩阵方程AX=B的最小二乘解,参见第7.7节。 矩阵方程XA=B的解是X=B/A,它等同于(A'B')',即右除可以由左除定义。这里,撇 号’表示转置,这将在第3.4节中进行说明。 ■例3.5 (a)设A和B如例3.1一样定义,命令 A,B,Right=B/A,Left=A得到: A= 1 2 B= 6 6 7 8 Right -1 2 -2 3
K r o n e c k e r张量积可以用于创建大的矩阵,它由命令 kron(A, B)得到。如果A是一个m×n 矩阵,B是一个k×r矩阵,那么这个命令就返回一个 m·k×r·n的矩阵。 命令集2 6 张量积 k r o n ( A , B ) 得到A和B的K r o n e c k e r张量积。 ■ 例3 . 4 假设: 命令K=kron(A, B)的结果为: 3.3 除法 在M AT L A B中,有两个矩阵除法的符号,左除 \和右除/。如果A是一个非奇异方阵,那么 A \ B和B / A对应A的逆与B的左乘和右乘,即分别等价于命令 i n v ( A )*B和B*i n v ( A )。可是, M AT L A B执行它们时是不同的,如例 3 . 5所示。A的逆,i n v ( A )或A-1在第7 . 1节中介绍。 如果A是一个方阵,那么 X = A \ B是矩阵方程A X=B的解A-1B,这里的X具有与B相同的维 数。在B=b是一个列向量这样一个特殊情况下, x = A \ b是线性系统A X=b的解。参见第7 . 2节。 如果A是一个m>n的m×n矩阵,X = A \ B得到矩阵方程A X=B的最小二乘解,参见第7 . 7节。 矩阵方程X A=B的解是X=B / A,它等同于( A′\ B′)′,即右除可以由左除定义。这里,撇 号′表示转置,这将在第3 . 4节中进行说明。 ■ 例3 . 5 (a) 设A和B如例3 . 1一样定义,命令 A,B,Right=B/A, Left=A\B 得到: 4 0 M ATLAB 5 手册 下载 ■
China-pub.com 第3章矩阵运算 41 下载 Left -3-4 45 如果输入Right-B*inv(A)和Left=inv(A)*B,则得到 Right -1.0000 2.0000 -2.0000 3.0000 Left -3.0000 -4.0000 4.0000 5.0000 这分别与用/和计算的矩阵结果是一致的,但浮点格式表明它们的计算过程是不一样的。 (b)设下列A和b: b- 17 5 1 系统Ax=b的解在MATLAB中写作x=A\b,得到: X 1.0000 2.0000 3.0000 (c)使用如上的A和b,检查求解系统Ax=b的运算次数。 命令f1ops(0);x=inv(A)b:f1op给出结果: ans= 109 命令f1ops(0);X=A\b;f1给出结果: ans= 72 因此,在MATLAB中求解一个系统用左除比用逆和乘法所需的运算次数要少。命令 f1ops的定义参见第2.5节。 3.4转置和共轭 一个重要的运算是转置和共轭转置,它在MATLAB中用撇'表示。在课本中,这种运算经 常用*和表示 如果A是一个实数,那么它被转置时,第1行变成第1列,第2行变成第2列,依此类推,一 个mXn矩阵变为一个n×m矩阵。如果矩阵是方阵,那么这个矩阵在主对角线反映出来。 如果矩阵A的元素a是复数,那么所有元素也是共轭的。矩阵A'在项(i,)上含有ai。 如果仅希望转置,在撇号之前输入一点,‘,A.表示转置,其结果与coj(A)相同。如 果A是实数,那么A'与A.相同。 ■例3.6 假设A和b与例3.5(b)相同。 Transp=A',Transpb=b',得到: Transp 11 0
如果输入R i g h t = B*i n v ( A )和L e f t = i n v ( A )*B,则得到 这分别与用/和\计算的矩阵结果是一致的,但浮点格式表明它们的计算过程是不一样的。 (b) 设下列A和b: 系统A x=b的解在M AT L A B中写作x = A \ b,得到: (c) 使用如上的A和b,检查求解系统A x=b的运算次数。 命令f l o p s ( 0 ) ; x = i n v ( A )*b; flops给出结果: a n s = 1 0 9 命令flops(0); X=A\b; flops 给出结果: a n s = 7 2 因此,在 M AT L A B中求解一个系统用左除比用逆和乘法所需的运算次数要少。命令 f l o p s的定义参见第2 . 5节。 3.4 转置和共轭 一个重要的运算是转置和共轭转置,它在 M AT L A B中用撇´表示。在课本中,这种运算经 常用*和H表示 如果A是一个实数,那么它被转置时,第 1行变成第1列,第2行变成第2列,依此类推,一 个m×n矩阵变为一个n×m矩阵。如果矩阵是方阵,那么这个矩阵在主对角线反映出来。 如果矩阵A的元素ai j是复数,那么所有元素也是共轭的。矩阵 A´在项(i, j)上含有 。 如果仅希望转置,在撇号之前输入一点 .´,A.´表示转置,其结果与 c o n j ( A ´ ) 相同。如 果A是实数,那么A´与A.´相同。 ■ 例3 . 6 假设A和b与例3 . 5 ( b )相同。 T r a n s p = A´, T r a n s p b = b´,得到: aji 第3章 矩 阵 运 算 4 1 下载 ■
42 China-bub.com MATLAB5手册 下载 3 2 Transpb 22 17 13 3.5元素操作算术运算 算术运算也可以元素与元素逐次进行。矩阵的维数要相同,可以是多维的。如果运算是 由一点进行的,那么这个运算实行的是元素方式。 对于加法和减法,数组运算和矩阵运算没有差别。数组运算符是: 注意,并没有列出,这个点在那种情况下具有不同的含义。这个操作符仅给出转置, 与'相反,'给出了共轭转置,详见第3.4节。 ■例3.7 假设定义如下矩阵: A=()B-(1)c=(3+i+3对) (a)A*B得: ans 7 -1 0 (b)B./A得: ans 7 -1 0 (c)B.2得: ans 49 4 1 0 (d)A.B得: ans 1 4 -1 1 (e)基数是标量,而指数是一个矩阵,2.[1234]得: ans= 2 8 16 (DC.得: ans 1.0000+2.0000i 3.0000+1.00001 5.0000-2.0000i1.0000+3.0000i ■
3.5 元素操作算术运算 算术运算也可以元素与元素逐次进行。矩阵的维数要相同,可以是多维的。如果运算是 由一点进行的,那么这个运算实行的是元素方式。 对于加法和减法,数组运算和矩阵运算没有差别。数组运算符是: + - . * . / . \ . ^ 注意, .并没有列出,这个点在那种情况下具有不同的含义。这个操作符仅给出转置, 与¢相反,¢给出了共轭转置,详见第 3 . 4节。 ■ 例3 . 7 假设定义如下矩阵: (a) A.*B得: (b) B./A得: (c) B.^2得: (d) A.^B得: (e) 基数是标量,而指数是一个矩阵, 2.^[1 2 3 4]得: a n s = 2 4 8 1 6 (f) C.´ 得: 4 2 M ATLAB 5 手册 下载 ■ ■
China-pub.coM 第3章矩阵运算 43 下载 可参见例13.1,它也使用了数组运算。 3.6元素操作函数 在MATLAB中预定义的数学标准函数(见第2.4节)是基于矩阵对元素的运算。如果f是这样 一个函数,A是带元素a的一个矩阵,那么A)=a)。如果元素是复数,那么根据这个函数 产生的矩阵也可以是复数,矩阵的维数没有改变。 ■例3.8 令A、B和C为: (a)abs(A)得: ans 0 3 6 X % ⑤ (b)cos(B)得: ans -1.0000 1.0000 0.0000 0.7071 (c)sin(abs(c))得: ans 0.9878 0.0000 0 0.7867 ■ 数组运算符和数组函数在MATLAB中十分有用,用户可以定义自己的数组函数,并把它 们存放在M文件中,可参见第2.9节。 ■例3.9 函数sincos(x)=sin(x)cos(x)是一个非标准MATLAB函数,可是,你可以定义自己的函数 sincos并存放在文件sincos..m中。 function y=sincos(x) y=sin(x).+cos(x); 可如下调用sincos: y1 sincos(pi),y2 sincos([o pi/4 pi/2]) y1= -1.2246e-16 y2= 0 0.5000 0.0000
可参见例1 3 . 1,它也使用了数组运算。 3.6 元素操作函数 在M AT L A B中预定义的数学标准函数 (见第2 . 4节)是基于矩阵对元素的运算。如果 f是这样 一个函数,A是带元素ai j的一个矩阵,那么 f(A)i j=f(ai j)。如果元素是复数,那么根据这个函数 产生的矩阵也可以是复数,矩阵的维数没有改变。 ■ 例3 . 8 令A、B和C为: (a) a b s ( A )得: (b) c o s ( B )得: (c) s i n ( a b s ( C ) )得: 数组运算符和数组函数在 M AT L A B中十分有用,用户可以定义自己的数组函数,并把它 们存放在M文件中,可参见第2 . 9节。 ■ 例3 . 9 函数s i n c o s (x) = s i n (x) c o s (x)是一个非标准 M AT L A B函数,可是,你可以定义自己的函数 s i n c o s并存放在文件s i n c o s . m中。 function y=sincos(x) y = s i n ( x ) .*c o s ( x ) ; 可如下调用s i n c o s: 第3章 矩 阵 运 算 4 3 下载 ■
44 China-pub.coM MATLAB5手册 下载 看到,应该为0值的y1是一个十分小的数。事实上,ePs是较大的。如果用一个向量作为 一个自变量来调用sincos,因为sin和cos返回向量,所以其结果是一个向量。当绘制函数图 形时,这是十分有用的。 M文件的应用可参见第12章和第13章。 3.7矩阵的乘方与函数 对于二维方阵,A的p次乘方可以用A实现。如果p是一个正整数,那么这个幂可以由许 多矩阵乘法运算定义。对于p=0,得到与A维数相同的同一个矩阵:当p<0时,如果A存在, 可定义Ap,它是与inv(A)(-p)相同。 象exp(A)和sqrt(A)那样的MATLAB表达式可视为数组运算(参见第3.6节),即它们是对A中 元素逐个运算。 MATLAB也能处理方阵函数。例如A(A的平方根)或。举例如下: eA=1+A+ A2,A3 2+3+… 命令集27 矩阵函数 expm(A) 使用Pade近似法计算e,这是一个内部函数。 expm1(A) 使用一个M文件和与内部函数相同的算法计算e。 expm2(A) 使用泰勒级数计算e。 expm3(A) 使用特征值和特征向量计算e。 logm(A) 计算A的对数。 sqrtm(A) 计算A”。当A是对称正定阵时,平方根是唯一的。 funm(A,fcn) 计算由字符串fcn指定的A的矩阵函数,参见第5.1.4节。 字符串fcn可以是任意的基本函数,如sin、cos等等,参 见第2.4节。例如,expm(A)=funm(A,‘exp)。 [F, E]=funm(A,fc计算如上矩阵函数,但返回结果矩阵和剩余近似值矩阵E。 polyvalm(p,A) 估算矩阵A的一个多项式。向量p含有多项式的系数。详 见第10.1节。 很重要的一点是要区别expm和exp、1ogm和log等等。 ■例3.10 假设: A=(0) 比较exp和expm: Elementwise=exp(A),Operatorwise=expm (A) 得: Elementwise 2.7183 1.0000 1.0000 7.3891
看到,应该为 0值的y 1是一个十分小的数。事实上, e p s是较大的。如果用一个向量作为 一个自变量来调用 s i n c o s,因为s i n和c o s返回向量,所以其结果是一个向量。当绘制函数图 形时,这是十分有用的。 M文件的应用可参见第1 2章和第1 3章。 3.7 矩阵的乘方与函数 对于二维方阵,A的p次乘方可以用A ^p实现。如果p是一个正整数,那么这个幂可以由许 多矩阵乘法运算定义。对于 p= 0,得到与A维数相同的同一个矩阵;当 p< 0时,如果 A- 1存在, 可定义A ^p,它是与i n v ( A ) ^ ( -p)相同。 象e x p ( A )和s q r t ( A )那样的M AT L A B表达式可视为数组运算(参见第3 . 6节),即它们是对A中 元素逐个运算。 M AT L A B也能处理方阵函数。例如A1 / 2(A的平方根)或e A。举例如下: 命令集27 矩阵函数 e x p m ( A ) 使用P a d e近似法计算e A,这是一个内部函数。 e x p m 1 ( A ) 使用一个M文件和与内部函数相同的算法计算 e A。 e x p m 2 ( A ) 使用泰勒级数计算e A。 e x p m 3 ( A ) 使用特征值和特征向量计算 e A。 l o g m ( A ) 计算A的对数。 s q r t m ( A ) 计算A1 / 2。当A是对称正定阵时,平方根是唯一的。 funm(A, fcn) 计算由字符串 f c n指定的A的矩阵函数,参见第 5 . 1 . 4节。 字符串 f c n可以是任意的基本函数,如 s i n、c o s等等,参 见第2 . 4节。例如,e x p m ( A ) = f u n m ( A , ‘ e x p ’ ) 。 [F, E]=funm(A, fcn)计算如上矩阵函数,但返回结果矩阵F和剩余近似值矩阵E。 p o l y v a l m ( p , A ) 估算矩阵A的一个多项式。向量 p含有多项式的系数。详 见第1 0 . 1节。 很重要的一点是要区别e x p m和e x p、l o g m和l o g等等。 ■ 例3 . 1 0 假设: 比较e x p和e x p m: Elementwise=exp(A), Operatorwise=expm(A) 得: 4 4 M ATLAB 5 手册 下载 ■
China-pub.com 第3章矩阵运算 45 下载 Operatorwise 2.7183 0 0 7.3891 ■ 3.8关系运算符 MATLAB有用于比较矩阵的六个关系运算符,也可以对矩阵与一个标量进行比较,即矩 阵中的每个元素与标量进行比较。 关系运算符如下: 大于 >= 大于等于 == 等于 不等于 关系运算符比较对应的元素,产生一个仅包含1和0的具有相同维数的矩阵。其元素是: 1比较结果是真 0比较结果是假 在一个表达式中,算术运算符优先级最高,其次是关系运算符,最低级别是逻辑运算符。 圆括号可以改变其顺序。 ■例3.11 (a)对预定义变量pi的值和通过命令rat获得的pi的近似值进行比较。 [t,n]=rat(pi),piapprox=t/n; format long,piapprox,pi,piapprox==pi 得: 七= 355 n 113 piapprox 3.14159292035398 ans 3.14159265358979 ans 0 (b)假设: -()-(到 A中的元素有大于B中对应的元素吗?
3.8 关系运算符 M AT L A B有用于比较矩阵的六个关系运算符,也可以对矩阵与一个标量进行比较,即矩 阵中的每个元素与标量进行比较。 关系运算符如下: 大于 > = 大于等于 = = 等于 ~ = 不等于 关系运算符比较对应的元素,产生一个仅包含 1和0的具有相同维数的矩阵。其元素是: 1 比较结果是真 0 比较结果是假 在一个表达式中,算术运算符优先级最高,其次是关系运算符,最低级别是逻辑运算符。 圆括号可以改变其顺序。 ■ 例3 . 11 (a) 对预定义变量p i的值和通过命令r a t获得的p i的近似值进行比较。 [t, n]=rat(pi), piapprox=t/n; format long, piapprox, pi, piapprox==pi 得: (b) 假设: A中的元素有大于B中对应的元素吗? 第3章 矩 阵 运 算 4 5 下载 ■
46 China-bub.com MATLAB5手册 下载 Greater=A>B 得: Greater 0 0 1 0 0 0 0 1 0 即A中的项(1,3)和(3,2)的值大于B中对应项的值。 (c)令A如例(b)中假设,A中的元素有大于1的吗? GreaterThanOne=A>1 得: GreaterThanOne 0 1 1 0 0 1 0 ■ 3.9逻辑运算符 在MATLAB中有四种逻辑运算符: & 与 或 非 xor 异或 逻辑运算符的运算优先级最低。在一个表达式中,关系运算符和算术运算符的运算级别 要高于逻辑运算符。 xor和or之间的差别在于:表达式中至少有一个是真,那么or是真:xor是表达式中有一 个是真但不能两者均为真时才为真。 运算符&和比较两个相同维数的矩阵,如同前一节一样,它也能使一个标量与一个矩阵 进行比较。逻辑运算符是按元素比较的。零元素表示逻辑值假,任何其他值的元素表示逻辑 值真。其结果是一个包含1和0的矩阵。 命令集28 逻辑运算符 A&B 返回一个与A和B相同维数的矩阵。在这个矩阵中,A和B对应元素 都为非零时,则对应项为1:有一个为零的项则为0。 AIB 返回一个与A和B相同维数的矩阵。在这个矩阵中,A和B对应元素 只要有一个为非零,则对应项为1:两个矩阵均为零时,则为0。 A 返回一个与A和B相同维数的矩阵。在这个矩阵中,A是零时,则对 应项为1:A是非零时,则对应项为0。 xor (A,B) 返回一个与A和B相同维数的矩阵。在这个矩阵中,如果A和B均为 零或均为非零时,则对应项为0:如果A或B是非零但不是两者同时 为非零时,则对应项为1
G r e a t e r = A > B 得: 即A中的项( 1,3 )和( 3,2 )的值大于B中对应项的值。 (c) 令A如例( b )中假设,A中的元素有大于1的吗? G r e a t e r T h a n O n e = A > 1 得: 3.9 逻辑运算符 在M AT L A B中有四种逻辑运算符: & 与 | 或 ~ 非 x o r 异或 逻辑运算符的运算优先级最低。在一个表达式中,关系运算符和算术运算符的运算级别 要高于逻辑运算符。 x o r和o r之间的差别在于:表达式中至少有一个是真,那么 o r是真;x o r是表达式中有一 个是真但不能两者均为真时才为真。 运算符&和|比较两个相同维数的矩阵,如同前一节一样,它也能使一个标量与一个矩阵 进行比较。逻辑运算符是按元素比较的。零元素表示逻辑值假,任何其他值的元素表示逻辑 值真。其结果是一个包含1和0的矩阵。 命令集2 8 逻辑运算符 A & B 返回一个与A和B相同维数的矩阵。在这个矩阵中, A和B对应元素 都为非零时,则对应项为1;有一个为零的项则为0。 A | B 返回一个与A和B相同维数的矩阵。在这个矩阵中, A和B对应元素 只要有一个为非零,则对应项为 1;两个矩阵均为零时,则为 0。 ˜ A 返回一个与A和B相同维数的矩阵。在这个矩阵中, A是零时,则对 应项为1;A是非零时,则对应项为0。 xor(A, B) 返回一个与A和B相同维数的矩阵。在这个矩阵中,如果 A和B均为 零或均为非零时,则对应项为 0;如果A或B是非零但不是两者同时 为非零时,则对应项为1。 4 6 M ATLAB 5 手册 下载 ■