MATLABで生成したFigureを画像として自動で保存する
MATLABくんでちょっとしたシミュレーションやら何やらを行う時、毎回コード上の数値をちょこっと変えてみて何度もスクリプトを実行……なんてケースがあると思いますが、plotしたグラフをFigureウィンドウからいちいち保存するのが面倒ですよね。そんな時に自動で保存出来るようにする何かです。
saveas
特定のファイル形式への Figure の保存 - MATLAB saveas - MathWorks 日本
公式チュートリアルにも出てると思いますが、Figureを保存する時はsaveas
を使えばOKです。以下のコードをplot
が完了した直後に入れてみてください。保存先はスクリプトがあるのと同じフォルダになります。
saveas(gcf,'chart.png')
gcfについてはこちらを参照ください。現在のFigureを示すもの、くらいに思っていただければ。
現在の Figure ハンドル番号の取得 - MATLAB gcf - MathWorks 日本
で、1回だけならこのコードで大丈夫なんですが、実行の度に"chart.png"というファイル名で保存を試みると(当たり前ですが)ファイル名が重複してしまうので以下のようなエラーが出ます。
エラー: your_matlab_file (line 50)
saveas(gcf,'chart.png')
「毎回コード上の数値をちょこっと変えてみて何度もスクリプトを実行」というケースには使えないので工夫が必要です。
ファイル名に日時を入れる
連番入れてあげるのもいいですが、手っ取り早く日時を入れてあげましょう。
MATLABはdatetime('now')
で現在日時を取得できますが、こいつには:
が含まれていてファイル名にはできないのでその辺を置換します。
(ついでにスペースとかも個人的な好みでアンダーバーに置換えてます。)
FileName = strrep(strrep(strcat('chart_',datestr(datetime('now')),'.png'),':','_'),' ','_') saveas(gcf,FileName)
これを実行するとchart_07-Nov-2016_01_54_45.png
といった形式でファイルが保存されます。
(ゆん)