📅  最后修改于: 2023-12-03 15:02:53.647000             🧑  作者: Mango
在 Matlab 中,我们经常需要检查某个值是否存在于一个数组中。本文将介绍如何使用内置函数实现这个功能。
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(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()
。读者可以结合具体应用场景选择合适的方法。