我希望将多个.mat文件(大约500个)加载到我的工作区中。这些文件被命名为
omni_AP1_trial_1_loc_1.mat
omni_AP1_trial_1_loc_2.mat
omni_AP1_trial_1_loc_3.mat
.
.
omni_AP1_trial_1_loc_57.mat
.
.
omni_AP1_trial_10_loc_1.mat
omni_AP1_trial_10_loc_2.mat
omni_AP1_trial_10_loc_3.mat
.
.
omni_AP1_trial_10_loc_57.mat我正在使用给定的代码:
files_1 = dir('omni_AP1_trial_*_loc_1.mat');
NumberOfDataset = length(files_1);
for i = 1:NumberOfDataset
%get allfiles matching the pattern 'dataset(i)_*'
files = dir(sprintf('omni_AP1_trial_%d_loc_*.mat',i));
for j = 1:length(files)
fprintf('Current file : %s\n',files(j).name)
a= load(files(j).name);
end
end在执行期间,即使fprintf语句显示正在选择的连续文件,但结构()只保存被拾取的最后一个文件,并且在循环迭代时前一个文件正在被覆盖。
如何将所有文件一起加载到工作区中?请帮帮忙。
发布于 2015-04-29 12:13:42
您可以为迭代中的结果创建一个结构数组:
a = []; % create empty array
files_1 = dir('omni_AP1_trial_*_loc_1.mat');
NumberOfDataset = length(files_1);
for i = 1:NumberOfDataset
%get allfiles matching the pattern 'dataset(i)_*'
files = dir(sprintf('omni_AP1_trial_%d_loc_*.mat',i));
for j = 1:length(files)
fprintf('Current file : %s\n',files(j).name)
a(end+1)= load(files(j).name); % store data in struct array
end
end发布于 2015-04-29 12:17:46
您的a值每次都会被覆盖,但是您可以有一个结构数组:
a(j) = load(files(j).name);下一个问题通常是如何在多个struct数组元素中索引相同的子元素。如果subelement是存储在文件中的变量的标量字段(如果该变量在每个文件中具有相同的名称),则可以这样做
[a(:).variablename.subelement]https://stackoverflow.com/questions/29943311
复制相似问题