Finding Duplicate rows?

I want to find duplicate rows in my Nx2 matrix regardless of order. For instance if I were to have a matrix A
[ 1 2;
2 3;
2 1;
3 5;
4 6]
I would like to be told for instance that rows 1 and 3 are the same. Is there a quick and easy way to do this?
Thank you.

 Risposta accettata

madhan ravi
madhan ravi il 8 Apr 2019
Try this:
AA =sort(A,2);
U = unique(AA,'rows');
R = cell(size(AA,1),1);
for k = 1:size(U,1)
R{k}=find(ismember(AA ,U(k,:), 'rows'));
end
Rows=R(cell2mat(cellfun(@(x)numel(x)>=2,R,'un',0)));
celldisp(Rows)

Più risposte (1)

Stephen23
Stephen23 il 8 Apr 2019
Simpler using hist (or its more recent equivalents):
>> A = [1,2;2,3;2,1;3,5;4,6;5,3] % I added an extra row
A =
1 2
2 3
2 1
3 5
4 6
5 3
>> [U,~,X] = unique(sort(A,2),'rows');
>> [N,E] = hist(X,1:max(X));
>> C = arrayfun(@(x)find(X==x),E(N>1),'uni',0);
>> C{:}
ans =
1
3
ans =
4
6

2 Commenti

Hi. I have one. I also need something similar to the author of the Post, however I require that each row be exactly the same (not inverted as requested by the author), that is:
A = [1,2; % This row (1) is exactly the same as (3)
2,3;
1,2; % This row (3) is exactly the same as (1)
3,5; % This row (4) is exactly the same as (6)
4,6;
3,5] % This row (6) is exactly the same as (4)
What would I have to modify in your code to make it do what I need? Thanks.
Stephen23
Stephen23 il 7 Gen 2021
"What would I have to modify in your code to make it do what I need?"
Remove the sort function.

Accedi per commentare.

Categorie

Scopri di più su Mathematics in Centro assistenza e File Exchange

Prodotti

Tag

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by