2013-04-04 324 views
0

我目前有20個文本文件,命名從file1開始到file20。我正在閱讀他們到matlab使用按照它們出現在Matlab中的順序讀取文件夾中的所有文本文件

filePattern = fullfile(myFolder, '*.txt'); 
dataFiles = dir(filePattern); 
for k = 1:length(dataFiles) 
baseFileName = dataFiles(k).name; 
fullFileName = fullfile(myFolder, baseFileName); 
fid = fopen(fullFileName, 'r'); 
line = fgetl(fid); 

while ischar(line) 
    tks = regexp(line, '\[([^,]+),([^\]]+)\]([^\[]+)\[([^\]]+)\]([^\[]+)', 'tokens'); 
    for ii = 1:numel(tks) 
     j=j+1; 
     mat(j ,:) = str2double(tks{ii}); 
    end 
    line = fgetl(fid); 
end 
fclose(fid); 
end 

它是完美的工作,但我需要保留文本文件在文件夾中出現相同的順序。數據從file1下一個file2下一個file3直到file20進入Matlab。

但它正在重新整理到file1 file10 file11 file12 ... file2 file20和閱讀。 dataFiles是一個結構,並且按照字母順序加載文件。如何防止呢?

回答

2

我建議使用sort_nat(可在Matlab Central上找到)完成此任務。

運行此在一個空文件夾:

% create sample files 
for i = 1:20 
    filename = sprintf('file%d.txt',i); 
    fclose(fopen(filename, 'w')); 
end 

% obtain folder contents 
files = dir('*.txt'); 

%{files.name} % -> list of files might be in alphabetical order (depends on OS) 

% sort_nat sorts strings containing digits in a way such that the numerical value 
% of the digits is taken into account 
[~,order] = sort_nat({files.name}); 
files = files(order); 

% check output is in numerical order 
{files.name} 
+0

它的工作。謝謝 – ChanChow 2013-04-04 08:50:49

相關問題