Main Content

可変サイズ配列の上限の指定

次の場合に、配列の上限を指定します。

  • 動的メモリ割り当てが無効になります。

    動的メモリ割り当てが無効になっている場合、すべての配列に対して上限を指定しなければなりません。

  • コード ジェネレーターで配列に対して動的メモリ割り当てを使用しない場合。

    配列サイズ (バイト) が動的メモリ割り当てしきい値未満となる上限を指定します。

MATLAB Function ブロックの入出力に対する上限の指定

可変サイズの MATLAB Function ブロック変数の宣言を参照してください。

ローカル変数の上限の指定

静的な割り当てを使用する場合、コード ジェネレーターは高度な解析を使ってローカル データの上限を計算します。しかし、この解析が上限の検出に失敗したり、計算される上限が用途に不十分な精度である場合は、ローカル変数に対して明示的に上限を指定しなければなりません。

可変サイズ配列の次元を指定する変数の値の制約

可変サイズ配列の次元を指定する変数の値を制約するには、関数 assert と関係演算子を使用します。例:

function y = dim_need_bound(n) %#codegen
assert (n <= 5);
L= ones(n,n);
M = zeros(n,n);
M = [L; M];
y = M;

この assert ステートメントでは、入力 n を最大サイズの 5 に制限します。L は、各次元の上限を 5 とする可変サイズです。M は、最初の次元の上限を 10、2 番目の次元の上限を 5 とする可変サイズです。

1 つのローカル変数のすべてのインスタンスに対する上限の指定

関数内の 1 つのローカル変数のすべてのインスタンスに対して上限を指定するには、関数 coder.varsize を使用します。例:

function Y = example_bounds1(u) %#codegen
Y = [1 2 3 4 5];
coder.varsize('Y',[1 10]);
if (u > 0)
    Y = [Y Y+u];
else
    Y = [Y Y*u];
end

coder.varsize の 2 つ目の引数が、最初の引数で指定された変数の各インスタンスの上限を指定します。この例では、引数 [1 10] が、Y のすべてのインスタンスについて以下のことを示しています。

  • 最初の次元はサイズ 1 で固定。

  • 2 番目の次元は上限 10 まで拡大可能。

参考

関連するトピック