自然顺序排序
肖恩本周的选择是自然顺序分类工具套装斯蒂芬Cobeldick
如果您处理数据,也有文件,您可能会遇到很多不同的命名方案。对于其中的一些数值排序顺序可能是一样的ASCII顺序排序顺序。但它并不总是,以及如何应对,这是一个普遍的问题上matlab答案.
在使用“%0xi”格式命名我自己的文件时,我通常尝试以以下方式设置它num2str.例如:
为Ii = [1 2 17 495 3920]%% 04I - 高达号码前四个零。filenameii = [“文件”num2str(二世,'%04I'). csv”];DISP(filenameii)结束
file0001.csv file0002.csv file0017.csv file0495.csv file3920.csv
Stephen的自然顺序排序工具可以帮助对不一定具有这种设置的文件或名称进行排序。例如,让我们看看使用的几个文件的ASCII顺序调用sortRows.
文件= {“file1.csv”,“file111.csv”,“file21.csv”,“file211.csv”} ';disp (sortrows(文件)
“file1.csv'file111.csv'file21.csv 'file211.csv'
数值file111.csv不应该在…之前file21.csv.现在让我们使用natsort为我们做到这一点:
DISP(natsort(文件))
'file21.csv' 'file111.csv' 'file211.csv'
Stephen提供的其他实用程序允许对此进行更多的控制,并允许扩展它,使其不仅可以处理单元格的单个元素,还可以处理整个文件路径。例如,我应该如何排序以下内容?
文件= {“C: \ \ Exp1 \ test1.csv文件”,“C: \ \ Exp2 \ test1.csv文件”,“C: \ \ Exp2 \ test2.csv文件”,'C:\文件\ EXP1 \ test2.csv'} ';disp(文件)
'C:\文件\ EXP1 \ test1.csv' 'C:\文件\ EXP2 \ test1.csv' 'C:\文件\ EXP2 \ test2.csv' 'C:\文件\ EXP1 \ test2.csv'
按实验:
disp (natsortfiles(文件)
C:\Documents\Exp1\test1.csv' 'C:\Documents\Exp1\test2.csv' '
要按测试排序,我们可以将文件路径分割成小块,然后使用natsortrows在片:
在文件分隔符上分割filepices = regexp(文件,[''filesep''],“分裂”);filepieces = vertcat (filepieces {:});disp (filepieces)
'C:' '文件' 'EXP1' 'test1.csv' 'C:' '文件' 'EXP2' 'test1.csv' 'C:' '文件' 'EXP2' 'test2.csv' 'C:''文件EXP1 'test2.csv'
%排序它们通过第四列(测试),那么第三列(实验)[~, idx] = natsortrows(filepies,[4 3]);disp(文件(idx))
C:\Documents\Exp1\test1.csv' 'C:\Documents\Exp2\test1.csv' '
这些文件提供了极好的帮助,是有据可查的。
我对Stephen的唯一建议是将这些文件一起提供到一个File Exchange条目中(或者作为第四个条目)。这完全是因为我很懒,下载所有单独的zip文件并解压缩需要多花几分钟的时间。但是,由于后两个文件依赖于natsort如果没有这个过程,它们就无法独立工作。
注释
如果有选择,你选择如何存储你的文件吗?什么挑战,当你从他人或从硬件接收文件怎么面对?让我们知道以下.
- 类别:
- 选择
注释
要留下评论,请点击这里登录到您的MathWorks帐户或创建一个新帐户。