我目前有 20 个文本文件,命名从 file1 到 file20。我正在使用 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
它工作正常,但我需要保留文本文件在文件夹中出现的相同顺序。将文件1、文件2、文件3、直到文件20的数据导入Matlab。
但它正在重新排列为 file1 file10 file11 file12 ... file2 file20 并读取。 dataFiles 是一个结构,文件按字母顺序加载。如何预防呢?
我建议使用sort_nat http://www.mathworks.com/matlabcentral/fileexchange/10959-sortnat-natural-order-sort(可在 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}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)