LoginSignup
3
2

More than 5 years have passed since last update.

MALTABのfigureの互換性問題を回避する

Last updated at Posted at 2018-01-15

MATLAB R2014bでfigファイルの大幅な仕様変更が行われ,後方互換性が失われた.そのため,最新版のMATLABで作成したfigファイルが旧式のMATLAB(R2014a以前のMATLAB)では開けないといった問題が存在する.この記事ではこの互換性問題の回避方法を紹介する.

コード

SavefigAsOldMATLAB.m
function SavefigAsOldMATLAB(figname)
    % figファイルをmatファイルとして読み出す
    fig = load(figname, '-mat');
    % フィールド‘hgS_070000‘のみをfigname_modified.figとして保存
    save([figname(1:end-4),'_modified.fig'], '-struct', 'fig', 'hgS_070000');
end

解説

figファイルの実態はmatファイルであり(参考1),複数の構造体が含まれている.
そのうち,フィールドhgS_070000は以前のバージョンから存在していたが,R2014bで新たにhgM_070000が追加された.
旧式のMATLABでfigファイルを開こうとしてエラーが生じるのは,このhgM_070000を解釈できないためである.
そのため,サンプルコードではhgS_070000だけを保存するようにした.

注意点

筆者の環境では問題は生じなかったが,GUIDEで作成したGUIについてはこの解決方法では回避できないおそれがある(参考2).

参考

1.FIG files format | Undocumented Matlab
2.GUIDE gui compatibility between 2015b and 2009b - MATLAB Answers - MATLAB Central

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2