Borrar filtros
Borrar filtros

Sort cell numbers ?

11 visualizaciones (últimos 30 días)
Heirleking
Heirleking el 22 de Mzo. de 2022
Comentada: Image Analyst el 23 de Mzo. de 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}

Respuesta aceptada

Voss
Voss el 23 de Mzo. de 2022
Editada: Voss el 23 de Mzo. de 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 comentario
Heirleking
Heirleking el 23 de Mzo. de 2022
this works too! Thanks!

Iniciar sesión para comentar.

Más respuestas (2)

Image Analyst
Image Analyst el 23 de Mzo. de 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 comentarios
Heirleking
Heirleking el 23 de Mzo. de 2022
this works too, thanks!
Image Analyst
Image Analyst el 23 de Mzo. de 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.)

Iniciar sesión para comentar.


Ive J
Ive J el 22 de Mzo. de 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 comentario
Heirleking
Heirleking el 23 de Mzo. de 2022
Editada: Heirleking el 23 de Mzo. de 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]};

Iniciar sesión para comentar.

Categorías

Más información sobre Shifting and Sorting Matrices en Help Center y File Exchange.

Etiquetas

Productos


Versión

R2022a

Community Treasure Hunt

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

Start Hunting!

Translated by