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

pb3skfrl  于 5个月前  发布在  Matlab
关注(0)|答案(3)|浏览(119)

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

s4chpxco

s4chpxco1#

你可以使用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]'

hs1rzwqc

hs1rzwqc2#

如果你想要A中的元素不在B中,你可以使用setdiff
setdiff(A,B)给出[2; 7; 10; 20](矢量A中删除了B中的元素)
如果你想要元素的索引而不是它们的值,你可以使用ismember并对结果求反。

dddzy1tm

dddzy1tm3#

查看setxor
[C,ia,ib] = setxor(A,B)
Here是Mathworks页面。你需要ia作为那些在A而不是B中的索引。

相关问题