Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

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.varsizec に使用すると、同種になります。以下に例を示します。

    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

参考

関連するトピック