使用关系运算符进行数组比较
关系运算符使用“小于”、“大于”和“不等于”等运算符对操作数进行定量比较。关系比较的结果是一个逻辑数组,指示关系为 true 的位置。
这些是 MATLAB® 中的关系运算符。
| 符号 | 等效函数 | 描述 |
|---|---|---|
< | lt | 小于 |
<= | le | 小于或等于 |
> | gt | 大于 |
>= | ge | 大于或等于 |
== | eq | 等于 |
~= | ne | 不等于 |
数组比较
数值数组
关系运算符会在两个数组之间执行按元素比较。数组的大小必须兼容以便于执行运算。执行计算时,具有兼容大小的数组会隐式扩展为相同的大小。以最简单的情况为例,两个操作数为大小相同的数组,或者其中一个操作数为标量。有关详细信息,请参阅基本运算的兼容数组大小。
例如,如果您比较两个大小相同的矩阵,则结果将是大小相同且其元素指示关系为 true 的位置的逻辑矩阵。
A = [2 4 6; 8 10 12]
A =
2 4 6
8 10 12B = [5 5 5; 9 9 9]
B =
5 5 5
9 9 9A < B
ans =
1 1 0
1 0 0同样,您也可以将某一个数组与标量进行比较。
A > 7
ans =
0 0 0
1 1 1如果您将一个 1×N 行向量与一个 M×1 列向量进行比较,则 MATLAB 会在执行比较之前将每个向量都扩展为一个 M×N 矩阵。生成的矩阵包含这些向量中元素的每个组合的比较结果。
A = 1:3
A =
1 2 3B = [2; 3]
B =
2
3A >= B
ans =
0 1 1
0 0 1空数组
关系运算符可用于其中有任一维度大小为零的数组,只要两个数组的大小兼容。这意味着,如果一个数组的维度大小为 0,则另一个数组中对应维度的大小必须为 1 或 0,并且输出中该维度的大小为 0。
A = ones(3,0); B = ones(3,1); A == B
ans = Empty matrix: 3-by-0
但是,类似下面的表达式
A == []
在 A 不是 0×0 或 1×1 矩阵时将返回错误。此行为与所有其他二元运算符(例如 +、-、>、<、&、| 等)的行为一致。
要验证数组是否为空数组,请使用 isempty(A)。
复数
运算符
>、<、>=和<=在执行比较时仅使用操作数的实部。运算符
==和~=会同时检验操作数的实部和虚部。
Inf、NaN、NaT 和 undefined 元素比较
Inf值与其他Inf值相等。NaN值与任何其他数值(包括其他NaN值)都不相等。NaT值与任何其他日期时间值(包括其他NaT值)都不相等。未定义的分类元素不等于任何其他分类值,包括其他未定义的元素。
逻辑语句
将关系运算符与逻辑运算符 A & B (AND)、A | B (OR)、xor(A,B) (XOR) 和 ~A (NOT) 结合使用可以构建更为复杂的逻辑语句。
例如,您可以找到负数元素出现在两个数组中的位置。
A = [2 -1; -3 10]
A =
2 -1
-3 10B = [0 -2; -3 -1]
B =
0 -2
-3 -1A<0 & B<0
ans =
0 1
1 0有关更多示例,请参阅查找满足条件的数组元素。