本周文件交换精选

我们最好的用户提交

自然顺序排序

肖恩本周的选择是自然顺序分类工具套装斯蒂芬·科贝迪克

如果使用数据,可能会遇到许多不同的文件命名方案。对于其中一些,数字排序顺序可能与ASCII排序顺序相同。但情况并非总是如此,如何处理这一问题是一个普遍存在的问题MATLAB答案

在使用“%0xi”格式命名我自己的文件时,我通常尝试以以下方式设置它num2str.例如:

Ii = [1 2 17 495 3920]%%04i-数字前面最多四个零。filenameii=[“文件”num2str(二世,“%04i”. csv”]; disp(文件名II)结束
file0001.csv file0002.csv file0017.csv file0495.csv file3920.csv

Stephen的自然顺序排序工具可以帮助对不一定具有这种设置的文件或名称进行排序。例如,让我们看看使用的几个文件的ASCII顺序索特罗斯

文件= {“file1.csv”“file111.csv”“file21.csv”“file211.csv”} ';disp (sortrows(文件)
“file1.csv”“file111.csv”“file21.csv”“file211.csv”

数值文件111.csv不应该在…之前file21.csv.现在让我们使用自然排序为我们做到这一点:

显示(natsort(文件))
'file21.csv' 'file111.csv' 'file211.csv'

Stephen提供的其他实用程序允许对此进行更多的控制,并允许扩展它,使其不仅可以处理单元格的单个元素,还可以处理整个文件路径。例如,我应该如何排序以下内容?

文件= {“C: \ \ Exp1 \ test1.csv文件”“C: \ \ Exp2 \ test1.csv文件”“C: \ \ Exp2 \ test2.csv文件”'C:\Documents\Exp1\test2.csv'} ';disp(文件)
'C:\Documents\Exp1\test1.csv''C:\Documents\Exp2\test1.csv''C:\Documents\Exp2\test2.csv''C:\Documents\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文件并解压缩需要多花几分钟的时间。但是,由于后两个文件依赖于自然排序如果没有这个过程,它们就无法独立工作。

评论

如果有选择,您将如何选择存储文件?当您从其他人或硬件接收文件时,您将面临哪些挑战?请告知我们在下面

试试看,让我们知道你的想法在这里或者离开评论给斯蒂芬。




发布与MATLAB®R2014b

|
  • 打印
  • 发送电子邮件

评论

要留下评论,请点击在这里登录到您的MathWorks帐户或创建一个新帐户。