如何删除集合A和B A的交叉点,而不在MATLAB排序?
-
28-09-2019 - |
题
两个矩阵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;
不隶属于 StackOverflow