Управляйте, является ли массив ячеек Переменным Размером

Генератор кода классифицирует массив ячеек переменного размера как гомогенный. Элементы массива ячеек должны иметь тот же класс. В сгенерированном коде массив ячеек представлен как массив.

Если массив ячеек является входным параметром функции точки входа, чтобы сделать его переменным размером, использовать coder.typeof или coder.newtype создать тип для массива ячеек переменного размера. Например, чтобы создать тип для массива ячеек, первая размерность которого фиксируется и чье второе измерение имеет верхнюю границу 10, используйте этот код:

 t = coder.typeof({1 2 3}, [1 10], [0 1])

Смотрите задают входные параметры массива ячеек Переменного Размера.

Если массив ячеек не является входным параметром функции точки входа, чтобы сделать его переменным размером:

  • Создайте массив ячеек при помощи cell функция. Например:

    function z = mycell(n, j)
    %#codegen
    x = cell(1,n);   
    for i = 1:n
        x{i} = i;
    end
    z = x{j};
    end
    

    Для генерации кода, когда вы создаете массив ячеек переменного размера при помощи 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. Рассмотрите этот код:

    function y =  mycellfun()
    %#codegen
    c = {1 2 3};
    coder.varsize('c', [1 10]);
    y = c;
    end

    Без coder.varsizeC фиксированный размер с размерностями 1 3. С coder.varsizeC переменный размер с верхней границей 10.

    Иногда, использование coder.varsize изменяет классификацию массива ячеек от неоднородного до гомогенного. Рассмотрите этот код:

    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.

    Обеспечивать c чтобы быть гомогенными, но не переменный размер, укажите, что ни одна из размерностей не варьируется. Например:

    function y =  mycell()
    %#codegen
    c = {1 [2 3]};
    coder.varsize('c', [1 2], [0 0]);
    y = c{2};
    end

Смотрите также

|

Похожие темы

Для просмотра документации необходимо авторизоваться на сайте