cell 配列のコード生成
cell 配列を含む MATLAB® コードからコードを生成すると、コード ジェネレーターは cell 配列を "同種" または "異種混合" として分類します。この分類により、生成されたコードにおける cell 配列の表現方法が決定されます。また、コードを生成する MATLAB コード内で cell 配列を使用する方法についても決定されます。
コード生成用に cell 配列を MATLAB コードで使用するときは、特定の制限に従わなければなりません。コード生成における cell 配列の制限事項を参照してください。
同種 cell 配列と異種混合 cell 配列
同種 cell 配列には以下の特性があります。
cell 配列は生成されたコード内で配列として表されます。
すべての要素のプロパティは同じになります。cell 配列に関連付けられている型は、個別の要素のプロパティではなく、すべての要素のプロパティを指定します。
cell 配列は可変サイズにすることができます。
実行時に値が決定するインデックスを使用して cell 配列にインデックスを付けることができます。
異種混合 cell 配列には以下の特性があります。
cell 配列は生成されたコードで構造体として表されます。各要素は構造体のフィールドとして表されます。
要素は異なるプロパティをもつことができます。cell 配列に関連付けられている型は、各要素のプロパティを個々に指定します。
cell 配列を可変サイズにすることはできません。
定数のインデックスまたは定数境界をもつ
for
ループを使用して cell 配列にインデックスを付けなければなりません。
コード ジェネレーターはヒューリスティックな方法を使用して cell 配列が同種か異種混合かの分類を判別します。要素のプロパティ (クラス、サイズ、実数/複素数) や、プログラムにおける cell 配列の使用方法などのその他の要因が考慮されます。cell 配列の使用方法に応じて、コード ジェネレーターは cell 配列をあるケースでは同種、別のケースでは異種混合として分類することができます。たとえば、cell 配列 {1 [2 3]}
について考えます。コード ジェネレーターはこの cell 配列を 1 行 2 列の異種混合 cell 配列として分類できます。最初の要素は double のスカラーです。2 番目の要素は 1 行 2 列の double の配列です。ただし、実行時に値が決定されるインデックスで cell 配列にインデックスを付ける場合、コード ジェネレーターはそれを同種 cell 配列として分類します。要素は上限が 2 の double の可変サイズの配列です。
cell 配列を同種にするか異種混合にするかの制御
特定の特性をもつ cell 配列では、同種または異種混合としての分類を制御することはできません。
要素に異なるクラスがある場合、cell 配列は異種混合になります。
cell 配列が可変サイズの場合、同種になります。
実行時に値が決定されるインデックスで cell 配列にインデックスを付ける場合、cell 配列は同種になります。
その他の cell 配列では、同種または異種混合としての分類を制御できます。
cell 配列要素が同じクラスである場合、
coder.varsize
を使用して cell 配列を強制的に同種にすることができます。cell 配列を可変サイズにするかの制御を参照してください。
レポート内の cell 配列
cell 配列が同種か異種混合かを確認するには、MATLAB Function レポートの変数を表示します。
同種 cell 配列の場合、レポートにはすべての要素のプロパティを指定する 1 つのエントリがあります。表記法 {:}
は、cell 配列のすべての要素が同じプロパティをもつことを示しています。
異種混合 cell 配列の場合、レポートには要素ごとに 1 つのエントリがあります。たとえば、2 つの要素をもつ異種混合 cell 配列 c
では、c{1}
のエントリに最初の要素のプロパティが示されます。c{2}
のエントリに 2 番目の要素のプロパティが示されます。
参考
coder.varsize
| coder.cstructname