6

两个矩阵,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() 但这会对输出进行排序。

对于我的特殊问题(蛋白质结构中的原子坐标),保持行的有序完整性很重要。

4

2 回答 2

10

使用ISMEMBER

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

%# remove those rows
A(commonRows,:) = [];
于 2010-08-12T12:37:38.043 回答
1

我必须在两个数组之间创建差异而不对数据进行排序。我在 matlab 文档中发现了这个很棒的选项。设置差异函数

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

这是我的用例。

yDataSent = setdiff(ScopeDataY, yDataBefore, 'stable')
yDataBefore = ScopeDataY;
于 2016-03-26T22:13:13.637 回答