2017-08-08 80 views
3

啓動R2014b Matlab已經改變了如何使用save命令保存變量的方式; Matlab也改變了圖形手柄的保存方式,現在它們被保存爲結構。如果在工作區中有圖形手柄,Matlab需要更長的時間才能保存mat文件,mat文件的大小很大,當您加載文件時,所有保存的圖形都會彈出,這對我很刺激。它也產生一個警告:避免在Matlab中保存圖形

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. 

我有一個簡單而直接的問題:

如何避免保存所有的圖形手柄?

請不要暗示,我可以clearvars數字手柄保存之前。

謝謝

回答

0

您可以選擇您保存的變量。

例子:

save('data.mat', 'var_name1', 'var_name2', 'var_name3'); 

其中var_name1等等......你要保存的變量的名稱。

+0

感謝答覆,但這就是我不能做的,我有很多變量,腳本不斷髮展 – pkj

2

可以使用whossave只有那些變量,其類別不是一個圖形處理對象獲取有關當前工作空間變量的信息(即類名字符串不包括'matlab.graphics''matlab.ui'):

varData = whos; 
saveIndex = cellfun(@isempty, regexp({varData.class}, 'matlab.(graphics|ui)')); 
saveVars = {varData(saveIndex).name}; 
save('no_handles.mat', saveVars{:}); 
+0

我正在處理它 – pkj

+2

我不會發布我的答案,因爲它與您的方法相同,但是來自原始問題中的錯誤消息,它看起來像是試圖保存圖形句柄(''matlab.ui.Figure ''),你可能想要在類名中用''matlab.ui''來過濾變量。 – jodag

+0

@jodag正確 – pkj