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]n行m列の行列を指定するには、「[」を入力する。ここでnm]mとnは1より大きい値です。n次元の配列を指定するには、「[」を入力する。ここでd1d2⋯dn]diはi番目の次元のサイズです。
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]。ここでPとQは Simulink パラメーターです。C をアクション言語として使用するチャートでは、これらのシンボリック次元はモデル全体に伝播されます。Stateflow データのシンボリック次元の伝播を参照してください。2*Colors.Red。ここでRedはColors型の列挙値です。size(u)。ここでuはチャート レベルの変数です。関数sizeによって、1 つのデータ オブジェクトのサイズを別のデータ オブジェクトのサイズに基づいて指定できるようになります。このタイプの式は、さまざまなサイズのデータで再利用されるライブラリ チャートで役立ちます。その他の場合、関数sizeを使用せずにデータ サイズを直接指定することで、チャートをさらに明確化できます。floor((a*b)/c)。ここでaおよびcはint16型のスカラーで、bはdouble型のスカラーです。[fi(2,1,16,2) fi(4,1,16,2)].この式は関数fi(Fixed-Point Designer) を呼び出して[2 4]のデータ サイズを指定します。この関数は、語長が 16、小数部の長さが 2 の符号付き固定小数点数を返します。
名前の競合になりそうな変数を避ける
モデルに同じ名前の変数が複数含まれる場合、優先順位が最も高い変数を使ってサイズが指定されます。
| 優先順位 | 変数 |
|---|---|
| 1 | マスク パラメーター |
| 2 | モデル ワークスペース変数 |
| 3 | MATLAB ベース ワークスペース変数 |
| 4 | Stateflow データ |
混乱を避けるため、モデルの複数のレベルで定義されている変数名を使ってデータ サイズを指定しないでください。
Stateflow データのシンボリック次元の伝播
モデル コンフィギュレーション パラメーター [シンボリック次元指定の許可] を選択すると、C をアクション言語として使用するチャートで、Stateflow データのシンボリック次元をモデル全体に伝播させることが可能です。Embedded Coder® を使用している場合、シンボリック次元が ERT ターゲット用の生成コードに含まれます。シンボリック次元のサイズを指定するには、Simulink パラメーターを次のストレージ クラスのいずれかで使用します。
指定されたヘッダー ファイルを使用する
[Define]または[ImportedDefine][CompilerFlag]指定されたヘッダー ファイル内でデータをマクロとして定義するユーザー定義のカスタム ストレージ クラス
詳細については、シンボリック次元指定の許可 (Simulink)と生成されたコードでの配列サイズのシンボリック次元の実装 (Embedded Coder)を参照してください。
MATLAB をアクション言語として使用する Stateflow チャートでは、シンボリック次元の伝播はサポートされません。Simulink パラメーターを使用してデータ サイズを指定するには、[シンボリック次元指定の許可] チェック ボックスをオフにします。
参考
fi (Fixed-Point Designer) | size