6 votes

Comment trier un tableau de cellules dans Octave par une colonne de flottants ?

J'ai créé un tableau de cellules dans Octave. Certaines colonnes contiennent des flottants, d'autres des chaînes de caractères. Je suis capable de trier le tableau de cellules par une colonne de type chaînes de caractères (disons col #4), en utilisant cette commande :

sortrows (mycellarray, 4);

Mais si la colonne par laquelle je veux trier est une colonne de flotteurs puis j'obtiens ce message d'erreur :

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

Quelqu'un sait-il comment trier un tableau de cellules, par une colonne de flottants ?

6voto

yuk Points 13497

Convertir la colonne avec des valeurs flottantes en un vecteur, la trier et obtenir l'indice de tri. Vous pouvez ensuite appliquer cet indice à votre tableau de cellules.

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

Dans certaines versions d'Octave, cependant, le tilde ~ n'est pas défini. Dans ce cas :

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X