Arrange a matrix with repeated rows

1 view (last 30 days)
Hi,experts
I have a raw matrix as:
a = [125 97
126 104
97 125
104 126];
I'm looking for an algorithm to manipulate this matrix with an output as:
a = [125 97
97 125
126 104
104 126];
just I want to put repeated row together. This is a small piece of a large matrix, but the structure is the same.
Thank you Kyle

Accepted Answer

José-Luis
José-Luis on 2 Dec 2012
[idx idx] = sortrows(sort(a,2));
a = a(idx,:);

More Answers (1)

Azzi Abdelmalek
Azzi Abdelmalek on 2 Dec 2012
Edited: Azzi Abdelmalek on 2 Dec 2012
a = [125 97;126 104;97 125;5 4;104 126;97 125;4 5];
b=cell2mat(arrayfun(@(x) sort(a(x,:)),1:size(a,1),'un',0)')
[~,idx]=sortrows(b)
out=a(idx,:)
%If you don't need it to be sorted
b=cell2mat(arrayfun(@(x) sort(a(x,:)),1:size(a,1),'un',0)')
[c,d,e]=unique(b,'rows','stable')
[~,idx]=sort(e);
out=a(idx,:)

Categories

Find more on Structures 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!