Finding the index of dupplicate rows in a matrix
19 views (last 30 days)
Show older comments
I have matrix M 275935x2 . I want to remove duplicate rows. I tried two methods: Method 1)
M2=unique(M,'rows') % and it gave M2 179109x2 double
Method 2)
x0=find(hist(M,unique(M))>1); % it gave only 8301 duplicate values.
Which method is correct? I want to find th eindices of duplicate rows and not simply remove them. Any help is appreciated
0 Comments
Answers (1)
Stephen23
on 6 Feb 2017
Edited: Stephen23
on 6 Feb 2017
>> A = randi(1e4,275935,2);
>> [B,~,Y] = unique(A,'rows','stable');
>> [C,X] = hist(Y,unique(Y));
>> Z = ismember(Y,X(C>1)); % indices of repeated rows of A
For example this random data set had
>> nnz(Z)
ans =
816
row that occur most than once. To get the indices of the duplicate rows, try this:
[U,W] = unique(A,'rows','stable');
D = setdiff(1:size(A,1),W); %indices of duplicate rows.
See Also
Categories
Find more on Operators and Elementary Operations in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!