このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。
Stateflow®チャートにおけるMATLAB®関数は,アルゴリズム記述用のグラフィカル要素です。アルゴリズムは組み込みのMATLAB関数を呼び出して簡単に実装できます。代表的な使用例は,以下のとおりです。
行列指向型の計算
データの解析と視覚化
このタイプの関数は,グラフィカルなStateflow構造よりもMATLABを使ったほうが簡単に記述できるアルゴリズムのコード作成に便利です。MATLAB関数では,組み込みアプリケーションのための効率性の高い量産品質のCコードを生成するために,最適化も行われます。
MATLAB関数は,チャート,ステート,またはサブチャート内の任意の場所に配置できます。関数の場所により,その関数を呼び出すことのできるステートと遷移の集合が判定されます。
ある特定のステート,またはサブチャートとそのサブステートの内部で関数を呼び出す場合は,MATLAB関数をそのステートまたはサブチャートに配置します。この関数は,そのステートまたはサブチャートの親や先祖に含まれる同じ名前の関数よりも優先されます。
チャートの任意の部分から関数を呼び出す場合は,MATLAB関数をチャートレベルに配置します。
関数をモデル内の任意のチャートから呼び出す場合は,MATLAB関数をチャートレベルに配置し,チャートレベルの関数のエクスポートを有効にします。詳細については,再利用のためのStateflow関数のエクスポートを参照してください。
メモ
MATLAB関数は,Stateflow階層で自分より上にあるチャートとステートデータにアクセスできます。
たとえば,以下のMATLAB関数の名前はstdevstats
です。引数瓦尔斯
を取り,出力値stdevout
を返します。
瓦尔斯
内の値の標準偏差を計算するために,この関数は以下のコードを使用します。
函数stdevout = stdevstats (val)% # codegen%计算val的标准偏差len =长度(val);stdevout =√总和(vals-avg (vals, len)) ^ 2)) / len);函数均值= sum(array,size) /size;
オブジェクトパレットで,MATLAB関数のアイコンをクリックします。ポインターをチャート内の新しいMATLAB関数の位置に移動します。
関数のシグネチャラベルを入力します。
関数シグネチャラベルは,関数の名前と,その引数と戻り値の正式名称を指定します。シグネチャラベルの構文は以下のとおりです。
[return_val1, return_val2,…] = function_name (__arg1,最长,…)
引数と戻り値の両方に同じ変数名を使用できます。たとえば,以下のシグネチャ ラベルをもつ関数では、変数日元
およびy2
を,入力と出力の両方として使用します。
(y1、y2、y3) = f (y1, u, y2)
日元
およびy2
は参照によって(ポインターとして)渡され,u
は値によって渡されます。入力を参照によって渡すと,生成されたコードが中間データをコピーする回数が減少するため,コードがより最適化されます。
メモ
チャートシンボルの名前を関数の引数や戻り値として使用しないでください。たとえば,x
またはy
がチャートデータの場合,シグネチャy = f (x)
を使用して関数を定義するとランタイムエラーが発生します。
関数をプログラミングするには,関数ボックスをダブルクリックしてMATLABエディターを開きます。
MATLABエディターで,関数を実装するMATLABコードを入力します。詳細については,チャート内でのMATLAB関数のプログラミングを参照してください。
モデルエクスプローラーで,チャートオブジェクトを展開してMATLAB関数を選択します。関数に属するデータ項目として,関数シグネチャの引数と戻り値が表示されます。引数のスコープは输入
です。戻り値のスコープは输出
です。
データプロパティの設定の説明に従って,各引数および戻り値の[データ]プロパティダイアログボックスで,データプロパティを指定します。
関数に必要な追加のデータ項目を作成します。詳細については,モデルエクスプローラーによるデータの追加を参照してください。
関数からは,専用のデータや,親ステートまたはチャートに属しているデータにアクセスできます。関数内のデータ項目には,以下のいずれかのスコープを設定できます。
常数
——すべての関数呼び出しで,その初期値を保持する定数データ。
参数
——すべての関数呼び出しで,その初期値を保持するパラメーターデータ。
MATLAB関数では,ローカルデータまたは一時的な関数データを明示的に作成する必要はありません。未定義の変数を使用すると,Stateflowは関数の残りの部分で使用可能な一時変数を作成します。関数呼び出しの間で維持される値を格納するには,キーワード持续的
を使用します。
MATLAB関数は,任意のステートまたは遷移のアクションから呼び出すことができます。MATLAB関数は,他の関数から呼び出すこともできます。MATLAB関数をエクスポートする場合は、モデル内の任意のチャートから呼び出すことができます。
MATLAB関数を呼び出すには,関数シグネチャを使用し,関数シグネチャの各仮引数に実際の引数の値を設定します。実際の引数と仮引数のデータ型が異なる場合,関数は実際の引数を仮引数のデータ型にキャスト(変換)します。
プロパティのダイアログボックスから,MATLAB関数の一般的なプロパティを設定できます。関数プロパティのダイアログ ボックスを開くには、MATLAB 関数のボックスを右クリックし、コンテキスト メニューから[プロパティ]を選択します。
関数名。関数名のリンクをクリックして、MATLAB エディターで関数を開きます。
生成コード内の関数のインライン化を制御します。
自動
——内部計算に基づいて関数をインライン化するかどうかを判定します。
インライン化
——他のチャートにエクスポートせず,反復処理の一部に含まれていない場合,関数はインライン化されます(反復処理が発生するのは,関数が自分自身を直接的に呼び出している場合や,他の関数呼び出しを介して間接的に呼び出している場合です)。
関数
——関数をインライン化しません。
関数のシグネチャラベル。関数シグネチャ ラベルは、関数の名前と、その引数と戻り値の正式名称を指定します。
生成コードで整数オーバーフローが飽和するかどうかを指定します。詳細については,チャートデータの整数オーバーフローの処理を参照してください。
fimath
MATLAB関数のfimath
プロパティを定義します。指定されるfimath
プロパティは,MATLAB関数で作成されるfi
とfimath
のすべてのオブジェクトと関連しています。次のオプションのいずれかを選択します。
MATLABと同じ——関数は現在のグローバルfimath
と同じfimath
プロパティを使用します。エディットボックスが淡色表示され,現在のグローバルfimath
が読み取り専用で表示されます。グローバルfimath
とfimath
オブジェクトの詳細については,定点设计师™ドキュメンテーションを参照してください。
それ以外を指定——次のいずれかの方法により,独自のfimath
オブジェクトを指定します。
fimath
オブジェクトをエディットボックス内で作成する。
fimath
オブジェクトをMATLABまたはモデルワークスペース内で作成して,その変数名をエディットボックスに入力する。
関数の説明。階層内の関数について簡単な説明を入力できます。
関数のオンラインドキュメンテーションへのリンク。適切なオンライン形式(HTMLファイルやMATLABコマンドウィンドウのテキストなど)でドキュメンテーションを表示する,Web URLのアドレスまたはMATLABコマンドを入力できます。[ドキュメントリンク]ハイパーリンクをクリックすると,Stateflowにドキュメンテーションが表示されます。