メインコンテンツ

関数定義

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

固定小数点の高速化を目的とする MATLAB® 関数を作成する場合、特別な考慮事項があります。これには、varargin、varargout、再帰関数、無名関数、入れ子関数を使用する場合の特定の制約が含まれます。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
coder.noImplicitExpansionInFunction生成コードの指定した関数内で暗黙的な拡張を無効化
coder.read実行時に生成コードでデータ ファイルを読み取り (R2023a 以降)
coder.write実行時に生成コードで読み取るデータ ファイルを作成 (R2023a 以降)

可変サイズの基礎

Generate Code for Variable-Size Arrays (MATLAB Coder)

Learn how the code generator defines and handles fixed- and variable-size data.

end+1 インデックスによって拡張される配列のコード生成 (MATLAB Coder)

(end+1) または {end+1} を使用して配列を拡張する場合のコード生成に関する考慮事項。

Specify Upper Bounds for Variable-Size Arrays in Generated Code (MATLAB Coder)

To avoid dynamic memory allocation, specify upper bounds for variable-size arrays.

コード生成時の可変サイズのサポートに関する MATLAB との非互換性 (MATLAB Coder)

可変サイズ データの結果として、生成されたコードの動作が MATLAB とどのように異なるかを理解する。

Generate Code for a MATLAB Function That Expands a Vector in a Loop (MATLAB Coder)

Generate C and C++ code for a function that uses variable-size data with and without dynamically allocated memory.

外部関数

生成コードでの MATLAB エンジンを使用した関数呼び出しの実行 (MATLAB Coder)

関数がコード生成でサポートされない場合は、その関数を "外部" 関数として宣言して MATLAB で実行します。

mxArrays の利用 (MATLAB Coder)

Use Extrinsic Functions to Calibrate Data for Standalone Code Generation (MATLAB Coder)

Use MATLAB to execute function calls in the generated code.

動的メモリ割り当て

Control Dynamic Memory Allocation in Generated Code (MATLAB Coder)

Balance memory usage and performance by controlling dynamic memory allocation for fixed- and variable-size arrays.

暗黙的な拡張を有効にしたコードの生成 (MATLAB Coder)

暗黙的な拡張を達成するためにコード ジェネレーターで生成コードに変更が加えられます。

生成されたコード内の配列の表現 (MATLAB Coder)

生成されたコード内で配列がどのように表現されるかを理解する。

生成される関数インターフェイスでの動的に割り当てられる C 配列の使用 (MATLAB Coder)

生成される C 関数インターフェイスから動的に割り当てられる配列を理解して使用する。

生成された関数インターフェイスでの動的に割り当てられた C++ 配列の使用 (MATLAB Coder)

生成された C++ 関数インターフェイスから動的に割り当てられた配列を理解して使用する。

トラブルシューティング

エラーの解決: 配列のサイズに互換性がない (MATLAB Coder)

コード生成中に発生したサイズ非互換性エラーをトラブルシューティングする。

エラーの解決: 左辺は固定サイズだが右辺は可変サイズ (MATLAB Coder)

可変サイズの配列を固定サイズの配列に代入すると発生するエラーをトラブルシューティングする。

生成されたコード内での重複関数の回避 (MATLAB Coder)

生成されたコード内での重複関数の発生を軽減。

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

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

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

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

エラーの解決: string でサポートされない coder.varsize (MATLAB Coder)

string 変数で coder.varsize を使用すると発生するコード生成エラーをトラブルシューティングする。

Resolve Error: coder.varsize Not Supported for Class Properties (MATLAB Coder)

Troubleshoot code generation error when using coder.varsize with properties of a MATLAB class.

Resolve Error: Unable to Produce Column Vector from Scalar (MATLAB Coder)

Troubleshoot error when an input argument that is a variable-length column vector at code generation time is a scalar at run time.

Resolve Error: Incorrect Size for Expression (MATLAB Coder)

Troubleshoot MEX function error when the size of an array at run time is incompatible with the size of the array in the generated code.