Main Content

Stateflow データのサイズの指定

Simulink® モデルの Stateflow® チャートでは、次の方法でデータ オブジェクトのサイズを指定します。

  • データ プロパティの設定の説明に従い [サイズ] プロパティを設定する。詳細については、サイズを参照してください。

  • Stateflow API を使って Props.Array.Size プロパティを設定する。詳細については、Stateflow.Dataを参照してください。

次のいずれかの方法を使用してサイズを指定します。

  • サイズを Simulink 信号から、または Stateflow チャート内の定義から継承する。

  • 数値を入力する。

  • MATLAB® 式を入力する。

各サイズ指定方法のサポートはデータのスコープにより異なります。

データのスコープデータのサイズを指定する方法
サイズの継承数値の使用MATLAB 式の使用
ローカルMATLAB をアクション言語として使用するチャートにおいてのみありあり
定数なしありあり
パラメーターありありあり
入力ありありあり
出力ありありあり
データ ストア メモリありなしなし

データ サイズの継承

Stateflow データ オブジェクトがそのサイズを、対応する Simulink 信号か、チャート内の定義から継承するように設定するには、サイズを –1 に指定します。モデルをシミュレートまたはビルドした後、継承されたデータ サイズをモデル エクスプローラーの [CompiledSize] 列で確認できます。

メモ

チャートはデータ サイズを Simulink フレームベースの信号から継承することはできません。詳細については、サンプルベースおよびフレームベースの概念 (DSP System Toolbox)を参照してください。

数値を使用したデータ サイズの指定

数値を入力してデータ サイズを指定する場合、以下のガイドラインに従ってください。

  • スカラーを指定するには、1 を入力するか、フィールドを空白のままにする。

  • n 行 1 列の列ベクトルを指定するには、n を入力する。

  • 1 行 n 列の行ベクトルを指定するには、「[1 n]」を入力する。

  • nm 列の行列を指定するには、「[n m]」を入力する。ここで mn1 より大きい値です。

  • n 次元の配列を指定するには、「[d1 d2dn]」を入力する。ここで dii 番目の次元のサイズです。

C をアクション言語として使用するチャートの場合、1 次元の Stateflow ベクトルは、同じサイズの Simulink の行ベクトルまたは列ベクトルと互換性があります。たとえば、サイズ 3 の Stateflow 入力データは、サイズ [1 3] の Simulink 行ベクトルまたはサイズ [3 1] の列ベクトルと互換性があります。

式を使用したデータ サイズの指定

データ サイズを指定するには、数値を使用したデータ サイズの指定で説明されているサイズ指定のいずれかとして評価される MATLAB 式を入力できます。以下のガイドラインも適用されます。

  • 式には数値、定数、パラメーター、変数、算術演算、および MATLAB 関数の呼び出しの組み合わせを含めることができます。

  • 次元のサイズを指定する式は正の整数値として評価されなければなりません。

  • 式では、互換性のある値のみを組み合わせることができます。たとえば、整数は、同じ型の他の整数か、double のスカラーとのみ組み合わせることができます。

  • 式が列挙型の値を含んでいる場合は、MATLAB 命名規則と互換性を保つために型の接頭辞を含めなければなりません。たとえば、Colors.Red は有効ですが、Red は無効です。詳細については、列挙値の表記法を参照してください。

  • MATLAB 式を次の目的には使用できません。

    • 継承されるデータ サイズを指定する。-1 として評価される式は使用しないでください。

    • Simulink からフレームベースのデータを受け入れる Stateflow 入力データのサイズを指定する。詳細については、サンプルベースおよびフレームベースの概念 (DSP System Toolbox)を参照してください。

有効なデータ サイズ式の例

以下は、チャート内でデータ サイズを指定するために有効な MATLAB 式の例です。

  • K+3。ここで K はチャートレベルの Stateflow 定数またはパラメーターです。

  • N/2。ここで N は MATLAB ベース ワークスペース内の変数です。

  • [P Q]。ここで PQ は Simulink パラメーターです。C をアクション言語として使用するチャートでは、これらのシンボリック次元はモデル全体に伝播されます。Stateflow データのシンボリック次元の伝播を参照してください。

  • 2*Colors.Red。ここで RedColors 型の列挙値です。

  • size(u)。ここで u はチャート レベルの変数です。関数 size によって、1 つのデータ オブジェクトのサイズを別のデータ オブジェクトのサイズに基づいて指定できるようになります。このタイプの式は、さまざまなサイズのデータで再利用されるライブラリ チャートで役立ちます。その他の場合、関数 size を使用せずにデータ サイズを直接指定することで、チャートをさらに明確化できます。

  • floor((a*b)/c)。ここで a および cint16 型のスカラーで、bdouble 型のスカラーです。

  • [fi(2,1,16,2) fi(4,1,16,2)].この式は関数 fi (Fixed-Point Designer) を呼び出して [2 4] のデータ サイズを指定します。この関数は、語長が 16、小数部の長さが 2 の符号付き固定小数点数を返します。

名前の競合になりそうな変数を避ける

モデルに同じ名前の変数が複数含まれる場合、優先順位が最も高い変数を使ってサイズが指定されます。

優先順位変数
1マスク パラメーター
2モデル ワークスペース変数
3MATLAB ベース ワークスペース変数
4Stateflow データ

混乱を避けるため、モデルの複数のレベルで定義されている変数名を使ってデータ サイズを指定しないでください。

Stateflow データのシンボリック次元の伝播

モデル コンフィギュレーション パラメーター [シンボリック次元指定の許可] を選択すると、C をアクション言語として使用するチャートで、Stateflow データのシンボリック次元をモデル全体に伝播させることが可能です。Embedded Coder® を使用している場合、シンボリック次元が ERT ターゲット用の生成コードに含まれます。シンボリック次元のサイズを指定するには、Simulink パラメーターを次のストレージ クラスのいずれかで使用します。

  • 指定されたヘッダー ファイルを使用する [Define] または [ImportedDefine]

  • [CompilerFlag]

  • 指定されたヘッダー ファイル内でデータをマクロとして定義するユーザー定義のカスタム ストレージ クラス

詳細については、シンボリック次元指定の許可 (Simulink)Implement Symbolic Dimensions for Array Sizes in Generated Code (Embedded Coder)を参照してください。

MATLAB をアクション言語として使用する Stateflow チャートでは、シンボリック次元の伝播はサポートされません。Simulink パラメーターを使用してデータ サイズを指定するには、[シンボリック次元指定の許可] チェック ボックスをオフにします。

参考

(Fixed-Point Designer) |

関連するトピック