Main Content

関数定義

コード高速化のための定義と呼び出し

固定小数点の高速化を目的とする MATLAB® 関数を作成する場合、特別な考慮事項があります。これには、vararginvarargout、再帰関数、無名関数、入れ子関数を使用する場合の特定の制約が含まれます。MATLAB の再帰関数のコードを生成するために、コード ジェネレーターはコンパイル時の再帰または実行時の再帰のいずれかを使用します。効率的な C/C++ コードを生成するために、コード ジェネレーターは、関数の特殊化と呼ばれる複数バージョンの関数を作成する場合があります。場合によっては、coder.ignoreConst (MATLAB Coder) を使用して、コード ジェネレーターで関数の特殊化が作成されないようにすることができます。MEX 関数の生成時に、MATLAB コードで特定の関数に対するコード生成を回避し、代わりに MATLAB エンジンを使用して呼び出しを実行できます。これを行うには、coder.extrinsic コンストラクトを使用します。

関数

coder.extrinsic外部として関数を宣言し MATLAB で実行する
coder.ignoreConst関数の特殊化の式における定数値の使用の防止
coder.mustBeConst値がコンパイル時の定数であることの検証 (R2023b 以降)
coder.unroll各ループ反復でループ本体のコピーを作成することで、for ループを展開
coder.sameSizeBinaryOpApply element-wise binary operations without implicit expansion (R2021b 以降)
coder.noImplicitExpansionInFunction生成コードの指定した関数内で暗黙的な拡張を無効化 (R2021b 以降)
coder.read実行時に生成コードでデータ ファイルを読み取り (R2023a 以降)
coder.write実行時に生成コードで読み取るデータ ファイルを作成 (R2023a 以降)

トピック

トラブルシューティング

for ループ内の varargin または varargout のインデックスが一定でない

コード ジェネレーターが varargin または varargout のインデックスの値を特定できないときに、ループ展開を強制的に実行します。

出力変数は実行時再帰の呼び出し前に割り当てなければならない

実行時再帰の出力変数の代入のトラブルシューティング。

コンパイル時の再帰限界値に達する

コンパイル時の再帰限界値エラーをトラブルシューティングします。