Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

MATLAB Function ブロックの統合に関する考慮事項

MATLAB Function ブロックでの非直達の使用

Simulink® ブロックでは、"直達" はブロックの出力が入力端子信号の値によって直接制御されることを意味します。非直達では、出力信号の値は、シミュレーション中の少なくとも 1 つの関数の入力信号の値に依存しません。

既定の設定では、MATLAB Function ブロックで直達が有効になっています。直達を無効にすると、Simulink セマンティクスによって、出力が現在の状態にのみ依存することが確実になります。非直達を使用すると、フィードバック ループで MATLAB Function ブロックを使用し、代数ループを回避できます。

非直達を使用するには、次を行います。

  • 最上位関数の本体内で coder.inline を使用することで、MATLAB Function ブロックの関数のインライン化を有効にする。

  • [MATLAB Function ブロック エディター] の [端子とデータの管理] で、[エディター] タブの [データの編集] を選択し、[直達を許可] チェック ボックスをオフにする。詳細については、端子とデータの管理を参照してください。

ヒント

入力または更新された永続変数に依存する出力をプログラムしないでください。たとえば、非直達ブロックでこのコードは使用しません。

counter = counter + 1;  	% update state
output = counter;       	% compute output based on updated state
代わりに、以下のコードを使用します。
output = counter;       	% compute output based on current state
counter = counter + 1;  	% update state

参考

関連するトピック