3.3 矩阵元素的运算
矩阵的加、减、乘、除、比较运算和逻辑运算等代数运算是MATLAB数值计算最基础的部分。本节将重点介绍这些运算。
3.3.1 矩阵的加减法运算
进行矩阵加法、减法运算的前提是参与运算的两个矩阵或多个矩阵必须具有相同的行数和列数,即A、B、C等多个矩阵均为m×n矩阵;或者其中有一个或多个矩阵为标量。
在上述前提下,对于同型的两个矩阵,其加减法定义如下:
C=A±B,矩阵C的各元素Cmn=Amn+Bmn。
当其中含有标量x时,
C=A±x,矩阵C的各元素Cmn=Amn+x。
由于矩阵的加法运算归结为其元素的加法运算,容易验证,因此矩阵的加法运算满足下列运算律。
(1)交换律:A+B=B+A。
(2)结合律:A+(B+C)=(A+B)+C。
(3)存在零元:A+0=0+A=A。
(4)存在负元:A+(-A)=(-A)+A。
例3-25:矩阵加减法运算示例。
已知矩阵A=,矩阵B=,行向量C=,标量x=20,试求A+B、A-B、A+B+x、A-x、A-C。
在命令行窗口中依次输入:
得到的结果为:
在A-C的运算中,MATLAB返回错误信息,并提示矩阵的维度必须一致。这也证明了矩阵进行加减法运算必须满足一定的前提条件。
3.3.2 矩阵的乘法运算
MATLAB中矩阵的乘法运算包括两种:数与矩阵的乘法;矩阵与矩阵的乘法。
1.数与矩阵的乘法
由于单个数在MATLAB中是以标量来存储的,因此数与矩阵的乘法也可以称为标量与矩阵的乘法。
设x为一个数,A为矩阵,则定义x与A的乘积C=xA仍为一个矩阵,C的元素就是用数x乘矩阵A中对应的元素而得到的,即Cmnx=xAmn。数与矩阵的乘法满足下列运算律:
● 1A=A。
● x(A+B)=xA+xB。
● (x+y)A=xA+yA。
● (xy)A=x(yA)=y(xA)。
例3-26:矩阵数乘示例。
已知矩阵A=,E是3阶单位矩阵,E=,试求表达式2A+3E。
在命令行窗口中依次输入:
得到结果:
2.矩阵与矩阵的乘法
两个矩阵的乘法必须满足被乘矩阵的列数与乘矩阵的行数相等。设矩阵A为m×h矩阵,B为h×n矩阵,则两个矩阵的乘积C=A×B为一个矩阵,且。
矩阵之间的乘法不遵循交换律,即A×B≠B×A。但矩阵乘法遵循下列运算律。
● 结合律:(A×B)×C=A×(B×C)。
● 左分配律:A×(B+C)=A×B+A×C。
● 右分配律:(B+C)×A=B×A+C×A。
● 单位矩阵的存在性:E×A=A,A×E=A。
例3-27:矩阵乘法示例。
已知矩阵A=,矩阵B=,试求矩阵乘积AB及BA。
在命令行窗口中依次输入:
得到结果:
3.3.3 矩阵的除法运算
矩阵的除法是乘法的逆运算,分为左除和右除两种,分别用运算符号“\”和“/”表示。A\B表示矩阵A的逆乘以矩阵B,A/B表示矩阵A乘以矩阵B的逆。除非矩阵A和矩阵B相同,否则A/B和A\B是不等价的。对于一般的二维矩阵A和B,当进行A\B运算时,要求A的行数与B的行数相等;当进行A/B运算时,要求A的列数与B的列数相等。
例3-28:矩阵的除法运算示例。
设矩阵A=,矩阵B=,试求A\B和A/B。
在命令行窗口中依次输入:
得到结果:
3.3.4 矩阵的幂运算
当矩阵A为方阵时,可进行矩阵的幂运算,其定义为:。在MATLAB中,使用运算符号“^”表示幂运算。
例3-29:方阵幂运算示例。
对于给定方阵A=,试求A2、A5。
在命令行窗口中依次输入:
得到结果:
3.3.5 矩阵元素的查找
MATLAB中函数find()的作用是进行矩阵元素的查找,它通常与关系函数和逻辑运算相结合。其调用格式如下。
● ind=find(X):该函数查找矩阵X中的非零元素,函数返回这些元素的单下标。
● [row,col]=find(X,...):该函数查找矩阵X中的非零元素,函数返回这些元素的双下标i和j。
例3-30:利用函数find()查找矩阵中的元素示例。
在命令行窗口中依次输入:
输出结果:
3.3.6 矩阵元素的排序
MATLAB中函数sort()的作用是按照升序排序,排序后的矩阵和原矩阵的维数相同。其调用格式如下。
● B=sort(A):该函数对矩阵A进行升序排序。A可为矩阵或向量。
● B=sort(A,dim):该函数对矩阵A进行升序排序,并将结果返回在给定的维数dim上按照升序排序。当dim=1时,按照列进行排序;当dim=2时,按照行进行排序。
● B=sort(...,mode):该函数对矩阵A进行排序,mode可指定排序的方式。ascend指定按升序排序,为默认值;descend指定按降序排序。
例3-31:矩阵元素的排序示例。
在命令行窗口中依次输入:
输出结果:
例3-32:对向量进行排序示例。
在命令行窗口中依次输入:
输出结果:
3.3.7 矩阵元素的求和
MATLAB中函数sum()和cumsum()的作用是对矩阵的元素求和。其调用格式如下。
● B=sum(A):该函数对矩阵A的元素求和,返回由矩阵A各列元素的和组成的向量。
● B=sum(A,dim):该函数返回在给定的维数dim上元素的和。当dim=1时,计算矩阵A各列元素的和;当dim=2时,计算矩阵A各行元素的和。
● B=cumsum(A)。
● B=cumsum(A,dim)。
函数cumsum()的调用格式与sum()类似,不同的是其返回值为矩阵。下面通过示例查看两个函数的不同之处。
例3-33:矩阵元素的求和示例。
在命令行窗口中依次输入:
输出结果:
○提示
使用sum(sum())可求出矩阵所有元素的和。
3.3.8 矩阵元素的求积
MATLAB中函数prod()和cumprod()的作用是对矩阵的元素求积。其调用格式如下。
● B=prod(A):该函数对矩阵A的元素求积,返回由矩阵A各列元素的积组成的向量。
● B=prod(A,dim):该函数返回在给定的维数dim上元素的积。当dim=1时,计算矩阵A各列元素的积;当dim=2时,计算矩阵A各行元素的积。
● B=cumprod(A)。
● B=cumprod(A,dim)。
函数cumprod()的调用格式与prod()类似,不同的是其返回值为矩阵。读者可以通过下面的示例查看两者的不同之处。
例3-34:矩阵元素的求积示例。
在命令行窗口中依次输入:
输出结果:
3.3.9 矩阵元素的差分
MATLAB中函数diff()的作用是计算矩阵元素的差分。其调用格式如下。
● Y=diff(X):计算矩阵各列元素的差分。
● Y=diff(X,n):计算矩阵各列元素的n阶差分。
● Y=diff(X,n,dim):计算矩阵在给定的维数dim上元素的n阶差分。当dim=1时,计算矩阵各列元素的差分;当dim=2时,计算矩阵各行元素的差分。
例3-35:计算矩阵元素的差分示例。
在命令行窗口中依次输入:
输出结果:
○提示
当参数n≥size(x,dim)时,函数的返回值是空矩阵。