如何保存一个矩阵,其每个元素都是一个包含17列MATLAB表的单元格?

时间:2015-12-15 17:13:07

标签: matlab cell-array

假设我有超过500天的某项活动的数据。活动持续时间在500天内有所不同。每天的活动长达17列。

日常活动如下: activity description

我创建了一个名为' 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)。有没有办法将所有这些数据存储在合理的空间复杂度范围内?

1 个答案:

答案 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文件的问题,并且可以根据天数有选择地加载数据。