有没有办法在文件中附加保存的MATLAB结构而不将其加载到内存中?

时间:2014-02-24 19:18:36

标签: matlab

假设我在myfile.mat中保存了50x1结构。有没有办法追加它,这样我在myfile.mat中得到一个51x1结构而不必实际将整个50x1结构加载到内存中?

1 个答案:

答案 0 :(得分:2)

使用matfile访问.mat文件。请参阅示例"Save to and Load from Part of a Variable."获取文件“myfile.mat”。

制作测试文件:

y = repmat(struct('field1',[],'field2',''),50,1);
save -v7.3 myfile.mat y

请注意it is necessary to save with the -v7.3 option允许部分加载变量:

  

matfile仅支持7.3版格式的MAT文件的高效部分加载和保存。如果索引到版本7(当前默认值)或早期MAT文件中的变量,MATLAB会发出警告并临时加载变量的全部内容。

matfile加载它并将其设置为可写:

m = matfile('myfile.mat','Writable',true);

在myfile.mat中将元素追加到现有的50x1结构y

m.y(end+1,1) = m.y(end,1)

这里我们要复制最后一个struct元素,但要创建一个新元素,只需使用与struct array中其余部分相同的字段。

注意:matfile不支持对struct数组的 fields 进行索引。您只能执行上述操作,因为它是一个被索引的非标量结构数组,而不是单个字段。