Re: [讨论] dir 自然排序

楼主: celestialgod (天)   2016-04-12 01:17:15
※ 引述《dwadefans (wade)》之铭言:
: 我的档案名称是 A-(1).jpg, A-(2).jpg, A-(3).jpg...~A-(150).jpg
: 我使用dir函数取得我资料夹底下所有的jpg名称
: list=dir('*.jpg')
: 但是我取得出来的顺序会是:
: A-(1).jpg , A-(100).jpg, A-(101).jpg .... A-(9).jpg
: 看过网络上发现要按照我那样子去排序称做Natural Order
: 于是找到了sort_nat这个open source函数
: 但是套用时出现错误
:

: 似乎是不能直接input dir这类型的变量
: 得经过转换 但是才刚接触matlab还有许多部份不了解
: 想请问有没有人知道该如果正确的令档案进行排序呢?
: 谢谢!
你可以用regular expression做排序试试看
list = dir('*.jpg');
% 产生测试list
% list = sort(arrayfun(@(x) ['A-(', num2str(x), ').jpg'], ..
% 1:150, 'uni', false));
% list(1:4)
% ans =
% 'A-(1).jpg' 'A-(10).jpg' 'A-(100).jpg' 'A-(101).jpg'
[~, idx] = sort(cellfun(@str2double, ...
regexprep(list, 'A-\((\d*)\).jpg', '$1')));
list_output = list(idx);
list_output(1:4)
% ans =
% 'A-(1).jpg' 'A-(2).jpg' 'A-(3).jpg' 'A-(4).jpg'
作者: sunev (Veritas)   2016-04-12 07:30:00
这好像就是sort_nap的做法

Links booklink

Contact Us: admin [ a t ] ucptt.com