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

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

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

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

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

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

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

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

  • Чтобы передать табличные индексы в сгенерированный код как входные параметры, сначала сделайте индексы постоянными при помощи 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, поскольку эта операция является горизонтальной конкатенацией.

  • Функции принадлежности набора intersect, setdiff, setxor, и union поддержите неотсортированные таблицы во всех случаях. Вы не должны задавать 'stable' опция.

  • При использовании movevars функция, входной параметр vars не может содержать дублирующиеся имена переменных.

  • При использовании convertvars функция:

    • Указатели на функцию не поддерживаются.

    • Вторые и третьи входные параметры (vars и dataType) должно быть постоянным.

    • Вы не можете задать dataType как 'char'.

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

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

| | |

Похожие темы