删除包含重复元素的行

时间:2015-10-12 13:31:09

标签: matlab matrix duplicates vectorization

我有这个示例矩阵:

1 2 4 5 1 3
2 3 5 6 3 4
1 2 3 4 5 6
3 2 4 6 1 5
...

我需要删除包含重复元素的每一行。在这个例子中,我必须删除第一行和第二行。 我知道如何在for循环中执行此操作,但我不想使用for循环。

1 个答案:

答案 0 :(得分:4)

假设A为输入矩阵,您可以这样做 -

A(all(diff(sort(A,2),[],2),2),:)

示例运行 -

>> A
A =
     1     2     4     5     1     3
     2     3     5     6     3     4
     1     2     3     4     5     6
     3     2     4     6     1     5
>> A(all(diff(sort(A,2),[],2),2),:)
ans =
     1     2     3     4     5     6
     3     2     4     6     1     5

或者,如果您不介意bsxFUN -

A(~any(sum(bsxfun(@eq,A,permute(A,[1 3 2])),2)>1,3),:)