Arrange a matrix with repeated rows

2 Ansichten (letzte 30 Tage)
Kyle
Kyle am 2 Dez. 2012
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

Akzeptierte Antwort

José-Luis
José-Luis am 2 Dez. 2012
[idx idx] = sortrows(sort(a,2));
a = a(idx,:);

Weitere Antworten (1)

Azzi Abdelmalek
Azzi Abdelmalek am 2 Dez. 2012
Bearbeitet: Azzi Abdelmalek am 2 Dez. 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,:)

Kategorien

Mehr zu Shifting and Sorting Matrices finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by