このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
cell 配列を可変サイズにするかの制御
コード ジェネレーターは可変サイズの cell 配列を同種として分類します。cell 配列の要素は同じクラスでなければなりません。生成されたコード内で cell 配列は配列として表されます。
cell 配列を可変サイズにするには、以下を実行します。
関数
cell
を使用して cell 配列を作成します。以下に例を示します。function z = mycell(n, j) %#codegen assert (n < 100); 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}; if n > 3 c = {1 2 3 4}; end z = c{n}; end
coder.varsize
を使用して cell 配列を強制的に可変サイズにします。たとえば、以下のコードについて考えます。function y = mycellfun() %#codegen c = {1 2 3}; coder.varsize('c', [1 10]); y = c{1}; 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