Main Content

シミュレーション モード

インタープリター型実行とコード生成

Simulink® モデルで MATLAB System ブロックを使用して、インタープリター型実行またはコード生成によるシミュレーションを実行できます。有効な System object™ クラス名を使用して MATLAB System ブロックを実装すると、[シミュレーション実行方法] パラメーターが使用可能になります。このパラメーターは、タブが 1 つしかない場合には MATLAB System ブロック ダイアログの下部に表示され、タブが複数ある場合には最初のタブの下部に表示されます。[シミュレーション実行方法] パラメーターを使用してブロックのシミュレーション方法を制御します。以下の表では、目的に合った値を選択する方法を説明します。

  • インタープリター型実行では、ブロックは MATLAB® 実行エンジンを使用してシミュレートされます。

    メモ

    インタープリター型実行では、[固定小数点の正味勾配計算に除算を使用] パラメーターを [コンフィギュレーション パラメーター] ダイアログ ボックスで [オン] または [整数の逆数の場合にのみ除算を使用] に設定した場合、最適化されていない数値結果が得られることがあります。このような望ましくない数値結果が得られるのは、MATLAB コードがこのパラメーターをサポートしていないためです。

  • コード生成では、ブロックはコード生成を使用してシミュレートされます (コード生成をサポートする MATLAB コードのサブセットを使用)。

アクション選択長所短所

モデルを最初に実行するときに、コード生成をサポートする MATLAB 関数のサブセットのみを使用して、MATLAB System のシミュレーションとコード生成を行います。このオプションを選択すると、生成されたコードがシミュレーションで実行されます。

コード生成 (既定値)

パフォーマンスが向上する可能性があります。

System object が、コード生成をサポートする MATLAB 関数のサブセットに制限されます。シミュレーションの起動時間が長くなる可能性があります。

サポートされるすべての MATLAB 関数を使用してモデルをシミュレートします。このオプションを使用するとシミュレーションのパフォーマンスが遅くなる場合があります。

インタープリター型実行

System object には、サポートされている任意の MATLAB 関数を含めることができます。起動時間が短縮します。

パフォーマンスが遅くなる可能性があります。System object の MATLAB 関数がコード生成をサポートしていない場合は、System object に伝播メソッドが含まれていなければなりません。

パフォーマンスを向上させるには、System object で伝播メソッドを使用することを検討してください。詳細については、伝播メソッドの追加と実装を参照してください。

メモ

Simulink モデルがノーマル モードでシミュレーションするように設定されている場合に、コード生成で MATLAB System ブロックを使用すると、個々の MATLAB System ブロックはコード生成で高速化を活用できます。Simulink モデルがアクセラレータ モードまたはその他のターゲット モードでシミュレーションするように設定されている場合、MATLAB System ブロックの [シミュレーション実行方法] パラメーターは効果がありません。例外が 1 つだけあります。モデルがアクセラレータ モードでシミュレーションするように設定されている場合に、インタープリター型実行モードの MATLAB System ブロックを使用すると、このブロックはインタープリター型実行モードで実行されます。

コード生成を使用したシミュレーション

コード生成シミュレーション モードで MATLAB System ブロックをシミュレートするには、互換性のあるコンパイラがご使用のシステムにインストールされている必要があります。サポートされるコンパイラのリストを確認するには、Supported and Compatible Compilers を開き、ご利用のオペレーティング システムに対応するタブをクリックし、[Simulink 製品ファミリ] テーブルの [For Model Referencing, Accelerator mode, Rapid Accelerator mode, and MATLAB Function blocks] 列を参照してください。

1 つ以上のシミュレーション ターゲット (この場合は System object ブロック) のシミュレーションとコード生成を実行している間、モデルの Simulink エディター ウィンドウの左下にステータス メッセージが表示されます。1 つのモデルが同一の MATLAB System ブロックの複数のコピーを保持できます。ブロックが以下に該当する場合、それらのブロックは同一と見なされます。

  • 同じ System object を使用している。

  • 信号、データ型および実数/複素数が同一の入力と調整可能パラメーターを保持している。

  • 同じ値をもつ調整不可能パラメーターを保持している。

モデルが同じブロックの複数のコピーを保持している場合、ソフトウェアは各ブロックのコードを生成しません。これらのブロックのいずれかについて最初に生成したコードを再利用します。これはステータス メッセージに反映され、これらのブロックのそれぞれについてステータス メッセージが表示されることはありません。

参考

関連する例

詳細