📜  matlab 检查值是否在数组中 - Matlab (1)

📅  最后修改于: 2023-12-03 15:02:53.647000             🧑  作者: Mango

Matlab 检查值是否在数组中

在 Matlab 中,我们经常需要检查某个值是否存在于一个数组中。本文将介绍如何使用内置函数实现这个功能。

使用 ismember()

ismember(A, B) 函数用于判断数组 A 中的元素在数组 B 中是否存在。返回值是一个与 A 具有相同大小的逻辑数组,其中元素为 1 表示该元素在 B 中存在,为 0 则表示不存在。

示例代码:

A = [1, 2, 3, 4, 5];
B = [3, 4, 5, 6, 7];
ismember(A, B)  % 返回 [0, 0, 1, 1, 1]

上述代码中,A 数组中的元素 1 和 2 在 B 中都不存在,因此返回值的前两个元素为 0;A 数组中的元素 3、4、5 都存在于 B 中,因此返回值的后三个元素为 1。

我们可以结合逻辑运算符 any() 来判断数组中是否存在特定值。示例代码:

A = [1, 2, 3, 4, 5];
B = [3, 4, 5, 6, 7];
any(ismember(A, B))  % 返回 1
any(ismember([6, 7], B))  % 返回 0

上述代码中,第一个例子中 ismember(A, B) 返回值为 [0, 0, 1, 1, 1],用 any() 判断其是否包含 1 即可得到是否存在特定值的结果;第二个例子中 [6, 7]B 中不存在,因此返回值为 0。

使用 find()

find(A==v) 函数用于在数组 A 中查找所有值等于 v 的元素,并返回一个索引向量。如果 A 中不存在值为 v 的元素,则返回一个空向量。

示例代码:

A = [1, 2, 2, 3, 4, 5];
v = 2;
ind = find(A==v)  % 返回 [2, 3]

上述代码中,find(A==v) 返回值为 [2, 3],表示 A 中的第 2、3 个元素等于 v。

我们可以结合逻辑运算符 ~isempty() 来判断数组中是否存在特定值。示例代码:

A = [1, 2, 2, 3, 4, 5];
v = 2;
~isempty(find(A==v))  % 返回 1
~isempty(find(A==6))  % 返回 0

上述代码中,第一个例子中 ~isempty(find(A==v)) 返回 1,表示 A 中存在值等于 v 的元素;第二个例子中 find(A==6) 返回一个空向量,因此 ~isempty(find(A==6)) 返回 0。

总结

本文介绍了 Matlab 中两种常见的检查值是否在数组中的方法,分别是 ismember()find()。读者可以结合具体应用场景选择合适的方法。