在MATLAB中,矩阵的运算包括+(加)、-(减)、*(乘)、/(右除)、\(左除)、^(乘方)等。
假定有两个矩阵 A 和 B ,若矩阵 A 和 B 的维数相同,则可以执行矩阵的加减运算,即 A 和 B 的相应元素相加减。在MATLAB中,由A+B和A-B实现矩阵的加减运算。
【例2-9】对矩阵 A 和 B 进行加减运算。
A=[5 4 6; 8 9 7; 3 6 4] B=[9 1 7; 5 6 6; 5 6 8] C=A+B D=A-B
运行结果如下:
A = 5 4 6 8 9 7 3 6 4 B = 9 1 7 5 6 6 5 6 8 C = 14 5 13 13 15 13 8 12 12 D = -4 3 -1 3 3 1 -2 0 -4
如果 A 与 B 的维数不相同,则MATLAB将返回错误信息,例如提示用户参加运算的两个矩阵的维数不匹配。
A=[5 4 6; 8 9 7; 3 6 4] B=[9 1 7; 5 6 6; 5 6 8; 7 9 8] C=A+B D=A-B
运行结果如下:
A = 5 4 6 8 9 7 3 6 4 B = 9 1 7 5 6 6 5 6 8 7 9 8
矩阵维度必须一致。
假定有两个矩阵 A 和 B ,若 A 为 m × n 矩阵, B 为 n × p 矩阵,则可以进行矩阵的乘法运算,结果为 m × p 矩阵。矩阵乘法需要被乘矩阵的列数与乘矩阵的行数相等。在MATLAB中,可用C=A*B实现矩阵的乘法。
【例2-10】两个矩阵相乘。
A=[5 4 6; 8 9 7; 3 6 4] B=[9 1 7 1; 5 6 6 2; 5 6 8 3] C=A*B
运行结果如下:
A = 5 4 6 8 9 7 3 6 4 B = 9 1 7 1 5 6 6 2 5 6 8 3 C = 95 65 107 31 152 104 166 47 77 63 89 27
当矩阵相乘不满足被乘矩阵的列数与乘矩阵的行数相等时,MATLAB将给出错误信息,提示用户两个矩阵的维数不匹配。例如:
A=[5 6; 8 7; 3 4] B=[9 1 7 1; 5 6 6 2; 5 6 8 3] C=A*B
运行结果如下:
A = 5 6 8 7 3 4 B = 9 1 7 1 5 6 6 2 5 6 8 3 错误使用 * 用于矩阵乘法的维度不正确。请检查并确保第一个矩阵中的列数与第二个矩阵中的行数匹配。要执行按元素相乘,请使用'.*'。
矩阵除法运算有\和/两种,分别表示左除和右除。在MATLAB中,A\B等效于 A 的逆左乘 B 矩阵,而B/A等效于 A 矩阵的逆右乘 B 矩阵。左除和右除表示两种不同的除数矩阵和被除数矩阵的关系。对于矩阵运算,一般A\B≠B/A。
【例2-11】两个矩阵相除。
clear A=[5 4 6; 8 9 7; 3 6 4]; B=[9; 1; 7]; C=A\B
运行结果如下:
C = -4.1538 -0.1154 5.0385
若 A 为方阵、 x 为标量,则一个矩阵的乘方运算可以表示成A^x。
【例2-12】求矩阵的乘方。
A=[5 4 6; 8 9 7; 3 6 4]; B=A^2 C=A^3
运行结果如下:
B = 75 92 82 133 155 139 75 90 76 C = 1357 1620 1422 2322 2761 2439 1323 1566 1384
若 D 不是方阵,则MATLAB将给出错误信息,提示用户矩阵求幂的维度不正确。
D= [5 4 6; 8 9 7] B=D^2
运行结果如下:
D = 5 4 6 8 9 7 错误使用 ^ (line 51) 用于对矩阵求幂的维度不正确。请检查并确保矩阵为方阵并且幂为标量。要执行按元素矩阵求幂,请使用 '.^'。
矩阵的行列式是一个数值。在MATLAB中,det函数用于求方阵 A 所对应的行列式的值。
【例2-13】求矩阵的行列式。
A=[5 4 6; 8 9 7; 3 6 4] det(A)
运行结果如下:
A = 5 4 6 8 9 7 3 6 4 ans = 52
矩阵的线性无关的行数与列数称为矩阵的秩。在MATLAB中,rank函数用于求矩阵的秩。
【例2-14】求矩阵的秩。
A=[5 4 6; 8 9 7; 3 6 4] rank(A)
运行结果如下:
A = 5 4 6 8 9 7 3 6 4 ans = 3
对于方阵 A ,如果存在一个与其同阶的方阵 B ,使得 A × B = B × A = I ( I 为单位矩阵),则称 B 为 A 的逆矩阵。当然, A 也是 B 的逆矩阵。
现实中求矩阵的逆是一件非常烦琐的工作,容易出错。而在MATLAB中,求矩阵的逆非常容易,调用inv函数即可。
【例2-15】求矩阵的逆。
A=[1 2 3; 5 5 6; 7 7 9]; inv(A)
运行结果如下:
ans = -1.0000 -1.0000 1.0000 1.0000 4.0000 -3.0000 0.0000 -2.3333 1.6667
矩阵的迹等于矩阵的特征值之和。在MATLAB中,trace函数用于求矩阵的迹。
【例2-16】求矩阵的迹。
A=[1 2 3; 4 5 6; 7 8 9] trace(A)
运行结果如下:
A = 1 2 3 4 5 6 7 8 9 ans = 2
在MATLAB中,cond函数用于计算矩阵的范数。该函数的调用方法如下:
cond(A,1) % 表示计算A的1—范数下的条件数 cond(A)/cond(A,2) % 表示计算A的2—范数下的条件数 cond(A,inf) % 表示计算A的∞—范数下的条件数
【例2-17】求矩阵的范数。
A=[5 4 6; 8 9 7; 3 6 4]; X1=cond(A,1) X2=cond(A) X3=cond(A,inf)
运行结果如下:
X1 = 19 X2 = 14.9448 X3 = 24
在MATLAB中,eig函数用于计算矩阵的特征值和特征向量,该函数的调用方法如下:
E=eig(A) % 表示求矩阵A的全部特征值,构成向量E [V,D]=eig(A) % 表示求矩阵A的全部特征值,构成对角矩阵D,并求A的特征向量,构成V的列向量 [V,D]=eig(A,'nobalance') % 与第2种格式类似,只是第2种格式先对A作相似变换后再求 % 特征值和特征向量,而格式3是直接求矩阵A的特征值和特征向量
【例2-18】求矩阵的特征值和特征向量。
A=rand(3,3) x1=eig(A) [V,D]=eig(A) Y1= V*A Y2= V*D
运行结果如下:
A = 0.1966 0.4733 0.5853 0.2511 0.3517 0.5497 0.6160 0.8308 0.9172 x1 = 1.6882 -0.1323 -0.0905 V = -0.4430 -0.4013 0.1045 -0.4109 -0.5888 -0.7978 -0.7968 0.7016 0.5938 D = 1.6882 0 0 0 -0.1323 0 0 0 -0.0905 Y1 = -0.1234 -0.2639 -0.3840 -0.7201 -1.0643 -1.2959 0.3854 0.3630 0.4641 Y2 = -0.7479 0.0531 -0.0095 -0.6938 0.0779 0.0722 -1.3451 -0.0928 -0.0537