Matlab目录(' * .txt')命令不按顺序列出txt文件

时间:2017-02-28 07:56:44

标签: matlab directory directory-listing lexicographic

我正在使用MATLAB中的dir('*.txt')从文件夹中读取文本文件。文本文件名为0, 4, 8, 12, ..180.txtdir首先返回0,然后100,然后104,依此类推。为什么会这样?

2 个答案:

答案 0 :(得分:2)

Lexicographical ordering的工作原理是只查看做出决定所需的信息。在我们的例子中,信息是文件名中字符的ASCII值。请考虑以下示例:

  • 如果我们有两个文件名10.txt2.txt,列表机制将比较这些文件的1 st 字符,即12对比,并返回最小的,在这种情况下是属于1的{​​{1}}。

  • 如果我们有10.txt2.txt,则第一个字符是相同的,因此将比较下一个字符,即20.txt或{{1} }。在这里,由于.的ASCII值为0,而.的ASCII值为46,因此将首先返回0

您可以通过始终拥有文件名所需的最大位数来解决此问题,这意味着:

48

然后将按预期顺序返回文件。

答案 1 :(得分:0)

如果您对文件的顺序敏感,您已经知道了他们的名字,那么您根本不必使用dir

for ii=0:4:180
    filename = sprintf('%d.txt', ii);
    fid = fopen( fullfile('/path/to', filename), 'r' );
    % ... do the processing here
    fclose(fid);
end