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.

 Accepted Answer

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)

More Answers (1)

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 Comments

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.
"What would I have to modify in your code to make it do what I need?"
Remove the sort function.

Sign in to comment.

Categories

Find more on Mathematics in Help Center and File Exchange

Products

Tags

Community Treasure Hunt

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

Start Hunting!