cell 配列を可変サイズにするかの制御
コード ジェネレーターは可変サイズの cell 配列を同種として分類します。cell 配列の要素は同じクラスでなければなりません。生成されたコード内で cell 配列は配列として表されます。
cell 配列がエントリポイント関数の入力の場合に、これを可変サイズにするには、次を行います。
コマンド ラインで関数
coder.typeof
または関数coder.newtype
を使用して、可変サイズの cell 配列用の型を作成できます。たとえば、最初の次元が固定、2 番目の次元の上限が 10 である cell 配列用の型を作成する場合は、次のコードを使用します。t = coder.typeof({1 2 3}, [1 10], [0 1])
可変サイズの cell 配列入力の指定を参照してください。
MATLAB® Coder™ アプリで、[同種 cell 配列] を入力の型として選択します。可変サイズの次元の場合、制限なしまたは上限があるものとして指定します。
cell 配列がエントリポイント関数の入力でない場合に、これを可変サイズにするには、次を行います。
関数
cell
を使用して cell 配列を作成します。以下に例を示します。function z = mycell(n, j) %#codegen x = cell(1,n); for i = 1:n x{i} = i; end z = x{j}; end
コード生成では、
cell
を使用して可変サイズの cell 配列を作成する場合、特定の制限に従わなければなりません。cell を使用した可変サイズの cell 配列の定義を参照してください。cell 配列を拡張します。以下に例を示します。
function z = mycell(n) %#codegen c = {1 2 3}; for i = 1:n c{end + 1} = 1; end z = c{n}; end
coder.varsize
を使用して cell 配列を強制的に可変サイズにします。たとえば、以下のコードについて考えます。function y = mycellfun() %#codegen c = {1 2 3}; coder.varsize('c', [1 10]); y = c; end
coder.varsize
がない場合、c
は次元が 1 行 3 列の固定サイズです。coder.varsize
がある場合、c
は上限が 10 の可変サイズです。場合によっては、
coder.varsize
を使用することで cell 配列の分類が異種混合から同種に変化することがあります。たとえば、以下のコードについて考えます。function y = mycell() %#codegen c = {1 [2 3]}; y = c{2}; end
コード ジェネレーターは、要素が異なるサイズをもつことから
c
を異種混合として分類します。c
は次元が 1 行 2 列の固定サイズです。coder.varsize
をc
に使用すると、同種になります。以下に例を示します。function y = mycell() %#codegen c = {1 [2 3]}; coder.varsize('c', [1 10], [0 1]); y = c{2}; end
c
は次元が 1 行 :10 列の可変サイズの同種 cell 配列になります。c
を強制的に可変サイズではない同種にする場合、どの次元も変化しないように指定します。以下に例を示します。function y = mycell() %#codegen c = {1 [2 3]}; coder.varsize('c', [1 2], [0 0]); y = c{2}; end
参考
coder.CellType
| coder.varsize