2012-01-23 57 views
6

Creé una matriz de celdas en Octave. Algunas columnas contienen flotantes y algunas columnas contienen cadenas. Soy capaz de ordenar la matriz celular por una columna de cadenas (digamos col # 4), usando este comando:¿Cómo ordenar una matriz de celdas en Octave por una columna de flotadores?

sortrows (mycellarray, 4); 

Pero si la columna que desea ordenar una columna de flota, luego aparece este mensaje de error:

error: sort: only cell arrays of character strings may be sorted 

¿Alguien sabe cómo ordenar una matriz de celdas, por una columna de flotadores?

Respuesta

6

Convierta la columna con valores float en un vector, ordénelo y obtenga el índice de clasificación. Luego puede aplicar este índice a su matriz de células.

mycellarray = {'a',1,0.5; 'b',2,0.1; 'c',3,4.5; 'd',4,-3.2}; 
vector2sort=cell2mat(mycellarray(:,3)); 
[~,idx] = sort(vector2sort) 
mycellarraysorted = mycellarray(idx,:); 

En algunas versiones de Octave, sin embargo, no se define el operador tilde ~. En ese caso:

vector2sort = mycellarray(:,3); 
[dummy,idx] = sort(vector2sort); 
mycellarraysorted = mycellarray(idx,:); 
Cuestiones relacionadas