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}

 采纳的回答

Voss
Voss 2022-3-23
编辑:Voss 2022-3-23
"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

更多回答(2 个)

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 个评论

this works too, thanks!
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.)

请先登录,再进行评论。

Ive J
Ive J 2022-3-22
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 个评论

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]};

请先登录,再进行评论。

类别

帮助中心File Exchange 中查找有关 Shifting and Sorting Matrices 的更多信息

产品

版本

R2022a

Community Treasure Hunt

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

Start Hunting!

Translated by