场景是我需要从几个.mat文件加载结构数组形式的数据,并将它们组合成一个单独的数组以便以后处理。最初我做的是:
raw_data = [];
for i=1:length(file_name_list)
raw_data = [raw_data importdata(file_name_list(i))];
end
然后MATLAB警告我:
The variable 'raw_data' appears to change size on every loop iteration. Consider preallocating for speed.
如果我理解正确,当附加到数组时,MATLAB将重新分配一些空间并将所有原始元素复制到新位置,因此可能需要花费很多时间。但问题是,我事先并不知道文件中有多少结构,我不知道每个结构的大小。有没有办法加快这个过程?已经需要5秒钟来完成总共600个结构的2个文件(这非常慢)。
感谢您的帮助!
答案 0 :(得分:0)
尝试以下方法:
将raw_data
初始化为大小相当于.mat
个文件数的单元格数组。
raw_data=cell(length(file_name_list),1);
for i=1:length(file_name_list)
raw_data{i} = importdata(file_name_list(i));
end
这应该可以解决您的问题。