Read files in a folder with dates on them
Mostra commenti meno recenti
Hi everyone, I have a folder with multiple.mat files that are named : Profile_YYYY_Mon for example Profile_1990_Jan.mat the monts are Jan Feb Mar until Dec .How can i read each file in the correct chronological order and then use it to do something inside a for loop?
Risposta accettata
Più risposte (2)
Image Analyst
il 14 Giu 2023
Modificato: Image Analyst
il 14 Giu 2023
How about something like this to sort by file time/date stamp:
folder = pwd; % Wherever you want.
filePattern = fullfile(folder, 'Profile*.mat');
fileList = dir(filePattern);
[~, sortOrder] = sort([fileList.datenum], 'ascend');
fileList = fileList(sortOrder)
allFileNames = fullfile(folder, {fileList.name});
for k = 1 : numel(allFileNames)
thisFileName = allFileNames{k};
fprintf('Now processing "%s" with a date of %s.\n', thisFileName, fileList(k).date);
% Now do something with the file.
end
1 Commento
lena kappa
il 14 Giu 2023
Image Analyst
il 14 Giu 2023
Modificato: Image Analyst
il 14 Giu 2023
How about something like this to sort by the 3 letter month string:
months = {'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'}
folder = pwd; % Wherever you want.
filePattern = fullfile(folder, 'Profile*.mat');
fileList = dir(filePattern);
[~, sortOrder] = sort([fileList.datenum], 'ascend');
fileList = fileList(sortOrder)
allFileNames = fullfile(folder, {fileList.name})
for k = 1 : numel(months)
indexes = find(contains(allFileNames, months(k)));
for m = 1 : numel(indexes)
thisFileName = allFileNames{indexes(m)};
% See if this filename contains the k'th month.
% If it does, process it. If not, skip it.
fprintf('Now processing "%s" with a date of %s.\n', thisFileName, fileList(indexes(m)).date);
end
end
1 Commento
lena kappa
il 14 Giu 2023
Categorie
Scopri di più su Scope Variables and Generate Names 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!