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 ]; 用于查找公共行,而忽略最终输出中的

我在用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
];
用于查找公共行,而忽略最终
输出中的行

代码

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,:)