2013-07-18 18 views
4

我在删除可以在我的数组中找到的行时遇到问题。如果在多个阵列中找到,删除行

我有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)) ,:) = []; 

,但我收到以下错误信息:使用

错误==矩阵尺寸必须一致。

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

回答

5

使用ismember,例如,如果你的阵列ab

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

应该做的工作。

+0

当然会,打我吧。除非你想要完整的循环方法...... – voxeloctree

+0

不知道'ismember'的''rows''参数。很干净。 – Floris

+0

谢谢,这正是我所需要的。我设置了一个循环,但很麻烦。 – FireSky

1

setdiff更直接,更可以让你在需要时保留原始数组:

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

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

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

不过,我想使用setdiff