MATLAB R2010b新機能

つい先日、R2010bがリリースされました。

個人的に興味のある新機能がいくつかありますが、まず目についたのはコレです。

信号比較ツール

このツールは、

  • Simulink上の任意の信号が対象
  • シミュレーション実行毎に信号を記録できる
  • 記録したデータ同士を比較できる

というものです。以前からこのツールはあったのですが、別物といってもいいくらいに良くなっています。

お手軽に信号比較

信号比較は、

  • 見たい信号を指定する
  • ツールを起動し、実行準備をする
  • シミュレーションを実行し、結果を蓄積する
  • シミュレーション結果を比較する

という4ステップで行います。とても簡単なので、SSをざっとお見せします。

見たい信号を指定する

<目標>

見たい信号を指定する

<手順>

信号線を右クリックし、「信号プロパティ」をクリック

「信号名」を入力し、「信号データのログ」にチェックを入れる

<結果>

信号に、信号名と、プローブマークが付きます

ツールを起動し、実行準備する

<目標>

信号比較をするためのツールを起動し、信号比較のための準備を行います

<手順>

「ツール」>「ログ信号の検査」をクリックします。

シミュレーションデータインスペクターが起動するので、「シミュレーション出力を記録」ボタンをクリックします

<結果>

シミュレーションデータインスペクターが起動し、「シミュレーション出力を記録」ボタンが押された状態になります

シミュレーションを実行し、結果を蓄積する

<目標>

シミュレーション結果を蓄積する

<手順>

シミュレーションを実行します

すると、シミュレーションデータインスペクターに信号が登録されます。

パラメータを変えて、シミュレーションを実行してみます。

すると、シミュレーションデータインスペクターに信号が追加されます。

<結果>

2回シミュレーションを実行した結果、シミュレーションデータインスペクターに2つの信号が登録されます。

シミュレーション結果を比較する

シミュレーションデータインスペクターの「信号の検査」タブで、見たい信号にチェックをいれます。すると、それらの信号が並べて表示されます。

「信号の比較」タブで、比較したい信号を選択すると、2つの信号の誤差が表示されます。

「実行の比較」タブで、「比較」ボタンを選択すると、1回目のシミュレーションと2回目のシミュレーションで、信号が一致するか否かを確認できます。

リグレッションテストに応用

こんな事が出来ると便利そうです。

ステップ1:「この動きが正しい!」という状態を保存しておく
ステップ2:モデル変更後に、動きが変わっていないか確認する

実は、シミュレーションデータインスペクターを使えば、こういった事もできます。とても簡単です。

正しい状態を保存しておく

<目的>

これが正しい、という状態を保存しておく

<手順>

シミュレーションデータインスペクターを起動し、シミュレーションを実行する

「保存」ボタンをクリックし、MATファイル名を指定して「保存」ボタンをクリックする

<結果>

信号の内容が保存された、MATファイルが生成されます。

モデル変更後に、動きが変わっていないか確認する

<目標>

シミュレーション結果に変化がないか確認する

<手順>

シミュレーションデータインスペクターを起動し、「開く」ボタンをクリックする。そして、以前保存しておいたMATファイルを指定する。

「シミュレーション出力を記録」をクリックしてから、シミュレーションを実行する

<結果>

あらかじめMATファイルに保存しておいた内容と、新たにシミュレーション実行した内容とを比較する事ができます

まとめ

シミュレーションデータインスペクターが、シミュレーション間の信号を比較できるようになった結果、いろいろな事が出来るようになりました。

モデルの入口・出口だけでなく、任意の部分の信号を見る事が出来ます。そのため、大きなモデルでも切り分けができるようになるため、「モデルの、どの部分の振る舞いが変わってしまったのか?」が、とても簡単に分かります。

ソルバ設定を変えたり、ワークスペース変数を変えたりして実行した場合、シミュレーションの実行結果が変わってしまいます。かといってモデル本体が変わったわけではないので、Diffを取っても原因は分かりません。そういった場合には、このツールを使って信号レベルで検証するしか手がなく、とても重宝しそうです。