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 下载 ■