MATLAB에서 dir('*.txt')
을 사용하는 폴더에서 텍스트 파일을 읽습니다. 텍스트 파일의 이름은 0, 4, 8, 12, ..180.txt
입니다. dir
은 0
을 먼저 반환 한 다음 100
을 104
등과 같이 반환합니다. 왜 이런 일이 일어나는 걸까요? 당신이 파일 의 순서와 당신은 이미 자신의 이름을 알고에 민감한 경우Matlab dir ('* .txt') 명령이 txt 파일을 순서대로 나열하지 않음
0
A
답변
2
Lexicographical ordering 작품 만있는 정보를보고 결정을 내리는 데 필요합니다. 우리의 경우 정보는 파일 이름에있는 문자의 ASCII 값입니다. 다음의 예를 고려해
을 우리가 두 개의 파일 이름
10.txt
및2.txt
이있는 경우, 목록 메커니즘은 이러한 파일의 1 일 문자, 즉1
대2
을 비교하며, 작은 중 반환합니다, 이 경우에는10.txt
에 속하는1
입니다.대신 우리가 가진 경우
2.txt
및20.txt
은, 첫 번째 문자는 동일하므로 다음 문자는.
또는0
중 하나 인 비교됩니다. 여기에서.
의 ASCII 값은46
이고0
의 값은48
이므로2.txt
이 먼저 반환됩니다.
당신은 항상 의미, 당신은 파일 이름에 필요한 최대 자릿수를함으로써이 문제를 해결 할 수 있습니다
0.txt --> 000.txt
4.txt --> 004.txt
25.txt --> 025.txt
180.txt --> 180.txt
그런 다음 파일이 예상되는 순서로 반환됩니다.
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
이것은 사전 식 순서가 작동하는 방식입니다 ... –