【发布时间】:2015-10-12 21:58:54
【问题描述】:
我有这个示例矩阵:
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-loop 中执行此操作,但我不想使用 for-loop。
【问题讨论】:
标签: 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-loop 中执行此操作,但我不想使用 for-loop。
【问题讨论】:
标签: matlab matrix duplicates vectorization
假设 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),:)
【讨论】: