2010-02-28 42 views
-5

我有500个名为.txt,例如:Matlab的:我怎样才能改变下面的程序

abc-1.TXT 
adfer-2.txt 
affd-3.TXT 
asxdcccc-4.TXT 
... 

如何更改下面的程序实现数字顺序导致文件名:

Names = dir('MyFile\*.TXT'); 
for i = 1:500 
    fn = strcat(['MyFile\' Names(i).name]); 
    ... 

有没有办法让文件名中包含的数字循环?
上述程序的问题是我得到的结果不符合文件名中包含的数字的顺序。

感谢所有帮助我推进工作的人。

+0

开始,如果你给实际的文件名和目录,这将有助于而不是让他们起来......可能给一个线索,为什么你的代码没有运行你期待的方式。 – Zaid 2010-02-28 18:36:14

+0

MyFile是一个包含500个文件的文件夹,我想按数字顺序处理它们。 文件名不是任意的。 – Matlab09 2010-02-28 19:08:50

+0

您已经创建了类似的问题(http://stackoverflow.com/questions/2349519/what-do-i-have-to-add-at-the-beginning-of-this-loop)。为什么不编辑它来添加更多细节或回答评论?标题也非常不具说服力。 -1。 – yuk 2010-03-01 01:26:11

回答

1
names={'abc-1.TXT'; 
'affd-3.TXT'; 
'sdfg-33.txt'; 
'adfer-2.txt'; 
'asxdcccc-4.TXT'}; 

for i=1:length(names) 
    [v1 v2]=regexp(names{i},'[1-9]*'); 
    numbers(i)=str2num(names{i}(v1:v2)); 
end 

[B,IX] = sort(numbers); 
names{IX} 

最后一行将按数字顺序打印名称。我想你可以从这里继续。

哦,你应该

Names = dir('*.TXT'); 
names = Names.name; 
+0

最后一行应该是:names = {Names.name}';无论如何,好的答案。 – yuk 2010-03-01 01:27:24