我有两个数组,假设A = [1;2;4;7;10;20]; B = [1;4;8];现在我想找到A的元素,不在B中,即; [2;7;10;20]。我只需要它们的索引,即A中元素[2;7;10;20]的索引。我如何在matlab中实现这一点。我可以使用循环和所有。但这不是我想要的。我想要一个优雅的解决方案。建议?
s4chpxco1#
你可以使用ismember函数来实现。
ismember
A = [1;2;4;7;10;20]; B = [1;4;8]; ismem = ismember(A,B);
字符串会给你给予
[1 0 1 0 0 0]'
型如果你真的需要索引,你可以使用find。
find
find(ismem==0)
型作为一个提醒,你总是可以像这样使用逻辑索引:
A(~ismem)
型会给你给予
[2 7 10 20]'
型
hs1rzwqc2#
如果你想要A中的元素不在B中,你可以使用setdiff。setdiff(A,B)给出[2; 7; 10; 20](矢量A中删除了B中的元素)如果你想要元素的索引而不是它们的值,你可以使用ismember并对结果求反。
setdiff(A,B)
[2; 7; 10; 20]
dddzy1tm3#
查看setxor:[C,ia,ib] = setxor(A,B)Here是Mathworks页面。你需要ia作为那些在A而不是B中的索引。
setxor
ia
3条答案
按热度按时间s4chpxco1#
你可以使用
ismember
函数来实现。字符串
会给你给予
型
如果你真的需要索引,你可以使用
find
。型
作为一个提醒,你总是可以像这样使用逻辑索引:
型
会给你给予
型
hs1rzwqc2#
如果你想要A中的元素不在B中,你可以使用setdiff。
setdiff(A,B)
给出[2; 7; 10; 20]
(矢量A中删除了B中的元素)如果你想要元素的索引而不是它们的值,你可以使用ismember并对结果求反。
dddzy1tm3#
查看
setxor
:[C,ia,ib] = setxor(A,B)
Here是Mathworks页面。你需要
ia
作为那些在A而不是B中的索引。