我使用下面的代码使用importdata
和for
命令读取多个文件。我遇到的问题是只保存了最后一个文件。我从importdata
得到一个矩阵,但它应该是6个矩阵
如何保存我导入的所有矩阵?
myFolder = 'M:\Matlab\Experiment-Result\read all';
filePattern = fullfile(myFolder, '*.dat')
theFiles = dir(filePattern);
for k = 1 : length(theFiles)
baseFileName = theFiles(k).name;
fullFileName = fullfile(myFolder, baseFileName);
fprintf(1, 'Now reading %s\n', fullFileName);
Data = importdata(fullFileName);
end
答案 0 :(得分:1)
很简单的原因。 Data
在循环的每次迭代中都会被覆盖,因此一旦for
循环停止,只会保存从上一次迭代读入的数据。如果你想每次迭代保存数据,我不知道你的数据是如何构建的,但为了使它具有最大的适应性,让Data
成为一个单元格数组:
myFolder = 'M:\Matlab\Experiment-Result\read all';
filePattern = fullfile(myFolder, '*.dat')
theFiles = dir(filePattern);
Data = cell(1,numel(theFiles)); %// Change
for k = 1 : length(theFiles)
baseFileName = theFiles(k).name;
fullFileName = fullfile(myFolder, baseFileName);
fprintf(1, 'Now reading %s\n', fullFileName);
Data{k} = importdata(fullFileName); %// Change
end
要访问k th 数据文件,只需执行以下操作:
out = Data{k};
然后,您可以使用out
,就好像它是一个矩阵,并以您认为合适的方式进入索引/切片。