PSYCHTOOLBOX工具箱及MATLAB编程实例
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

3.5 运算符

运算符包括:算术运算符、关系运算符和逻辑运算符。

3.5.1 算术运算符

1.矩阵运算

矩阵的运算要符合相应的运算规则(此处不再赘述)。

(1)加减(+、−)

>> a=[4 5;7 3]↙
a =
    4    5
    7    3
>> b=[2 9;10 6]↙
b =
    2    9
    10    6
>> a+b↙
ans =
    6   14
    17    9
>> a-b↙
ans =
    2   -4
    -3   -3
>> a+10↙
ans =
    14   15
    17   13

(2)乘除(*、/)

>> a=[4 5;7 3;10 6]↙
a =
    4    5
    7    3
    10    6
>> b=[2 9;10 6;-1 -3]↙
b =
    2    9
    10    6
    -1   -3
>> a*b'↙
ans =
    53   70  -19
    41   88  -16
    74  136  -28
>> a/b↙
ans =
        0.3333  0.3333  0
        -0.1538 0.7308  0
        -0.0000 1.0000  0

(3)右除(\)

>> a=rand(3,2)↙
a =
    0.9572   0.1419
    0.4854   0.4218
    0.8003   0.9157
>> b=rand(3,2)↙
b =
    0.7922   0.0357
    0.9595   0.8491
    0.6557   0.9340
>> a\b↙
ans =
    0.8690  -0.0998
    0.1783   1.2788

(4)乘方(^)

>> a=rand(3)↙
a =
    0.5060   0.9593   0.1493
    0.6991   0.5472   0.2575
    0.8909   0.1386   0.8407
>> a^3↙
ans =
    1.6561   1.6428   0.8004
    1.6031   1.5407   0.7914
    2.1680   1.9382   1.1993

(5)转置('),行列互换

>> a=rand(3)↙
a =
    0.2543   0.9293   0.2511
    0.8143   0.3500   0.6160
    0.2435   0.1966   0.4733
>> a'↙
ans =
    0.2543   0.8143   0.2435
    0.9293   0.3500   0.1966
    0.2511   0.6160   0.4733

(6)索引(:)

>> a=rand(5)↙
a =
    0.3517   0.2858   0.0759   0.1299   0.1622
    0.8308   0.7572   0.0540   0.5688   0.7943
    0.5853   0.7537   0.5308   0.4694   0.3112
    0.5497   0.3804   0.7792   0.0119   0.5285
    0.9172   0.5678   0.9340   0.3371   0.1656
>> a(:,2)↙
ans =
    0.2858
    0.7572
    0.7537
    0.3804
    0.5678
>> a(:,2:end)↙
ans =
    0.2858   0.0759   0.1299   0.1622
    0.7572   0.0540   0.5688   0.7943
    0.7537   0.5308   0.4694   0.3112
    0.3804   0.7792   0.0119   0.5285
    0.5678   0.9340   0.3371   0.1656

2.数组运算

数组运算符是数组间元素与元素间的运算。

(1)点乘(.*)

>> a=randi([1 9],[3,2])↙
a =
    7    1
    8    4
    8    3
>> b=randi([1 9],[3,2])↙
b =
    8    2
    4    3
    9    2
>> a.*b↙
ans =
    56    2
    32   12
    72    6

(2)点左除(./)

>> a./b↙
ans =
    0.8750   0.5000
    2.0000   1.3333
    0.8889   1.5000

(3)点右除(.\)

>> a.\b↙
ans =
    1.1429   2.0000
    0.5000   0.7500
    1.1250   0.6667

(4)点乘方(.^)

>> a.^b↙
ans =
    5764801         1
      4096        64
  134217728         9

(5)点转置(.')

>> (a+b*i)'↙
ans =
    7.0000 - 8.0000i  8.0000 - 4.0000i  8.0000 - 9.0000i
    1.0000 - 2.0000i  4.0000 - 3.0000i  3.0000 - 2.0000i
>> (a+b*i).'↙
ans =
    7.0000 + 8.0000i  8.0000 + 4.0000i  8.0000 + 9.0000i
    1.0000 + 2.0000i  4.0000 + 3.0000i  3.0000 + 2.0000i

3.5.2 关系运算符

关系运算符用于大小相等比较,可以是两个单独的元素之间,也可以是两个数组之间进行比较。

1.大于小于(>、<)

>> a=randi([1 9],[3,2])↙
a =
    9    8
    4    4
    2    3
>> b=randi([1 9],[3,2])↙
b =
    4    9
    1    9
    2    6
>> a>b↙
ans =
      1    0
      1    0
      0    0
>> a>5↙
ans =
      1    1
      0    0
      0    0
>> b<3↙
ans =
      0    0
      1    0
      1    0

2.大于等于和小于等于(>=、<=)

>> a=randi(10,[1,5])↙
a =
    6    3    4    5    3
>> a>=5↙
ans =
    1    0    0    1    0
>> a<=3
ans =
    0    1    0    0    1

3.等于和不等(==、~=)

>> a=randi(10,[1,5])↙
a =
    9    2    3    2    3
>> a==2↙
ans =
    0    1    0    1    0
>> a~=2
ans =
    1    0    1    0    1
>> a='Hello';↙
>> b='hello';↙
>> a==b↙
ans =
    0    1    1    1    1

3.5.3 逻辑运算符

1.逻辑与(&、&&),两个对象均为真,结果才为真

>> a=5;b=3;c=0;↙
>> disp(a & b)↙
1
>> disp(a && c)↙
0

2.逻辑或(|、||),两个对象中只要有一个为真,结果就为真

>> a=5;b=3;c=0;↙
>> disp(a | b)↙
1
>> disp(b || c)↙
1

3.逻辑非(~),原结果为真,则变为假,原结果为假,则改变为真

>> a=5;b=3;c=0;↙
>> ~a↙
ans =
    0
>> ~c↙
ans =
    1
>> a=[];↙
>> ~isempty(a)↙
ans =
    0

3.5.4 逻辑运算函数

1.异或运算(xor),两个对象一个为真,一个为假时,结果为真;否则结果为假

>> a=5;b=3;c=2;↙
>> xor(a>b,b>c)↙
ans =
    0
>> xor(a<b,c<b)↙
ans =
    1

2.位与运算(bitand),非负整数二进制位之间的与运算

>> bitand(3,5)↙
ans =
    1

3.位或运算(bitor)

>> bitor(3,5)↙
ans =
    7

4.位反运算(bitcmp)

>> bitcmp(uint8(3))↙
ans =
  252

5.位异或运算(bitxor)

>> bitxor(3,5)↙
ans =
    6

6.任意为真(any)

>> a=randi([0 1],4)↙
a =
    0    1    0    1
    0    0    1    0
    0    0    1    0
    0    1    0    1
>> any(a)↙
ans =
    0    1    1    1
>> any(a,2)↙
ans =
    1
    1
    1
    1

函数any的第2个参数指定在行或列上进行判断,默认值为1,在列上判断,即某列的各个值只要有任意一个为真,即为真;如果参数值为2,则在行上判断,即某行的各个值只要有任意一个为真,即为真。

7.所有为真(all)

>> a=randi([0 1],4)↙
a =
    1    1    1    1
    1    1    0    0
    0    0    1    0
    0    0    1    0
>> all(a)↙
ans =
    0    0    0    0
>> all(a,2)↙
ans =
    1
    0
    0
    0

函数all的第2个参数的含义与函数any相同。