Main Content

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

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.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

参考

|

関連するトピック