2012-01-23 7 views
6

Ho creato un array di celle in Octave. Alcune colonne contengono float e alcune colonne contengono stringhe. Sono in grado di ordinare l'array di celle da una colonna di stringhe (dire col # 4), con questo comando:Come ordinare un array di celle in Octave da una colonna di float?

sortrows (mycellarray, 4); 

Ma se la colonna che voglio ordinare in base a una colonna di galleggia, poi ricevo questo messaggio di errore:

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

Qualcuno sa come ordinare un array di celle, da una colonna di float?

risposta

6

Converti la colonna con valori float in un vettore, ordinala e ottieni l'indice di ordinamento. Quindi puoi applicare questo indice al tuo array di celle.

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,:); 

In alcune versioni di Octave, tuttavia, l'operatore tilde ~ non è definito. In tal caso:

vector2sort = mycellarray(:,3); 
[dummy,idx] = sort(vector2sort); 
mycellarraysorted = mycellarray(idx,:); 
Problemi correlati