我有这个示例矩阵:
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
循环。
答案 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),:)