関数定義
R2026bMATLAB Function ブロックでの使用を目的とする MATLAB® 関数を作成する場合、特別な考慮事項があります。これには、varargin、varargout、再帰関数、無名関数、入れ子関数を使用する場合の特定の制約が含まれます。MATLAB の再帰関数のコードを生成するために、コード ジェネレーターはコンパイル時の再帰または実行時の再帰のいずれかを使用します。効率的な C/C++ コードを生成するために、コード ジェネレーターは、関数の特殊化と呼ばれる複数バージョンの関数を作成する場合があります。場合によっては、coder.ignoreSize と coder.ignoreConst を使用して、コード ジェネレーターで関数の特殊化が作成されないようにすることができます。MATLAB コードで特定の関数に対するコード生成を回避し、代わりに MATLAB エンジンを使用して呼び出しを実行できます。これを行うには、coder.extrinsic 構成要素を使用します。
ブロック
| MATLAB Function | MATLAB コードを Simulink モデルに含める | |
| MATLAB System | System object をモデルに含める |
関数
coder.extrinsic | 外部として関数を宣言し MATLAB で実行する |
coder.ignoreSize | 定数サイズの式を対象とした関数の特殊化がコード ジェネレーターにより作成されるのを回避する |
coder.ignoreConst | 関数の特殊化の式における定数値の使用の防止 |
coder.mustBeConst | 値がコンパイル時の定数であることの検証 (R2023b 以降) |
coder.unroll | 各ループ反復でループ本体のコピーを作成することで、for ループを展開 |
coder.sameSizeBinaryOp | Apply element-wise binary operations without implicit expansion |
coder.noImplicitExpansionInFunction | 生成コードの指定した関数内で暗黙的な拡張を無効化 |
coder.read | 実行時に生成コードでデータ ファイルを読み取り (R2023a 以降) |
coder.write | 実行時に生成コードで読み取るデータ ファイルを作成 (R2023a 以降) |
トピック
- 暗黙的な拡張を有効にしたコードの生成 (MATLAB Coder)
暗黙的な拡張を達成するためにコード ジェネレーターで生成コードに変更が加えられます。
- 生成コードでの暗黙的な拡張の最適化 (MATLAB Coder)
生成コードでの暗黙的な拡張は既定で有効になっています。
- 入力引数と出力引数を検証する arguments ブロックのコード生成 (MATLAB Coder)
関数の入力値と出力値のクラス、サイズ、および他の特性を制約する MATLAB コードのコードを生成する。
- 再帰関数のコード生成 (MATLAB Coder)
コード生成用に MATLAB コードで再帰関数を使用します。
- Code Generation for Nested and Anonymous MATLAB Functions (MATLAB Coder)
Restrictions apply when you use nested or anonymous functions in MATLAB code intended for code generation.
- 生成コードでの MATLAB エンジンを使用した関数呼び出しの実行 (MATLAB Coder)
関数がコード生成でサポートされない場合は、その関数を "外部" 関数として宣言して MATLAB で実行します。
- mxArrays の利用 (MATLAB Coder)
トラブルシューティング
for ループ内の varargin または varargout のインデックスが一定でない (MATLAB Coder)
コード ジェネレーターが varargin または varargout のインデックスの値を特定できないときに、ループ展開を強制的に実行します。
生成されたコード内での重複関数の回避 (MATLAB Coder)
生成されたコード内での重複関数の発生を軽減。
出力変数は実行時再帰の呼び出し前に割り当てなければならない (MATLAB Coder)
実行時再帰の出力変数の代入のトラブルシューティング。
コンパイル時の再帰限界値に達する (MATLAB Coder)
コンパイル時の再帰限界値エラーをトラブルシューティングします。
エラーの解決: 配列のサイズに互換性がない (MATLAB Coder)
コード生成中に発生したサイズ非互換性エラーをトラブルシューティングする。