假设我有超过500天的某项活动的数据。活动持续时间在500天内有所不同。每天的活动长达17列。
我创建了一个名为' activity_database.mat'的零(500 X 1)零文件。然后我试着在MATLAB中做到这一点:
clear
load 'activity_database.mat'
for v=1:500
////////////////////////////
DO SOMETHING TO GET A TABLE
///////////////////////////
activity_data{v}=merged_table;
save('activity_database.mat','activity_data')
end
现在,在运行代码之后。当我尝试加载activity_database.mat时,收到以下错误:
Error using load
Unable to read MAT-file C:\Users\jackryan\activity_database.mat. File might be corrupt.
我做错了什么,在这里?此外,数据库实际上是50000个元素,所以我也期待空间错误(大约30 GB)。有没有办法将所有这些数据存储在合理的空间复杂度范围内?
答案 0 :(得分:1)
您可以按指定的顺序每天保存一个文件,而不是将整个数据累积在一个文件中。类似的东西:
first_date = datenum(2012, 12, 20);
db_folder = '//somewhere/over/the/rainbow/';
for v=1:500
%// DO SOMETHING TO GET A TABLE
mat_name = sprintf('activity_day_%s.mat', datestr(first_date+v-1,'yyyymmdd'));
save(fullfile(db_folder,mat_name), 'merged_table');
end;
您不应该遇到超量.mat
文件的问题,并且可以根据天数有选择地加载数据。