arrays - 在 MATLAB 中查找一个值是否等于任何数组元素的值

标签 arrays matlab comparison

谁能告诉我是否有一种方法(在 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 那样矢量化。我们可以测试 15 是否在 X 表示的集合中,但要测试这两个数字将需要循环或连续测试。

~isempty(find(X == 15))
~isempty(find(X == 17))

或者,

any(X == 15)
any(X == 17)

最后,我要指出,如果数字可能是真正的 float ,那么对精确值的测试是危险的。正如我所展示的,针对整数值的测试很容易。但是针对 float 的测试通常应该使用容差。

tol = 10*eps;
any(abs(X - 3.1415926535897932384) <= tol)

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

相关文章:

javascript - 反转数组的最短代码

javascript - 将数组数组转换为 JSON 对象列表而不是 JSON 字符串

matlab - 两个 Octave 矩阵相交

c++ - 将变量与多个值进行比较的最有效方法?

javascript - 使用 Prototype JS 迭代 json 对象数组并根据键对其进行排序

javascript - 合并多个具有不同 ID 的对象数组

matlab - 如何对多个变量使用 allocatein ?

matlab - 在 MATLAB 中从 3 个矩阵中获取坐标最大值

compare - 超越比较以正确匹配相似的行

javascript - 按字符串属性值对对象数组进行排序