How do I sort filenames base on the numbers right before file name in MATLAB?
14 ビュー (過去 30 日間)
古いコメントを表示
Hi
I have file names containing everything, but before the file format (like .mat), there is always a number indicating trials. how can I sort it only base on the trial number before the file format ''.mat''.
here are some examples of my files: S202T4_19112018_MS_T-_21.mat , S202T4_19112018_MS_stay_1.mat
Thanks.
3 件のコメント
Rik
2019 年 5 月 27 日
You can adapt the extract_numbers function to fit any pattern. You can use fileparts to remove the extension and then strfind to find the final underscore. The general structure of my answer should still stand.
採用された回答
Rik
2019 年 5 月 27 日
This should to the trick. Note that this will return an error if there is no match.
names={'example_1.mat','example_15.mat','example_2.mat'};
numbers=cellfun(@extract_number,names);
[~,order]=sort(numbers);
names=names(order);
function val=extract_number(str)
tokens=regexp(str,'_(\d*).mat','tokens');
val=str2double(tokens{end}{end});
end
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Characters and Strings についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!