Sort cell numbers ?
Show older comments
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]}
Accepted Answer
More Answers (2)
Image Analyst
on 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 Comments
Heirleking
on 23 Mar 2022
Image Analyst
on 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.)
Ive J
on 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 Comment
Heirleking
on 23 Mar 2022
Edited: Heirleking
on 23 Mar 2022
Categories
Find more on Shifting and Sorting Matrices in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!