Order CSV based on underlying timestamp OR using correct number

13 Ansichten (letzte 30 Tage)
Robin L
Robin L am 16 Feb. 2021
Bearbeitet: Stephen23 am 18 Apr. 2021
We extracted data using LabVIEW and got these kind of files:
For this measurement we have 151 files. But when I try to read them using this code:
%% declare folder containing the files
d = uigetdir(pwd, 'Select a folder');
csvFiles = dir(fullfile(d, '*.csv')); % get all csv files
% csvFilesOrdered = natsortfiles({csvFiles.name});
I tried ordering it through natsortfiles function but this does not work. What we get is:
Is there an easy way to solve this so it reads the files in the correct order? There should be a way to easily extract this but I cannot find it.
Thanks in advance!
  1 Kommentar
Stephen23
Stephen23 am 17 Feb. 2021
Bearbeitet: Stephen23 am 18 Apr. 2021
"I tried ordering it through natsortfiles function but this does not work."
natsortfiles now directly sorts the output from DIR:
>> S = dir('*.txt');
>> S.name
ans =
'1.txt'
ans =
'10.txt'
ans =
'2.txt'
>> S = natsortfiles(S); % alphanumeric sort by filename
>> S.name
ans =
'1.txt'
ans =
'2.txt'
ans =
'10.txt'

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Robin L
Robin L am 17 Feb. 2021
Fixed it using:
[r inx]=sort({csvFiles.date});
csvFiles = csvFiles(inx);
  3 Kommentare
Robin L
Robin L am 17 Feb. 2021
Bearbeitet: Robin L am 17 Feb. 2021
It gives me the csvFiles 1x151 struct in the correct order like this:
So I think that is enough? I now get the expected results on the graph.
EDIT: I think sorting the way you did would give the same result.
Stephen23
Stephen23 am 17 Feb. 2021
Bearbeitet: Stephen23 am 17 Feb. 2021
"I think sorting the way you did would give the same result."
Not at all.
The way I showed you in my comment sorts the filenames alphanumerically.
Your approach will sort August before February, and the 1st of any month in 2021 before the 2nd of any month in 2020. Have you considered what it really means to sort the character vectors of the date field?
If the dates were given in an ISO 8601 format then your approach would give a robust sort order (by file modification date), but they aren't, so in general the order is not meaningful. Using the datenum field would be robust.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Shifting and Sorting Matrices finden Sie in Help Center und File Exchange

Produkte


Version

R2020b

Community Treasure Hunt

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

Start Hunting!

Translated by