2.3 MATLAB矩阵寻访在MATLAB中,矩阵寻访主要有下标寻访、单元素寻访和多元素寻访,下面将对其进行一一介绍。2.3.1 下标寻访MATLAB中矩阵的下标表示与常用的数学习惯相同,使用分别表示行和列的“双下标”(Row-Column Index),矩阵中的元素都有对应的第几行、第几列。这种表示方法简单直观,几何概念比较清晰。

【例2-6】利用上下标来寻访矩阵元素。

2.4 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 矩阵除法矩阵除法运算中,\和/分别表示左除和右除。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

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不是方阵:

则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