メインコンテンツ

関数定義

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

固定小数点の高速化を目的とする 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 以降)

可変サイズの基礎

Generate Code for Variable-Size Arrays (MATLAB Coder)

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

end + 1 のインデックス付けを使用して配列と cell 配列を拡張するためのコード生成 (MATLAB Coder)

MATLAB コード内の配列と cell 配列を簡単な構文で拡張する。

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.

動的メモリ割り当て

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)

生成コードでの暗黙的な拡張は既定で有効になっています。

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

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

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

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

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

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

トラブルシューティング

エラーの解決: 配列のサイズに互換性がない (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.

実行時にスカラーとして初期化される可変サイズの列配列の拡張 (MATLAB Coder)

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.