このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
Stateflow チャートでの外部 MATLAB 関数の呼び出し
Simulink® モデルの Stateflow® チャートには、ステート アクションと遷移アクションの構文を定義するアクション言語プロパティがあります。チャート キャンバスの左下隅にあるアイコンが、チャートのアクション言語を示します。
アクション言語は MATLAB®。
アクション言語は C。
C をアクション言語として使用するチャートでは、ml
名前空間演算子または関数 ml
を使用することにより、組み込みの MATLAB 関数を呼び出して MATLAB ワークスペース変数にアクセスできます。詳細については、C チャート内の MATLAB 関数およびワークスペース データへのアクセスを参照してください。
MATLAB をアクション言語として使用するチャートでは、コード生成でサポートされる MATLAB 関数を直接呼び出すことができます。コード生成でサポートされていない外部関数を呼び出すには、関数 coder.extrinsic
(MATLAB Coder) を使用しなければなりません。coder.extrinisic(
によって関数を宣言すると、シミュレーション時に Stateflow でその関数への呼び出しが作成されます。Stateflow チャートでは、function_name
)coder.extrinsic
は 1 回だけ宣言します。coder.extrinsic
で予約キーワードを宣言することはできません。詳細については、Stateflow オブジェクトの命名のガイドラインを参照してください。
Atomic サブチャートを含むチャートの場合は、Atomic サブチャート内で coder.extrinsic
を個別に使用して、コード生成でサポートされていない関数を宣言しなければなりません。
関数 coder.extrinsic
の使用
外部関数
の呼び出しを有効にするため、このモデルは heaviside
(Symbolic Math Toolbox)coder.extrinsic
を使用します。
このチャートには A と B の 2 つのパラレル ステートと、1 つのグラフィカル関数ブロック foo
があります。ステート A は coder.extrinsic
を使用して、コード生成でサポートされていない関数 heaviside
を宣言します。ステート B とグラフィカル関数ブロックでも、coder.extrinsic
を使わずに heaviside
を使用します。
ステート A への入力は正弦波 u1
、ステート B への入力は余弦波 u2
です。グラフィカル関数 out
は、入力 in
に対して関数 heaviside
の値を出力します。
チャートで coder.extrinsic
を使用して heaviside
を宣言する必要があるのは 1 回だけです。その後は、チャート内の任意の位置で、coder.extrinsic
を使わずに関数 heaviside
を使用できます。コードを生成すると、coder.extrinsic
を使用して宣言した関数に外部関数への呼び出しが含まれますが、この関数は生成されたコードに表示されません。
このチャートの結果を可視化するには、スコープを開きます。
参考
heaviside
(Symbolic Math Toolbox) | coder.extrinsic
(MATLAB Coder)
関連するトピック
- C チャート内の MATLAB 関数およびワークスペース データへのアクセス
- グローバル データのためのコード生成 (MATLAB Coder)
- C/C++ コードの生成でサポートされている関数およびオブジェクト (Simulink)