【发布时间】:2011-04-27 09:57:26
【问题描述】:
我有两个大小不同的数组 a 和 b。每一个都包含唯一的值。
我想比较两者,如果数组 a 的任何值在数组 b 中,那么我想从 b 中删除它(例如a = [2 3 5]、b = [1 8 6 2 3 7]、结果b = [1 8 6 7])。
如何在Matlab中实现?
【问题讨论】:
标签: matlab
我有两个大小不同的数组 a 和 b。每一个都包含唯一的值。
我想比较两者,如果数组 a 的任何值在数组 b 中,那么我想从 b 中删除它(例如a = [2 3 5]、b = [1 8 6 2 3 7]、结果b = [1 8 6 7])。
如何在Matlab中实现?
【问题讨论】:
标签: matlab
使用setdiff 查找一组中的元素,但不查找另一组中的元素。
setdiff(b, a)
【讨论】:
使用带有 3 个输出参数的 intersect 来获取要删除的元素的索引:
[c, ia, ib] = intersect(a, b);
b (ib) = [];
【讨论】:
另一种选择是使用ISMEMBER 函数通过logical indexing 从b 中删除属于a 成员的元素:
b(ismember(b,a)) = [];
【讨论】: