Sorting problem with months in file names, while taking average
2 ビュー (過去 30 日間)
古いコメントを表示
When I read the file names from a selected directory, the names are coming out to be like the following:
I tried
folder_path=uigetdir;
cd(folder_path)
flist=dir('*.dat');
flist.name gives
A01-Apr-2014.dat
A01-Apr-2015.dat
A01-Apr-2016.dat
A01-Aug-2014.dat
A01-Aug-2015.dat
A01-Aug-2016.dat
A01-Dec-2014.dat
A01-Dec-2015.dat
A01-Dec-2016.dat
....
Is there a way in MATLAB to read and access the file names in the actual month order?
E.g:
A01-Jan-2014.dat
A01-Feb-2014.dat
A01-Mar-2014.dat
A01-Apr-2014.dat
...
A01-Jan-2015.dat
A01-Feb-2015.dat
A01-Mar-2015.dat
....
Then, taking hourly averages from each month and writing the entire average values in a single file would be easy and flawless.
Thank you.
0 件のコメント
採用された回答
Stephen23
2018 年 10 月 16 日
編集済み: Stephen23
2018 年 10 月 16 日
Two solutions:
2) Convert those dates to date numbers, sort them, and then apply those indices to the filenames. Like this:
C = {flist.name};
V = datenum(C,'Add-mmm-yyyy.dat');
[~,idx] = sort(V); % sort the date numbers.
C = C(idx); %sort the filenames into date order.
for k = 1:numel(C)
C{k} % filename
...
end
13 件のコメント
Stephen23
2018 年 10 月 17 日
編集済み: Stephen23
2018 年 10 月 17 日
@Venkata: here are two solutions:
1) use format '%g', e.g. '%10.5g', or something similar.
2) write the file using fprintf and define your own format string.
Read the fprintf help to know how to define dlmwrite's precision format string, and of course the fprintf format string.
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Dates and Time についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!