两个矩阵,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() 但这会对输出进行排序。
对于我的特殊问题(蛋白质结构中的原子坐标),保持行的有序完整性很重要。
两个矩阵,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,:) = [];
我必须在两个数组之间创建差异而不对数据进行排序。我在 matlab 文档中发现了这个很棒的选项。设置差异函数
这是函数的定义[C,ia] = setdiff(___,setOrder)
如果您不想对输出数据进行排序,请使用“稳定”,否则使用“排序”或不带参数。
这是我的用例。
yDataSent = setdiff(ScopeDataY, yDataBefore, 'stable')
yDataBefore = ScopeDataY;