《MATLAB图像处理超级学习手册》一一2.4 MATLAB矩阵的运算

    xiaoxiao2023-06-05  173

    本节书摘来自异步社区出版社《MATLAB图像处理超级学习手册》一书中的第2章,第2.节,作者:MATLAB技术联盟 , 张岩 更多章节内容可以访问云栖社区“异步社区”公众号查看。

    2.4 MATLAB矩阵的运算

    MATLAB图像处理超级学习手册MATLAB中,矩阵的运算包括+(加)、-(减)、*(乘)、/(右除)、(左除)、^(乘方)等运算。下面对其进行介绍。

    2.4.1 矩阵加减运算假定有两个矩阵A和B,若A和B矩阵的维数相同,则可以执行矩阵的加减运算,A和B矩阵的相应元素相加减即可,由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的维数不相同时,例如:

    >>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

    则MATLAB将给出错误信息,Error: using+Matrix dimensions must agree。提示用户两个矩阵的维数不匹配。

    2.4.2 矩阵乘法假定有两个矩阵A和B,若A为m×n矩阵,B为n×p矩阵,则可以进行矩阵乘法的操作,即C=A*B为m×p矩阵。矩阵乘法需要被乘矩阵的列数与乘矩阵的行数相等。

    【例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

    当矩阵相乘不满足被乘矩阵的列数与乘矩阵的行数相等时,例如:

    >>A=[5 6;8 7;3 4] B=[9 1 7 1;5 6 6 2;5 6 8 3] C=A*B

    则MATLAB将给出错误信息, Error: using * Matrix dimensions must agree。提示用户两个矩阵的维数不匹配。

    2.4.3 矩阵除法矩阵除法运算中,和/分别表示左除和右除。AB等效于A的逆左乘B矩阵,而B/A等效于A矩阵的逆右乘B矩阵。左除和右除表示两种不同的除数矩阵和被除数矩阵的关系。对于矩阵运算,一般AB≠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

    2.4.4 矩阵的乘方若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不是方阵:

    D= A=[5 4 6;8 9 7] B=D^2

    则MATLAB将给出错误信息“Error: The expression to the left of the equals sign is not a valid target for an assignment”。**2.4.5 矩阵的行列式**矩阵的行列式是一个数值。在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

    2.4.6 矩阵的秩矩阵线性无关的行数与列数称为矩阵的秩。在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

    2.4.7 矩阵的逆对于一个方阵A,如果存在一个与其同阶的方阵B,使得AB=BA=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

    2.4.8 矩阵的迹矩阵的迹等于矩阵的特征值之和。在MATLAB中,trace函数用来求矩阵的迹。

    【例2-16】求矩阵的迹。

    >>A=[1 2 3;4 5 6;7 8 9] >>rank(A) A =    1   2   3    4   5   6    7   8   9 ans =    2

    2.4.9 矩阵的范数及其计算函数在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

    2.4.10 矩阵的特征值与特征向量在MATLAB中,eig函数用于计算矩阵的特征值和特征向量。该函数调用方法如下。

    E=eig(A):表示求矩阵A的全部特征值,构成向量E。

    [V,D]=eig(A):表示求矩阵A的全部特征值,构成对角阵D,并求A的特征向量构成V的列向量。

    [V,D]=eig(A, ‘nobalance’):与第2种格式类似,但第2种格式中先对A作相似变换后再求矩阵A的特征值和特征向量,而格式3是直接求矩阵A的特征值和特征向量的。

    【例2-18】求矩阵的特征值和特征向量。

    >>A=rand(3,3) x1=eig(A) [V,D]=eig(A) Y1= V*A Y2= V*D

    运行结果如下:

    A =   0.3922  0.7060  0.0462   0.6555  0.0318  0.0971   0.1712  0.2769  0.8235 x1 =   -0.4960   1.0481   0.6954 V =   0.6174  -0.4576  -0.3467   -0.7822  -0.3723  -0.2087   0.0841  -0.8075  0.9145 D =   -0.4960     0     0      0  1.0481     0      0     0  0.6954 Y1 =   -0.1171  0.3253  -0.3015   -0.5865  -0.6219  -0.2441   -0.3398  0.2869  0.6785 Y2 =   -0.3062  -0.4796  -0.2411   0.3879  -0.3902  -0.1451   -0.0417  -0.8463  0.6359 相关资源:敏捷开发V1.0.pptx
    最新回复(0)