Sort a structure by the date field
Mostra commenti meno recenti
I have a structure, He, which is a database containing a bunch of helium mass spec data, in addition to the date that it was collected. So each entry into the He structure will have various fields, for example, Date, PanName, ExtractPeriod, Data, etc. Because the entries into the He structure aren't always chronological, I want to be able to rearrange them by the Date field. I have tried exporting the dates into a new variable and sorting that, but MATLAB insists that it can't sort a cell array. I try to convert it from a cell array to a datetime array, then MATLAB insists that it isn't a cell array (it is, class() returns 'cell'). I have tried converting it to a datetime array using cell2mat, but again, it's insisting that it isn't a cell array (again, it is).
>> date_list = {He.Date}
>> sort(date_list)
Error using sort
Input argument must be a cell array of character vectors.
>> date_list = cell2mat(date_list)
Error using cell2mat (line 52)
CELL2MAT does not support cell arrays containing cell arrays or objects.
>> class(asdf)
ans =
'cell'
What's the easiest way to go about doing this and what am I doing wrong? Why does it tell me it's a cell on one line, then tell me it's not a cell in the next?? All I want to do is sort this database by date, but I can't even get to the point where I can sort a list of the dates...
3 Commenti
Rik
il 18 Set 2019
The sort function is telling you that not all cell elements contain a char vector. The cell2mat function tells you that some element contains a data type that it can't handle.
If you attach your struct in a mat file we might be able to help you generate a sorted list.
per isakson
il 18 Set 2019
>> d = datetime
d =
datetime
19-Sep-2019 00:08:38
>> methods(d)
... sort ...
The value of the date field, what class is it ?
Adam Goldsmith
il 19 Set 2019
Modificato: Adam Goldsmith
il 19 Set 2019
Risposta accettata
Più risposte (1)
xi
il 19 Set 2019
0 voti
It's easier to handle it in table:
T=struct2table(examplestruct);
sort(T.date)
Categorie
Scopri di più su Dates and Time in Centro assistenza e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!