4

我无法删除可以在我的 2 个数组中找到的行。

我有 2 个数组:

array1 = 1 2
         3 4
         5 6
         7 8
         9 10

array2 = 1 5
         7 8
         3 2

如果该行出现在两个数组中,我想从array1(示例[7,8])中删除它。我在下面尝试了这行代码:

array1( find(array1(:,1) == array2(:,1)) ,:) = [];

但我收到以下错误消息:

错误使用 == 矩阵维度必须一致。

这样做的正确方法是什么?

4

2 回答 2

5

使用ismember,例如,如果您的数组是aand b

a(ismember(a,b,'rows'),:)=[];

应该做的工作。

于 2013-07-18T22:47:23.723 回答
1

setdiff更直接,并允许您在需要时保留原始数组:

setdiff(array1,array2,'rows','stable')

仅供参考,您还可以使用interect

[~,ia] = intersect(array1,array2,'rows');
array1(ia,:) = [];

但是,我会使用setdiff.

于 2014-04-03T01:12:42.783 回答