2008-09-25 23 views
45

Me gustaría ordenar una matriz de acuerdo con una columna en particular. Hay una función sort, pero ordena todas las columnas de forma independiente.¿Cómo puedo ordenar una matriz 2-D en MATLAB con respecto a una columna?

Por ejemplo, si mi matriz data es:

1  3 
5  7 
-1  4 

Entonces la salida deseada (la clasificación por la primera columna) sería:

-1  4 
1  3 
5  7 

pero la salida de sort(data) es:

-1  3 
1  4 
5  7 

¿Cómo puedo ordenar esta matriz en la primera columna?

Respuesta

75

creo que la función sortrows es lo que estás buscando.

>> sortrows(data,1) 

ans = 

    -1  4 
    1  3 
    5  7 
+1

gracias. Me pregunto por qué se pasa por alto en la "consulta" para la especie – Midhat

3

Una alternativa a sortrows(), que puede aplicarse a los escenarios más amplios.

  1. excepto los índices de clasificación de la fila/columna que desea ordenar por:

    [~,idx]=sort(data(:,1)); 
    
  2. reordenar todas las filas/columnas de acuerdo a los índices ordenados anteriores

    data=data(idx,:) 
    
Cuestiones relacionadas