Matlab dir(';*.txt';)命令未按顺序列出txt文件
我正在使用MATLAB中的Matlab dir(';*.txt';)命令未按顺序列出txt文件,matlab,directory,directory-listing,lexicographic,Matlab,Directory,Directory Listing,Lexicographic,我正在使用MATLAB中的dir('*.txt')从文件夹中读取文本文件。文本文件名为0,4,8,12,…180.txtdir首先返回0,然后返回100,然后返回104,依此类推。为什么会发生这种情况?如果您对文件的顺序很敏感,并且您已经知道它们的名称,那么您根本不必使用dir: for ii=0:4:180 filename = sprintf('%d.txt', ii); fid = fopen( fullfile('/path/to', filename), 'r' );
dir('*.txt')
从文件夹中读取文本文件。文本文件名为0,4,8,12,…180.txt
dir
首先返回0
,然后返回100
,然后返回104
,依此类推。为什么会发生这种情况?如果您对文件的顺序很敏感,并且您已经知道它们的名称,那么您根本不必使用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
如果您对文件的顺序敏感,并且您已经知道它们的名称,那么您根本不必使用
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
通过只查看决策所需的信息来工作。在我们的例子中,信息是文件名中字符的ASCII值。考虑下面的例子:
- 如果我们有两个文件名
和10.txt
,列表机制将比较这些文件的第一个字符,即2.txt
和1
,并将返回最小的一个,在本例中,这是属于2
的10.txt
1
- 如果改为使用
和2.txt
,则第一个字符相同,因此将比较下一个字符,即20.txt
或
。这里,由于0
的ASCII值是
,而46
的ASCII值是0
,因此将首先返回48
2.txt
0.txt-->000.txt
4.txt-->004.txt
25.txt-->025.txt
180.txt-->180.txt
然后文件将按预期顺序返回。只查看决策所需的信息。在我们的例子中,信息是文件名中字符的ASCII值。考虑下面的例子:
- 如果我们有两个文件名
和10.txt
,列表机制将比较这些文件的第一个字符,即2.txt
和1
,并将返回最小的一个,在本例中,这是属于2
的10.txt
1
- 如果改为使用
和2.txt
,则第一个字符相同,因此将比较下一个字符,即20.txt
或
。这里,由于0
的ASCII值是
,而46
的ASCII值是0
,因此将首先返回48
2.txt
0.txt-->000.txt
4.txt-->004.txt
25.txt-->025.txt
180.txt-->180.txt
然后,文件将按预期顺序返回。这就是词典排序的工作原理……这就是词典排序的工作原理。。。