Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

coder.ignoreSize

定数サイズの式を対象とした関数の特殊化がコード ジェネレーターにより作成されるのを回避する

説明

coder.ignoreSize(expression) は、コード ジェネレーターが式の定数サイズを使用して関数の特殊化を作成してはならないことを宣言します。

複数の入力サイズに対して生成された重複関数

MATLAB® コードが関数を複数回呼び出し、異なるサイズの入力を渡す場合、コード ジェネレーターは各サイズの関数の特殊化を作成できます。この問題を回避するには、coder.ignoreSize を関数入力に使用します。たとえば、次のコードは coder.ignoreSize を使用して、関数 indexOf の複数のコピーが作成されることを回避します。

function [out1, out2] = test1(in)
  a = 1:10;
  b = 2:40;
  % Without coder.ignoreSize duplicate functions are generated
  out1 = indexOf(coder.ignoreSize(a), in);
  out2 = indexOf(coder.ignoreSize(b), in);
end

function index = indexOf(array, value)
  coder.inline('never');
  for i = 1:numel(array)
      if array(i) == value
          index = i;
          return
      end
  end
  index = -1;
  return
end

コードを生成するには、次を入力します。

codegen test1 -config:lib -report -args {1}

入力引数

すべて折りたたむ

例: foo(coder.ignoreSize(1:10))

詳細

すべて折りたたむ

関数の特殊化

入力タイプ、サイズ、実数/複素数または値が関数の特定の呼び出し用にカスタマイズされる関数のバージョン。

関数の特殊化により効率的な C コードが生成されますが、コードが重複します。コード生成レポートにはコード ジェネレーターが作成するすべての MATLAB 関数の特殊化が表示されます。ただし、特殊化は後で変換または最適化されるため、生成した C/C++ コードには表示されない場合があります。

ヒント

  • 式を変数に代入し、coder.varsize を使用してその変数を可変サイズとして宣言する場合、この宣言は式に coder.ignoreSize を使用するのと同一の効果をもちます。

R2019b で導入