Табличные ограничения для генерации кода

Когда вы составляете таблицы в коде MATLAB®, который вы предназначаете для генерации кода, необходимо создать их при помощи array2tablecell2tablestruct2table, или table функции. Для получения дополнительной информации см. Таблицы (MATLAB).

Для таблиц у генерации кода есть эти ограничения:

  • Необходимо задать имена переменных с помощью 'VariableNames' аргумент пары "имя-значение" при составлении таблиц от входных массивов при помощи tablearray2tablecell2table, или struct2table функции.

    Вы не должны задавать 'VariableNames' аргумент, когда вы предварительно выделяете таблицу при помощи table функционируйте и 'Size' аргумент пары "имя-значение".

  • Имена табличной переменной должны быть допустимыми идентификаторами MATLAB. Имена переменных должны начаться с буквы и могут включать только буквы, цифры и символы нижнего подчеркивания.

  • Вы не можете изменить VariableNames'RowNames' , или DimensionNames свойства таблицы после того, как вы создаете его.

    Можно задать 'VariableNames' и 'RowNames' входные параметры, когда вы составляете таблицу. Эти входные параметры задают свойства.

  • Чтобы индексировать в табличное использование переменные или имена строки, сначала сделайте таблицу постоянной при помощи coder.Constant функция.

    По умолчанию таблицы, которые вы передаете в сгенерированный код как входные параметры, не являются постоянными. Даже их переменная и имена строки не являются постоянными. Если таблица не является постоянной, то индексация при помощи переменной или имен строки производит ошибку. Можно индексировать в таблицу с помощью числовых или логических индексов, даже если это не постоянно.

  • Чтобы передать табличные индексы в сгенерированный код как входные параметры, сначала сделайте индексы постоянными при помощи coder.Constant функция. Если табличные индексы не являются постоянными, то индексация в переменные производит ошибку.

  • Вы не можете добавить пользовательские метаданные в таблицу. addprop и rmprop функции не поддерживаются.

  • Вы не можете изменить размер таблицы присвоениями. Например, добавление новой строки производит ошибку.

    function T = foo() %#codegen
        T = table((1:3)',(1:3)','VariableNames',{'Var1','Var2'});
        T(4,2) = 5;
    end
    

    Удаление строки или переменной также производит ошибку.

  • Когда вы предварительно выделяете таблицу, можно задать только следующие типы данных при помощи 'VariableTypes' аргумент пары "имя-значение".

    Имя типа данных

    Начальное значение в каждом элементе

    'double' единственный

    Дважды - или 0 с одинарной точностью

    'doublenan', 'doubleNaN''singlenan', 'singleNaN'

    Дважды - или NaN с одинарной точностью

    'int8' int16 int32 int64

    Подписанный 8-, 16-, 32-, или 64-битный целочисленный 0

    'uint8' uint16 uint32 uint64

    8-без знака, 16-, 32-, или 64-битный целочисленный 0

    'logical'

    0 ложь)

    'duration'

    0 секунды, как значение длительности

    'cellstr'

    {''} (ячейка с символьным массивом 0 на 0)

    Если вы задаете 'char' как тип данных, затем table предварительно выделяет соответствующую переменную как массив ячеек из символьных векторов, не как символьный массив. Лучшая практика состоит в том, чтобы не создавать табличные переменные, которые являются символьными массивами.

  • Когда вы вертикально конкатенируете таблицы, у них должны быть те же имена переменных в том же порядке. В MATLAB имена переменных должны быть тем же самым, но могут быть в различных порядках.

  • Когда вы горизонтально конкатенируете таблицы, и таблицы имеют имена строки, у них должны быть те же имена строки в том же порядке. В MATLAB имена строки должны быть тем же самым, но могут быть в различных порядках.

  • Если две таблицы имеют переменные, которые являются массивами ячеек N-D, то таблицы не могут быть вертикально конкатенированы.

  • Вы не можете использовать фигурные скобки, чтобы извлечь данные из нескольких табличных переменных, которые являются массивами ячеек N-D, поскольку эта операция является горизонтальной конкатенацией.

Ограничения, которые применяются к классам также, применяются к таблицам. Для получения дополнительной информации см. Определение Классов MATLAB для Генерации кода (MATLAB Coder).

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

| | |

Похожие темы