7

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

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

4

3 回答 3

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]'
于 2012-11-22T15:48:26.797 回答
4

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

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

于 2012-11-22T15:47:00.083 回答
3

签出setxor

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

是 Mathworks 页面。您将需要ia那些在 A 但不在 B 中的索引。

于 2012-11-22T15:48:47.610 回答