MATLAB Function ブロック変数のサイズの指定
[シンボル] ペインとプロパティ インスペクター、またはモデル エクスプローラーを使用して、MATLAB Function ブロックの変数のサイズを指定できます。MATLAB Function ブロックでは、スカラー、ベクトル、または行列を使用できます。変数のプロパティの作成、削除、設定の詳細については、MATLAB Function ブロックの変数の作成と定義と変数のデータ型の定義と変更を参照してください。変数がサイズを継承するように設定することも、サイズを手動で指定することもできます。
Simulink からのサイズの継承
既定のサイズは -1
です。これは変数が以下の [スコープ] プロパティの値に基づいてそのサイズを継承することを示します。
スコープ | 説明 |
---|---|
入力 | 関連付けられている入力端子に接続されている Simulink® 信号からサイズを継承します。 |
出力 | 関連付けられている出力端子に接続されている Simulink 信号からサイズを継承します。 |
パラメーター | 関連付けられている Simulink または MATLAB® パラメーターからサイズを継承します。MATLAB Function ブロック パラメーター変数の設定を参照してください。 |
[スコープ] プロパティが [データ ストア メモリ]
に設定されている変数は、常にサイズを継承します。
可変サイズのカスタマイズ
変数のサイズはスカラー、ベクトルまたは行列として手動で設定することもできます。サイズをスカラーとして指定するには、[サイズ] を 1
に設定するか、パラメーターをオフにします。サイズをベクトルまたは行列として指定するには、正の整数の行ベクトルを [row column]
の形式で入力します。たとえば、サイズが 6 の列ベクトルを定義するには、[サイズ] プロパティを [6 1]
に設定します。サイズが 5 の行ベクトルを定義するには、[サイズ] プロパティを [1 5]
に設定します。データ サイズが 3 行 3 列の行列を定義するには、[サイズ] プロパティを [3 3]
に設定します。
R2021b より前: MATLAB Function ブロックは列ベクトルを 1 次元データとして出力します。
既定では、MATLAB Function ブロックはその次元を保持します。従来の動作を維持するには、プロパティ インスペクターまたはモデル エクスプローラーで [出力列ベクトルを 1 次元データとして解釈] プロパティをオフにします。[サイズ] で単一の整数を使用して出力列ベクトルのサイズを定義できます。出力列ベクトルを 1 次元データとして解釈を参照してください。 (R2021b 以降)
必要な次元サイズの上限がわからない場合は、Inf
を使用して非有界の次元を指定します。 (R2023b 以降)たとえば、列の上限がわからないが、行の最大サイズが 2 行の場合、[サイズ] を [2 Inf]
に設定します。非有界の次元を指定するには、以下のようにします。
変数は可変サイズでなければなりません。可変サイズの MATLAB Function ブロック変数の宣言を参照してください。
[言語] コンフィギュレーション パラメーターを
[C++]
に設定します。[コンフィギュレーション パラメーター] ウィンドウを開き、[シミュレーション ターゲット] ペインで [言語] を[C++]
に設定します。
詳細については、Unbounded Variable-Size SignalsおよびUnbounded Variable-Size Signal Basic Operationsを参照してください。
また、[サイズ] プロパティを式によって設定することもできます。式には以下を含めることができます。
これらの式は、[row column]
形式の 1 つの正の整数または 2 つの正の整数を出力しなければなりません。そうでない場合、指定されたサイズはモデルのコンパイル時にエラーを発生します。たとえば、[スコープ] プロパティがすべて [パラメーター]
に設定された変数 k
、x
、および y
をもつ MATLAB Function ブロックについて考えてみます。ここで、k
は正の整数、x
および y
は行列です。ブロックに対して新しい変数を作成する場合、以下のいずれかの式を使用して [サイズ] プロパティを定義できます。
k+1 size(x) min(size(y))
カスタム サイズ プロパティの例
この例では、ベース ワークスペース変数の値に基づいてサイズを調整する入力変数をもつ MATLAB Function ブロックを使用します。
MATLAB 関数は、ベース ワークスペース変数 k
の値に基づいてサイズを変更する入力信号を受け取ります。k
は、開いたときにモデルが定義する配列です。Gain ブロックは入力信号に k
を乗算し、この信号を MATLAB Function ブロックに出力します。入力変数のサイズを入力信号のサイズに一致させるために、MATLAB Function ブロックはカスタム サイズを入力変数 u
に割り当てます。MATLAB Function ブロックを開いて変数およびコードを表示します。
function y = fcn(u)
y = 2*u;
変数プロパティを表示します。[関数] タブで、[データの編集] をクリックします。[シンボル] ペインで u
を選択すると、プロパティ インスペクターにプロパティが表示されます。入力のサイズを一致させるために、ブロックは [サイズ] プロパティが size(k)
に設定された u
を定義します。
k
のサイズを変更しても、u
のサイズは k
の新しいサイズに一致するようになります。
シミュレーションおよびサイズの一致
モデルのビルドを実行した後、モデル エクスプローラーの [コンパイルされたサイズ] 列にシミュレーションで使用された実際のサイズが表示されます。[サイズ] プロパティの値が -1
でなく、実際のサイズと一致しない場合、モデルのコンパイル中に不一致エラーが発生します。