MATLAB基础及其应用教程
上QQ阅读APP看书,第一时间看更新

2.4.4 数组的关系与逻辑运算

在2.1.5节介绍MATLAB的运算符时已经指出,关系与逻辑运算尽管可以将其视为矩阵的运算,但认真分析关系与逻辑运算的规则,不难发现,它们更多地体现了数组运算的特征,譬如,两个矩阵的关系逻辑运算是元素一对一的关系比较或逻辑运算,这一点与数组的各种代数运算法则是一脉相承的。又如,参与关系与逻辑运算的两矩阵必须同阶(行、列数分别相同)。所以本书将关系与逻辑运算放到数组运算中,但也不排斥将其视为矩阵的运算。并且不论是视为数组运算,还是矩阵运算,它们的运算结果将根据应用场合的不同,既可视为数组,也可视为矩阵。

1.数组的关系运算

数组的关系运算主要是由表2-4所列关系运算符来实现。表中一共列出了6种关系运算并且说明了相关的运算法则。现仅举一例加以说明。

【例2.44】 找出6阶魔方矩阵中所有能被3整除的元素,并在其位置上标1。

        >> A=magic(6)
        A =
            35    1    6   26   19   24
            3   32    7   21   23   25
            31    9    2   22   27   20
            8   28   33   17   10   15
            30    5   34   12   14   16
            4   36   29   13   18   11
        >> P=mod(A,3)==0
        P =
            0    0    1    0    0    1
            1    0    0    1    0    0
            0    1    0    0    1    0
            0    0    1    0    0    1
            1    0    0    1    0    0
            0    1    0    0    1    0

本例中,mod(A, B)是一个求余函数,用于求A除以B的余数。若整除,其余数为0,那么,mod(A, B)==0的结果就为1,否则为0。矩阵P正反映了这一结果。

2.数组的逻辑运算

数组的逻辑运算一共有6种,但表2-5中只给出了5个运算符,因异或运算没有运算符只有运算函数xor( )。另外,与、或、非3种运算符也有各自对应的函数,它们分别是and( )、or( )、not( )。

【例2.45】 数组的逻辑运算示例。

        >> A=pascal(3), B=eye(3)
        A =
            1    1    1
            1    2    3
            1    3    6
        B =
            1    0    0
            0    1    0
            0    0    1
        >> A&B
        ans =
            1    0    0
            0    1    0
            0    0    1
        >> A|B
        ans =
            1    1    1
            1    1    1
            1    1    1
        >> ~B
        ans =
            0    1    1
            1    0    1
            1    1    0
        >> xor(A, B)
        ans =
            0    1    1
            1    0    1
            1    1    0
        >> a=0; b=1;
        >> a&&b
        ans =
            0
        >> a=1; b=0;
        >> a||b
        ans =
            1

尽管通过例题看不到先决与和先决或的执行过程,但从执行结果中至少看出这两种运算符在MATLAB中是有定义的。

3.与逻辑运算相关的函数

MATLAB除定义了自己的关系和逻辑运算之外,还设计了一组相关的函数。出于判断的目的,这些函数可能经常会被采用,所以,表2-12列出了这些函数。

表2-12 常用的逻辑运算函数

【例2.46】 常用逻辑运算函数举例。

        >> A=[1 2 3;0 4 5;8 9 0]
        A =
            1    2    3
            0    4    5
            8    9    0
        >> all(A,1)
        ans =
            0    1    0
        >> all(A,2)
        ans =
            1
            0
            0
        >> B=1:4
        B =
            1    2    3    4
        >> any(B)
        ans =
            1
        >> any(B,1)
        ans =
            1    1    1    1
        >> any(B,2)
        ans =
            1
        >> isnan(A)
        ans =
            0    0    0
            0    0    0
            0    0    0
        >> isnumeric(A)
        ans =
            1