Main Content

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 次元データとして出力していました。R2021b 以降では、MATLAB Function ブロックは既定の設定でその次元を保持します。従来の動作を維持するには、プロパティ インスペクターまたはモデル エクスプローラーで [出力列ベクトルを 1 次元データとして解釈] プロパティをオフにします。このプロパティをオフにすると、[サイズ] で単一の整数を使用して出力列ベクトルのサイズを定義できます。出力列ベクトルを 1 次元データとして解釈を参照してください。

また、[サイズ] プロパティを式によって設定することもできます。式には以下を含めることができます。

  • 数値定数

  • 算術演算子 -- 使用できるのは、+-*/だけです。

  • [スコープ] プロパティが Parameter に設定された変数の名前

  • MATLAB 関数の minmaxsize の呼び出し

これらの式は、[row column] 形式で入力された 1 つの正の整数または 2 つの正の整数を出力しなければなりません。そうでない場合、指定されたサイズはモデルのコンパイル時にエラーを発生します。たとえば、[スコープ] プロパティがすべて [パラメーター] に設定された変数 kx、および y をもつ MATLAB Function ブロックについて考えてみます。ここで、k は正の整数、x および y は行列です。ブロックに対して新しい変数を作成する場合、以下のいずれかの式を使用して [サイズ] プロパティを定義できます。

k+1
size(x)
min(size(y))

シミュレーションおよびサイズの一致

モデルのビルドを実行した後、モデル エクスプローラーの [コンパイルされたサイズ] 列にシミュレーションで使用された実際のサイズが表示されます。[サイズ] プロパティの値が -1 でなく、実際のサイズと一致しない場合、モデルのコンパイル中に不一致エラーが発生します。

参考

関連するトピック