MATLAB 逻辑数组

关系运算

关系运算符(例如 ><==~=)执行两个值之间的比较。相等或不相等比较的结果为 1 (true) 或 0(false)。

1
2
3
4
5
6
7
>> 1 > 2
ans =
0

>> 1 < 2
ans =
1

我们可以使用关系运算符将某个向量或矩阵与单个标量值进行比较。结果是与原始数组相同大小的逻辑数组。

1
2
3
4
5
6
7
8
9
10
11
>> A = [1 2 3; 4 5 6; 7 8 9]
A =
1 2 3
4 5 6
7 8 9

>> A > 5
ans =
0 0 0
0 1 1
1 1 1

逻辑索引

我们可以使用逻辑数组作为数组索引,在这种情况下,MATLAB 会提取索引为 true 的数组元素。

1
2
3
4
5
6
7
>> A = [1 2 3 4 5 6 7 8 9]
A =
1 2 3 4 5 6 7 8 9

>> A(A > 5)
ans =
6 7 8 9

也可以对两个不同向量使用逻辑索引。

1
2
3
4
5
>> A = [1 2 3 4 5 6 7 8 9];
>> B = [1 1 1 0 0 0 1 1 1];
>> A(B)
ans =
1 2 3 7 8 9

可以使用逻辑索引在数组中重新赋值。
例如,如果您要将数组 x 中等于 999 的所有值都替换为值 1,请使用以下语法。

1
x(x == 999) = 1

使用逻辑运算符 and (&) 以及 or (|) 可以组合逻辑比较。

要查找小于 6 大于 2 的值,请使用 &

1
2
3
4
>> A = [1 2 3 4 5 6 7 8 9];
>> A(A > 2 & A < 6)
ans =
3 4 5

要查找小于 2 大于 6 的值,请使用 |

1
2
3
4
>> A = [1 2 3 4 5 6 7 8 9];
>> A(A < 2 | A > 6)
ans =
1 7 8 9

关系运算符与逻辑运算符

关系运算符

MATLAB 支持的关系运算符如下表所示:

运算符说明函数
==等于eq
~=不等于ne
>大于gt
>=大于或等于ge
<小于lt
<=小于或等于le

逻辑运算符

MATLAB 支持的逻辑运算符如下表所示:

运算符说明函数
&逻辑与and
|逻辑或or
~逻辑非not
&&短路逻辑与-
||短路逻辑或-