# 逻辑基础
# 逻辑运算符
如下表,大体与 C/C++
相似。
MATLAB 更推荐使用运算符进行逻辑运算而非使用函数。
注意:
-
逻辑运算对矩阵或向量计算时会比较两个矩阵或向量对应位置的元素。
-
与
C/C++
相同逻辑运算不仅可以用在逻辑 0
与1
上,还可以用于普通的数值。MATLAB 会把所有非零数值视为逻辑 1
。 -
逻辑运算可以连续运算
-
注意运算优先级,可以使用小括号来指定运算顺序。
-
与
C/C++
相同,形如1< A < 0
这样的式子在 MATLAB 中也是不正确的。
&&
与 ||
:
-
这两个运算符只能对标量(一个元素)进行逻辑运算,而不能对矩阵或向量进行运算。
-
这两个运算符具有
短路
功能,可以提高运行效率(与C/C++
相同)。- 计算
A && B
时,如果 A 为逻辑 0,则 B 不会被判断,直接得结果为逻辑 0
- 计算
A || B
时,如果 A 为逻辑 1,则 B 不会被判断,直接得结果为逻辑 1
- 计算
-
主要用于条件判断。
# all 、any 、find 函数
函数名 | 作用 |
---|---|
all | 判断数组元素是否全为非零值(可指定维度 |
any | 判断数组元素中是否存在至少一个非零值 |
find | 查找数组中的非零元素,并返回索引 |
all 与 any 两个函数比较相似,这里以 all 举例探讨这两个函数的用法。
若 A
为一个矩阵,那么
all(A,dim) |
即沿 dim 维来判断元素是否全为非零值。
dim=1
时沿着行方向判断每一列是否全为非零值,并将结果返回为一个全为逻辑值的行向量,可简写为 all(A)
。
dim=2
时沿着列方向判断每一行是否全为非零值,并将结果返回为一个全为逻辑值的行向量。
本质上,all 函数就是对每一行或每一列的所有元素进行与运算、any 是或运算。
find 函数用法很多,请参见 Matlab 的 Help 文档