MATLAB R2010b新機能
つい先日、R2010bがリリースされました。
個人的に興味のある新機能がいくつかありますが、まず目についたのはコレです。
信号比較ツール
このツールは、
- Simulink上の任意の信号が対象
- シミュレーション実行毎に信号を記録できる
- 記録したデータ同士を比較できる
というものです。以前からこのツールはあったのですが、別物といってもいいくらいに良くなっています。
お手軽に信号比較
信号比較は、
- 見たい信号を指定する
- ツールを起動し、実行準備をする
- シミュレーションを実行し、結果を蓄積する
- シミュレーション結果を比較する
という4ステップで行います。とても簡単なので、SSをざっとお見せします。
見たい信号を指定する
<目標>
見たい信号を指定する
<手順>
信号線を右クリックし、「信号プロパティ」をクリック
「信号名」を入力し、「信号データのログ」にチェックを入れる
<結果>
信号に、信号名と、プローブマークが付きます
ツールを起動し、実行準備する
<目標>
信号比較をするためのツールを起動し、信号比較のための準備を行います
<手順>
「ツール」>「ログ信号の検査」をクリックします。
シミュレーションデータインスペクターが起動するので、「シミュレーション出力を記録」ボタンをクリックします
<結果>
シミュレーションデータインスペクターが起動し、「シミュレーション出力を記録」ボタンが押された状態になります
シミュレーションを実行し、結果を蓄積する
<目標>
シミュレーション結果を蓄積する
<手順>
シミュレーションを実行します
すると、シミュレーションデータインスペクターに信号が登録されます。
パラメータを変えて、シミュレーションを実行してみます。
すると、シミュレーションデータインスペクターに信号が追加されます。
<結果>
2回シミュレーションを実行した結果、シミュレーションデータインスペクターに2つの信号が登録されます。
シミュレーション結果を比較する
シミュレーションデータインスペクターの「信号の検査」タブで、見たい信号にチェックをいれます。すると、それらの信号が並べて表示されます。
「信号の比較」タブで、比較したい信号を選択すると、2つの信号の誤差が表示されます。
「実行の比較」タブで、「比較」ボタンを選択すると、1回目のシミュレーションと2回目のシミュレーションで、信号が一致するか否かを確認できます。
リグレッションテストに応用
こんな事が出来ると便利そうです。
ステップ1:「この動きが正しい!」という状態を保存しておく
ステップ2:モデル変更後に、動きが変わっていないか確認する
実は、シミュレーションデータインスペクターを使えば、こういった事もできます。とても簡単です。
正しい状態を保存しておく
<目的>
これが正しい、という状態を保存しておく
<手順>
シミュレーションデータインスペクターを起動し、シミュレーションを実行する
「保存」ボタンをクリックし、MATファイル名を指定して「保存」ボタンをクリックする
<結果>
信号の内容が保存された、MATファイルが生成されます。
モデル変更後に、動きが変わっていないか確認する
<目標>
シミュレーション結果に変化がないか確認する
<手順>
シミュレーションデータインスペクターを起動し、「開く」ボタンをクリックする。そして、以前保存しておいたMATファイルを指定する。
「シミュレーション出力を記録」をクリックしてから、シミュレーションを実行する
<結果>
あらかじめMATファイルに保存しておいた内容と、新たにシミュレーション実行した内容とを比較する事ができます
まとめ
シミュレーションデータインスペクターが、シミュレーション間の信号を比較できるようになった結果、いろいろな事が出来るようになりました。
モデルの入口・出口だけでなく、任意の部分の信号を見る事が出来ます。そのため、大きなモデルでも切り分けができるようになるため、「モデルの、どの部分の振る舞いが変わってしまったのか?」が、とても簡単に分かります。
ソルバ設定を変えたり、ワークスペース変数を変えたりして実行した場合、シミュレーションの実行結果が変わってしまいます。かといってモデル本体が変わったわけではないので、Diffを取っても原因は分かりません。そういった場合には、このツールを使って信号レベルで検証するしか手がなく、とても重宝しそうです。