gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 19:25:47 24 4
gpt4 key购买 nike

谁能告诉我是否有一种方法(在 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com