matlabのGUIから解法される方法
matlabをssh経由で使用するとGUIの表示が非常に遅い。Alt-tabでウィンドウの表示切り替えするとなると表示まで2秒くらい待たされる。ストレスフル。
ということでGUIを捨ててCUIで全て行うことにした。m-fileは元々vimで書いてたし。
- matlab起動時に-nodisplayオプションをつけるとCUIで使用可能
- なんとscreen上でmatlabが使える!超便利。
- matlabシェル上で頭に!をつけるとshellコマンドが使用可能
- CUIで画像保存はsaveas(plot(..略..), 'filename.jpg', 'jpg');こんな感じ。jpgなら。
- plot関数が長いときはh = plot(...);と変数にでも入れる
- matlab起動時に-rオプションで初回コマンドを指定できる
- shell上で画像表示するにはxview, xliなど。
- リモート上ではsshに-Xか-Yオプションが必要。
ということで
x=-pi:0.1:pi; y=sin(x); h=plot(x,y,'-'); saveas(h, 'hoge.jpg', 'jpg'); !xview hoge.jpg exit
というm-file(PlotTest.mとする)書いて、
シェル上から
$ matlabr2007b -nodisplay -r PlotTest
てなかんじに実行すると良い感じ。
別にmatlab -nodisplayで起動しっ放しでいいじゃん、と初め思ったのけどダメだった。
おそらくmatlabのバグなのだろうけど、matlabr2007b起動してsaveasを複数回行うと、2回目以降の画像がやたら小さくなる。screenとかCUIとかは関係なかった。2009ではもう直っているだろうか。
GUIではなく、linux shell上で動くというのはとても大きなメリットだと感じている。
全てscreen上につっこめるわけだから。