乘法运算

矩阵A和矩阵B进行乘法运算,要求A的列数与B的行数相等,此时则称A、B矩阵是可乘的,或称A和B两矩阵维数和大小相容。

如果两者的维数或大小不相容,则将给出错误信息,提示用户两个矩阵是不可乘的。

除法运算

在MATLAB中,有两种矩阵除法运算:右除/和左除\。

如果A矩阵是非奇异方阵,则B/A等效于B*inv(A),A\B等效于inv(A)B

对于矩阵来说,右除和左除表示两种不同的除数矩阵被除数矩阵关系。例如:

>> A=[1,2,3;4,2,6;7,4,9];
>> B=[4,3,2;7,5,1;12,7,92];
>> C1=B/A

C1 =

   -0.1667   -3.3333    2.5000
   -0.8333   -7.6667    5.5000
   12.8333   63.6667  -36.5000

>> C2=A\B

C2 =

    0.5000   -0.5000   44.5000
    1.0000    0.0000   46.0000
    0.5000    1.1667  -44.8333

但是,在以下特殊情况下,矩阵的左除和右除是相等的。

>> 3\4

ans =

    1.3333

>> 4/3

ans =

    1.3333

>> a=[10.5,25]

a =

   10.5000   25.0000

>> a/5

ans =

    2.1000    5.0000

>> 5\a

ans =

    2.1000    5.0000

乘方运算

一个矩阵的乘方运算可以表示成A^x,要求A为方阵,x为标量。例如:

>> A=[1,2,3;4,5,6;7,8,0];
>> A^2

ans =

    30    36    15
    66    81    42
    39    54    69

点运算

点运算符:
.*
./
.\和
.^

两矩阵进行点运算是指它们的对应元素进行相关运算,要求量矩阵同型。例如:

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

C =

    -1     0     3
     4    -5     0
     0     8     9

>> D=A*B

D =

     1     1     4
     1     1    10
     1     1    16

点运算是MATLAB中很有特色的一个运算符,在实际应用中起着很重要的作用,也是许多初学者容易弄混的一个问题。如下题所示:

当x=0.1、0.4、0.7是时,分别求y=sinx cosx的值。

>> x=0.1:0.3:1;
>> y=sin(x).*cos(x)

y =

    0.0993    0.3587    0.4927    0.4546

此是列中,sin(x)和cos(x)必须是点乘运算,因为二者都是向量,长度向等。如果用乘法运算,就会因为两个向量相同而不相容,导致出错。如下:

>> x=0.1:0.3:1;
>> y=sin(x)*cos(x)

Error using  * 
Inner matrix dimensions must agree.

关系运算

关系运算符:<(小于)、<=(小于等于)、>(大于)、>=(大于等于)、==(等于)、~=(不等于)。

当两个比较量是标量时,直接比较两数的大小。若关系成立,关系表达式结果为1,否则为0。例如:

>> 3>4

ans =

     0
>> x=5

x =

     5
>> x==5

ans =

     1

当参与比较的量是两个同型的矩阵时,比较是对两矩阵相同位置的元素按标量关系运算规则逐个进行,最终的关系运算结果是一个与原矩阵同型的矩阵,它的元素由0或1组成。

当参与比较的是一个标量,而另一个是矩阵时,则把标量与矩阵的每一个元素按标量运算规则逐个比较,最终的关系运算结果是一个与原矩阵通型的矩阵,它的元素由0或1组成。

下来看一个题:
建立3阶方阵A,判断A的元素是否为偶数。

>> A=[24,35,13;22,63,23;39,47,80]

A =

    24    35    13
    22    63    23
    39    47    80

>> P=rem(A,2)==0

P =

     1     0     0
     1     0     0
     0     0     1

最后,结果为1的地方所对应的元素就是偶数

逻辑运算
逻辑运算符:&(与)、|(或)和 ~(非)。
例如:

>> 3<4&6>5

ans =

     1

敲重点
以下量中逻辑运算的结果不同,因为在算数运算、关系运算和逻辑运算中,算数运算的优先级最高,逻辑运算优先级最低,但逻辑运算是单目运算,它的优先级比双目运算高。

>> ~(9==1)

ans =

     1

即这里先做~9运算,再做==1运算。

>> ~9==1

ans =

     0

若参与运算的是两个同型矩阵,那么将对矩阵相同位置上的元素按标量规则逐个进行运算,最终运算结果是一个与原矩阵同型的矩阵,其元素由1或0组成。

若参与逻辑运算的是一个标量,一个是矩阵,那么将在标量与矩阵中的每一个元素之间按标量规则进行运算,最终运算结果是一个与原矩阵同型的矩阵,其元素由1或0组成。

例如:
水仙花数

>> m=100:999;
>> m1=rem(m,10);%取个位
>> m2=rem(fix(m/10),10);%取十位
>> m3=fix(m/100);%取百位
>> k=find(m==m1.*m1.*m1+m2.*m2.*m2+m3.*m3.*m3)

k =

    54   271   272   308