使用关系运算符进行数组比较
关系运算符使用“小于”、“大于”和“不等于”等运算符对操作数进行定量比较。关系比较的结果是一个逻辑数组,指示关系为 true 的位置。
这些是 MATLAB® 中的关系运算符。
符号 | 等效函数 | 描述 |
---|---|---|
< | lt | 小于 |
<= | le | 小于或等于 |
> | gt | 大于 |
>= | ge | 大于或等于 |
== | eq | 等于 |
~= | ne | 不等于 |
数组比较
数值数组
关系运算符会在两个数组之间执行按元素比较。数组的大小必须兼容以便于执行运算。执行计算时,具有兼容大小的数组会隐式扩展为相同的大小。以最简单的情况为例,两个操作数为大小相同的数组,或者其中一个操作数为标量。有关详细信息,请参阅基本运算的兼容数组大小。
例如,如果您比较两个大小相同的矩阵,则结果将是大小相同且其元素指示关系为 true 的位置的逻辑矩阵。
A = [2 4 6; 8 10 12]
A = 2 4 6 8 10 12
B = [5 5 5; 9 9 9]
B = 5 5 5 9 9 9
A < 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 3
B = [2; 3]
B = 2 3
A >= 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 10
B = [0 -2; -3 -1]
B = 0 -2 -3 -1
A<0 & B<0
ans = 0 1 1 0
有关更多示例,请参阅查找符合条件的数组元素。