避免在 Matlab 中保存图形

pkj*_*pkj 4 matlab plot matlab-figure

从 R2014b 开始,Matlab 改变了使用命令保存变量的方式save;Matlab 还改变了图形句柄的保存方式,现在将它们保存为结构体。如果工作区中有图形句柄,Matlab 需要更长的时间来保存mat文件,mat 文件的大小很大,并且当您加载文件时,所有保存的图形都会弹出,这让我很恼火。它还会产生警告:

Warning: Figure is saved in Oakley_19_PDEparameterEstimation.mat. Saving graphics handle variables can cause the creation
of very large files. To save graphics figures, use savefig. 
Run Code Online (Sandbox Code Playgroud)

我有一个简单而直接的问题:

如何避免保存所有图形句柄?

请不要建议我clearvars 在保存之前可以计算句柄。

谢谢

gno*_*ice 5

您可以使用以下方法获取有关当前工作区变量的信息whos,并仅保存那些类不是图形句柄对象的变量(即类名字符串不包含'matlab.graphics''matlab.ui'):

varData = whos;
saveIndex = cellfun(@isempty, regexp({varData.class}, 'matlab.(graphics|ui)'));
saveVars = {varData(saveIndex).name};
save('no_handles.mat', saveVars{:});
Run Code Online (Sandbox Code Playgroud)

  • 我不会发布我的答案,因为它与您的方法相同,但从原始问题中的错误消息来看,该警告似乎是由于尝试保存图形句柄(“matlab.ui.Figure”)而引起的,您可能还想过滤掉类名中带有“matlab.ui”的变量。 (2认同)