两个矩阵A和B:

A = [1 2 3
     9 7 5
     4 9 4
     1 4 7]

B = [1 2 3
     1 4 7]

矩阵B中的所有行矩阵A的成员我希望删除从A A和B的共同行,而不排序。

我试图setdiff(),但这个排序的输出。

有关我的特别的问题(在蛋白质结构的原子坐标)保持的行的有序完整性是重要的。

有帮助吗?

解决方案

使用 ISMEMBER

%# find rows in A that are also in B
commonRows = ismember(A,B,'rows');

%# remove those rows
A(commonRows,:) = [];

其他提示

我不得不两个阵列之间创建的diff不排序的数据。我发现在MATLAB文档这个伟大的选项。 Setdiff功能

下面是函数[C,ia] = setdiff(___,setOrder)的定义 如果您不希望输出的数据进行排序使用“稳定”,否则就“排序”或不带参数。

下面是我的用例。

yDataSent = setdiff(ScopeDataY, yDataBefore, 'stable')
yDataBefore = ScopeDataY;
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top