Arrange a matrix with repeated rows

1 visualización (últimos 30 días)
Kyle
Kyle el 2 de Dic. de 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

Respuesta aceptada

José-Luis
José-Luis el 2 de Dic. de 2012
[idx idx] = sortrows(sort(a,2));
a = a(idx,:);

Más respuestas (1)

Azzi Abdelmalek
Azzi Abdelmalek el 2 de Dic. de 2012
Editada: Azzi Abdelmalek el 2 de Dic. de 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,:)

Categorías

Más información sobre Shifting and Sorting Matrices en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by