查找不在另一个数组中的数组中的元素

时间:2012-11-22 15:39:48

标签: matlab

我有两个数组可以说A = [1; 2; 4; 7; 10; 20]; B = [1; 4; 8];

现在我想找到A的元素,它们不在B中; [2; 7; 10; 20]。我只需要它们的索引是A中元素[2; 7; 10; 20]的索引。我怎样才能在matlab中实现它。我可以使用循环和所有。但这不是我想要的。我想要一个优雅的解决方案建议?

3 个答案:

答案 0 :(得分:9)

您可以使用ismember功能执行此操作。

A = [1;2;4;7;10;20]; 
B = [1;4;8];
ismem = ismember(A,B);

会给你

[1 0 1 0 0 0]'

如果您确实需要索引,可以使用find

find(ismem==0)

提醒一下,您可以像这样使用逻辑索引:

A(~ismem)

会给你

[2 7 10 20]'

答案 1 :(得分:4)

如果您想要A中不在B中的元素,可以使用setdiff

如果你想要元素的索引而不是它们的值,你可以使用ismember并否定结果。

答案 2 :(得分:3)

结帐setxor

[C,ia,ib] = setxor(A,B)

Here是Mathworks页面。您需要ia作为A中但不是B的索引。