coder.nullcopy
生成されたコードでの初期化されていない変数の宣言
説明
coder.nullcopy
を使用すると、変数値をコピーせずに、初期化されていない変数を宣言することで、生成されたコードを最適化できます。coder.nullcopy
は、次の 2 つの特定の状況でのみ使用してください。
コード生成時に、次のいずれかのエラーが表示された場合:
コード生成では、すべての変数を使用前に完全に定義する必要があります。
コード生成では、すべての cell 配列要素を使用前に完全に定義する必要があります。
ただし、すべての実行パス上のすべての変数と cell 配列要素が完全に定義されており、他のトラブルシューティングの解決策を検討して却下した場合です。問題の解決: 変数は使用前に完全に定義する必要がある (MATLAB Coder)および問題の解決: cell 配列の要素は使用前に完全に定義する必要があるを参照してください。
生成されたコードに冗長な変数代入がある場合。つまり、変数に値が代入されてから、その変数が使用される前に別の値が代入されている場合です。
coder.nullcopy
は注意して使用してください。ほとんどの場合、MATLAB® コードに coder.nullcopy
関数を含めなくても、コード ジェネレーターは coder.nullcopy
に対応する最適化を自動的に実行します。coder.nullcopy
を使用して変数を宣言し、使用する前に変数に完全な代入を行わないと、生成されたコードの動作が予測不能になることがあります。
は、X
= coder.nullcopy(A
)A
の型、サイズおよび実数/複素数を X
にコピーしますが、要素の値はコピーしません。生成されたコードでは、coder.nullcopy
は初期化されていない変数を宣言し、メモリの初期化のオーバーヘッドを発生させることなく、X
のメモリを事前に割り当てます。MATLAB の実行では、coder.nullcopy
は入力値を返します。
ほとんどの場合、coder.nullcopy
は再帰的に適用されます。つまり、A
が集約型 (クラス、構造体、または cell 配列) の場合、coder.nullcopy
は A
のフィールド、プロパティ、または要素のメモリを事前に割り当てます。ただし、A
が 1 つ以上の可変サイズの配列を含む集約型である場合は、特別な考慮事項が適用されます。クラス、構造体、または cell 配列内での可変サイズの配列の宣言を参照してください。
X
を使用するか返す前に、そのすべての要素に値を代入しなければなりません。そうしないと、生成されたコードの動作が予測不能になる可能性があります。
例
入力引数
制限
coder.nullcopy
はスパース行列では使用できません。coder.nullcopy
は、オーバーロードされたかっこをサポートするクラス、またはtable
などのデータにアクセスするためにインデックス手法を必要とするクラスでは使用できません。
拡張機能
バージョン履歴
R2011a で導入