例如:
A = [1,3; 3,1; 2,10; 10,2; 3,4; 3,4; 5,8; 9,3; 1,8]
我的目标是
A = [1,3; 2,10; 3,4; 5,8; 9,3; 1,8]
需要删除重复的一个(有序和无序)。
我尝试过唯一,但它不适用于无序行。
答案 0 :(得分:4)
您可以单独sort
行,然后使用unique
并查看第二输出,以确定您第一次在矩阵中看到特定事件。您还可以将行视为单个样本,并且还需要稳定唯一结果,以保留您在矩阵A
中看到的内容的顺序。排序允许您以无序方式考虑每一行。基本上,第二个输出将用于索引A
行,以便您在原始矩阵中提取所需内容,而不是已排序的矩阵。结果是删除重复的行,忽略条目中出现的条目顺序:
[~,id,~] = unique(sort(A, 2), 'rows', 'stable');
out = A(id, :);
使用您提供的输入,我们得到:
>> [~,id,~] = unique(sort(A, 2), 'rows', 'stable');
>> out = A(id, :);
>> out
out =
1 3
2 10
3 4
5 8
9 3
1 8