# Sort cell numbers ?

12 vues (au cours des 30 derniers jours)
Heirleking le 22 Mar 2022
Commenté : Image Analyst le 23 Mar 2022
I have a cell array that needs to be sorted both ascending and descending.
It is:
Groups = {[-83;-84] [-65] [-47;-50] [-30;-33] [-22;-26] [-15;-16] [-6; -7]}
Groups = 1×7 cell array
{2×1 double} {[-65]} {2×1 double} {2×1 double} {2×1 double} {2×1 double} {2×1 double}
##### 0 commentairesAfficher -2 commentaires plus anciensMasquer -2 commentaires plus anciens

Connectez-vous pour commenter.

### Réponse acceptée

Voss le 23 Mar 2022
Modifié(e) : Voss le 23 Mar 2022
"What I mean is how can I organize G in this way?"
G = {[-6; -7] [-16;-15] [-26;-22] [-33;-30] [-50;-47] [-65] [-83;-84]};
Maybe like this:
G = {[-83;-84] [-65] [-50;-47] [-33;-30] [-26;-22] [-16;-15] [-6; -7]};
[~,idx] = sort(cellfun(@(x)max(abs(x)),G));
G = G(idx);
format compact
celldisp(G);
G{1} = -6 -7 G{2} = -16 -15 G{3} = -26 -22 G{4} = -33 -30 G{5} = -50 -47 G{6} = -65 G{7} = -83 -84
##### 1 commentaireAfficher -1 commentaires plus anciensMasquer -1 commentaires plus anciens
Heirleking le 23 Mar 2022
this works too! Thanks!

Connectez-vous pour commenter.

### Plus de réponses (2)

Image Analyst le 23 Mar 2022
What are you sorting on? The average value of each array? If so, try this:
% Make an unsorted G
G = {[-6; -7] [-65] [-15;-16] [-30;-33] [-22;-26] [-47;-50] [-83;-84]}
% Find means
for k = 1 : numel(G)
theMeans(k) = mean(G{k}, 'all');
end
% Sort based on means:
[sortedMeans, sortorder] = sort(theMeans, 'descend')
% Now sort G
GSorted = G(sortorder)
celldisp(GSorted)
##### 2 commentairesAfficher AucuneMasquer Aucune
Heirleking le 23 Mar 2022
this works too, thanks!
Image Analyst le 23 Mar 2022
OK, but you have said it works for multiple answers even though they sort it differently. I sorted by the average value and @_ sorted it by the max value. So which way is it? (In this particular case they're the same though.)

Connectez-vous pour commenter.

Ive J le 22 Mar 2022
If by sort, you mean sort within each element of cell array:
G = {[-83;-84] [-65] [-50;-47] [-33;-30] [-26;-22] [-16;-15] [-6; -7]};
Ga = cellfun(@(x)sort(x, 'ascend'), G, 'uni', false);
Gd = cellfun(@(x)sort(x, 'descend'), G, 'uni', false);
Or if you mean overall, vertcat the cell array and then sort.
##### 1 commentaireAfficher -1 commentaires plus anciensMasquer -1 commentaires plus anciens
Heirleking le 23 Mar 2022
Modifié(e) : Heirleking le 23 Mar 2022
Hello,
I tried your answer and both Ga and Gd end up being the same.
What I mean is how can I organize G in this way?
G = {[-6; -7] [-15;-16] [-22;-26] [-30;-33] [-47;-50] [-65] [-83;-84]};

Connectez-vous pour commenter.

### Catégories

En savoir plus sur Shifting and Sorting Matrices dans Help Center et File Exchange

R2022a

### Community Treasure Hunt

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

Start Hunting!

Translated by