Sort Cell Array after accumarray function
Afficher commentaires plus anciens
I have following code;
row_f=({0;0;0;1;2;3;4;0});
row_s=({'a';'a';'b';'b';'c';'c';'a';'b'});
t={'12/09/2022 04:28:01 PM';'12/09/2022 04:28:02 PM';'12/09/2022 03:28:03 PM';'12/09/2022 03:28:04 PM';'12/09/2022 02:28:05 PM';'12/09/2022 02:28:06 PM';'12/09/2022 04:28:03 PM';'12/09/2022 03:28:05 PM'};
all=[row_f, row_s,t];
[~,~,X] = unique(all(:,2));
dataset= accumarray(X,1:size(all,1),[],@(r){all(r,:)})
disp(dataset{1,1});
disp(dataset{2,1});
disp(dataset{3,1});
If we see the timestamp in the third column, timestamp in the first cell (dataset{1,1}) is greater than dataset{2,1} and dataset{3,1}; How do I sort the timestamp acc to ascending order after accumarray function so I can have the new dataset cell values as dataset{3,1} in the first cell because its timestamp is smaller. then dataset{2,1} in the second row cell and finally the datatset{1,1} in the thirst row cell.
like the new value for the dataset would be:
dataset = 3x1 cell array
{2x3 cell}
{3x3 cell}
{3x3 cell}
1 commentaire
Réponse acceptée
Plus de réponses (1)
the cyclist
le 26 Déc 2022
Modifié(e) : the cyclist
le 26 Déc 2022
Here is one way:
% Your code
row_f=({0;0;0;1;2;3;4;0});
row_s=({'a';'a';'b';'b';'c';'c';'a';'b'});
t={'12/09/2022 04:28:01 PM';'12/09/2022 04:28:02 PM';'12/09/2022 03:28:03 PM';'12/09/2022 03:28:04 PM';'12/09/2022 02:28:05 PM';'12/09/2022 02:28:06 PM';'12/09/2022 04:28:03 PM';'12/09/2022 03:28:05 PM'};
all=[row_f, row_s,t];
[~,~,X] = unique(all(:,2));
dataset= accumarray(X,1:size(all,1),[],@(r){all(r,:)})
% Sort it
[~,sortIndex] = sort(cellfun(@(x)x(1,end),dataset));
datasetSorted = dataset(sortIndex,:)
1 commentaire
MakM
le 27 Déc 2022
Catégories
En savoir plus sur Shifting and Sorting Matrices dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!