Matlab 查找并从其他矩阵中排除一个矩阵
我在用MATLAB。我有以下矩阵Matlab 查找并从其他矩阵中排除一个矩阵,matlab,matrix,discrete-mathematics,set-difference,Matlab,Matrix,Discrete Mathematics,Set Difference,我在用MATLAB。我有以下矩阵 A = [ 1 2 3 4 5 6 7 8 1 5 2 3 6 7 8 9 1 3 6 2 6 3 1 6 9 7 4 7 ]; B = [ 1 5 2 3 6 7 8 9 ]; 我想找到A-B 所以答案应该是 ans = [ 1 2 3 4 5 6 7 8 1 3 6 2 6 3 1 6 9 7 4 7 ]; 用于查找公共行,而忽略最终输出中的
A = [
1 2 3 4
5 6 7 8
1 5 2 3
6 7 8 9
1 3 6 2
6 3 1 6
9 7 4 7
];
B = [
1 5 2 3
6 7 8 9
];
我想找到A
-B
所以答案应该是
ans = [
1 2 3 4
5 6 7 8
1 3 6 2
6 3 1 6
9 7 4 7
];
用于查找公共行,而忽略最终输出中的行
代码
out = A(~ismember(A,B,'rows'),:)
输出
out =
1 2 3 4
5 6 7 8
1 3 6 2
6 3 1 6
9 7 4 7
与'rows'
和'stable'
选项一起使用:
>> C = setdiff(A,B,'rows','stable')
C =
1 2 3 4
5 6 7 8
1 3 6 2
6 3 1 6
9 7 4 7
或者答案才是出路
但我还是忍不住邀请你参加聚会:
C = A(~any(squeeze(all(bsxfun(@eq, A.', permute(B, [2 3 1])))).'),:);
它的朋友也来了:
C = A(all(pdist2(A, B, 'hamming').'),:);
clear;
s=0;
A = [
1 2 3 4
5 6 7 8
1 5 2 3
6 7 8 9
1 3 6 2
6 3 1 6
9 7 4 7
];
B = [
1 5 2 3
6 7 8 9
];
for i=1:size(B)
s=s+(ismember(A, B(i,:), 'rows'))
end
A_B = A(s==0,:)