初めて知ったときにそうだよ、コレだよコレってなりました。
~テツ高垣 (@Urahustet) さんのコメントより~
お久しぶりです、井上 @ 引き続き在宅勤務です。
Twitter でも「MATLAB インストールした?」「MATLAB ってなんぞ?」「MATLAB 完全に理解した」という声が聞こえてくる季節。この春から MATLAB を使うことになった新大学生、新社会人の皆様にイチオシ機能を届けたい。それも MATLAB チョットデキル 友達が使っている機能を。
ということで Twitter で募集をしたところ、フォロワーの皆様から沢山紹介いただいたので一部だけですが紹介します。コメントくださった皆様、ありがとうございました!全部取り上げたかったのですが、残念ながらここでは一部だけの紹介になります。こちら(
Twitter: MATLAB チョットデキル 人たちのイチオシ機能)でもまとめておりますので是非ご覧ください。
目次
- この関数 is 何?:doc/edit
- プロット操作を手軽に:linkaxes, subplot/tiledlayout
- 何かがおかしいこのコード ・・:profier, debug
- 各種ショートカットでかっこよく
- 番外編:MATLAB Coder で処理を高速化
1. この関数 is 何?:doc/edit
doc はおそらく自分も普段一番使う機会の多い関数。関数の詳細をすべて覚えていられないので、コードを書く時は常にドキュメンテーションページで確認しながら。
例えば「plot でこれできるんだっけ・・?」な時は
「writetable の出力設定何があったかな・・」な時は迷わず
です。このあと登場する関数も是非 doc で確認してみてください。
コンパイルされていたりしてすべてが見える形で提供されてるわけではない点はご了承ください。
2. プロット操作を手軽に:linkaxes, subplot/tiledlayout
おそらくすべての MATLAB ユーザーがプロットを一度は作ることになる。そんなプロット操作を楽にする機能。プロットを1つの Figure に並べるのに使うのは以前から
subplot ですね。
figure
subplot(1,2,1)
plot(rand(10,2))
subplot(1,2,2)
そして R2019b で
tiledlayout が登場しました。
tiledlayout(2,1) のように分割数(縦に 2 つ、横に 1 つ)を決め打ちするのも OK ですし ‘flow’ で動的に追加していく形も可能で、自由度が増しています。’TileSpacing’ を ‘compact’ とすると、余白をきゅっと小さくすることもできます。
figure
tiledlayout(‘flow’,‘TileSpacing’,‘compact’)
nexttile
plot(rand(10,2))
nexttile
さらに
linkaxes ですが、これは複数のプロットを連携させるときに便利です。1 つのプロットの表示範囲を変更すると、リンクされた他のプロットも合わせて表示範囲が変わります。関連するデータ(例えば複数の時系列)をみていくときに便利ですね。
figure
tiledlayout(‘flow’,‘TileSpacing’,‘compact’)
ax1 = nexttile;
plot(rand(10,2))
ax2 = nexttile;
plot(rand(10,2))
リンクすべき座標軸のオブジェクト(以下では ax1 と ax2)を
linkaxes で指定します。
そして最後に、グラフの一部を別のグラフへコピーしたいな・・そんなときはこれ。再現性を考えるとコード側を変えた方がよいですが、ちょっと試してみるなら手軽でいいですね。
3. 何かがおかしいこのコード:profiler, debug
コードを書く上で欠かせないのがデバッグ機能。デバッグ機能といえば一番基本的なものは
ブレークポイントでしょう。
コード(スクリプト・関数)の横をクリックしてブレークポイントを設定しておくと、実行時にそこで一時停止し、その時点での変数が確認できるという優れもの。意図通りの処理になっているかを確認できますね。
上級者向けになりますが、ブレークポイントの設定(dbstop)、次の行に移動(dbstep)、続きを実行(dbcont)など、ボタンクリックではなくコマンドでの実行で効率があがるかも。
書いたコードの処理が遅いかも?という時には
プロファイラーを是非試してみてください。どのコマンドが何回呼び出されて、処理に何秒かかっているかが一目瞭然。
ボトルネックになっている部分から改善するようにすれば、全体の速度アップを効率よく実現できます。
4. 各種ショートカットでかっこよく
何度も行うような作業はショートカットでやってしまうのがおススメです。中でもよく使うのがこれ。
動画(Ctrl+I:自動インデント Ctrl+D:選択した関数を開く Ctrl+R:コメント化 Ctrl+T:コメント解除)
例えば、特定の行を除いて実行してみるのときに Ctrl + T でコメント化して F5・・などで使います。
あとは、うっかりコードの実行をスタートしてしまった、急いで止めたい!そんな時は control + c ですね。
6.【番外編】MATLAB Coder で処理を高速化
言われてみれば実行速度が気になるときに試してみる機能です。MATLAB Coder といえば MATLAB コードからの C/C++ コード生成を担う Toolbox ですが、生成した C/C++ コードからコンパイルして MATLAB で実行できる関数(MEX 関数)にするという機能もあります。C/C++ の実行速度の速さを MATLAB で実現できるイメージです。MEX 関数は、C/C++ を実際に触ることなく作ることができるのでかなりお手軽です。
すべての MATLAB 関数が MEX 化できる、というわけではない点は注意が必要ですが、既に紹介したプロファイラーを使って見つけたボトルネック部分を MEX 化してしまう、というのも 1 案ですね。包括ライセンスなどで使える環境にいらっしゃる場合は特に使わない理由はありません。詳細はこちら:MATLAB アルゴリズムの高速化
まとめ
MATLAB を使っている方にとっては「言われてみれば確かによく使っている・・」というものもあったかもしれません。他にもこんなおススメがあるよ!という方はコメントください。
使い始めて間もない方はまだピンとこない部分もあるかもしれませんが、知っておくだけでどこかで役に立つはず。ぜひ試してみてください。
いっちょしっかり学んでやるか、という方にはオンラインで受講できるチュートリアルもおススメです。
Campus-Wide License をご利用頂いている皆様には、この辺のオンライントレーニングもすべて無料で受け放題ですのので、いろいろつまみ食いする気持ちで試していただけたら嬉しいです。詳細:全学向け MATLAB トレーニング
コメント
コメントを残すには、ここ をクリックして MathWorks アカウントにサインインするか新しい MathWorks アカウントを作成します。