Когда вы составляете таблицы в коде 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'
аргумент пары "имя-значение".
Имя типа данных | Начальное значение в каждом элементе |
---|---|
| Дважды - или |
| Дважды - или |
| Подписанный 8-, 16-, 32-, или 64-битный целочисленный |
| 8-без знака, 16-, 32-, или 64-битный целочисленный |
| 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).
array2table
| cell2table
| struct2table
| table