谁能告诉我(在MATLAB中)是否有办法检查某个值是否等于另一个数组中存储的任何值?

我打算使用的方式是检查一个矩阵中的元素索引是否等于存储在另一个数组中的值(其中存储的值是满足特定条件的元素的索引)。

因此,如果满足条件的元素的索引存储在下面的矩阵中:

criteriacheck = [3 5 6 8 20];

遍历主数组(称为array)并检查索引是否匹配:
for i = 1:numel(array)
  if i == 'Any value stored in criteriacheck'
    %# "Do this"
  end
end

有人知道我该怎么做吗?

最佳答案

出色的answer previously given by @woodchips也适用于此:

有很多方法可以做到这一点。 ismember是第一个想到的成员,因为这是您希望采取的固定成员资格操作。因此

X = primes(20);
ismember([15 17],X)
ans =
      0    1

由于15不是素数,而17是素数,ismember在这里做得很好。

当然,查找(或任何查找)也将起作用。但是这些不是以ismember的意义进行向量化的。我们可以测试以查看X表示的集合中是否包含15,但是要测试这两个数字将需要循环或连续进行测试。
~isempty(find(X == 15))
~isempty(find(X == 17))

或者,
any(X == 15)
any(X == 17)

最后,我要指出的是,如果数字可能是真实的浮点数,则测试精确值非常危险。如我所示,对整数值进行测试很容易。但是针对浮点数的测试通常应采用公差。
tol = 10*eps;
any(abs(X - 3.1415926535897932384) <= tol)

关于arrays - 在MATLAB中查找值是否等于任何数组元素的值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2442574/

10-12 16:35
查看更多