假设我在myfile.mat中保存了50x1结构。有没有办法追加它,这样我在myfile.mat中得到一个51x1结构而不必实际将整个50x1结构加载到内存中?
答案 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 进行索引。您只能执行上述操作,因为它是一个被索引的非标量结构数组,而不是单个字段。