Когда вы составляете таблицы в коде MATLAB®, который вы предназначаете для генерации кода, необходимо создать их при помощи array2table
cell2table
struct2table
, или table
функции. Для получения дополнительной информации см. Таблицы (MATLAB).
Для таблиц у генерации кода есть эти ограничения:
Необходимо задать имена переменных с помощью 'VariableNames'
аргумент пары "имя-значение" при составлении таблиц от входных массивов при помощи table
array2table
, или cell2table
функции.
Вы не должны задавать 'VariableNames'
аргумент, когда вы предварительно выделяете таблицу при помощи table
функционируйте и 'Size'
аргумент пары "имя-значение".
Имена табличной переменной должны быть допустимыми идентификаторами MATLAB. Имена переменных должны начаться с буквы и могут включать только буквы, цифры и символы нижнего подчеркивания.
Вы не можете изменить VariableNames
'RowNames'
DimensionNames
, или UserData
свойства таблицы после того, как вы создаете его.
Можно задать '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'
аргумент пары "имя-значение".
Имя типа данных | Начальное значение в каждом элементе |
---|---|
| Дважды - или |
| Дважды - или |
| Подписанный 8-, 16-, 32-, или 64-битный целочисленный |
| 8-без знака, 16-, 32-, или 64-битный целочисленный |
| 0 |
| 0 |
|
|
Если вы задаете 'char'
как тип данных, затем table
предварительно выделяет соответствующую переменную как массив ячеек из символьных векторов, не как символьный массив. Лучшая практика состоит в том, чтобы не создавать табличные переменные, которые являются символьными массивами.
Когда вы вертикально конкатенируете таблицы, у них должны быть те же имена переменных в том же порядке. В MATLAB имена переменных должны быть тем же самым, но могут быть в различных порядках.
Когда вы горизонтально конкатенируете таблицы, и таблицы имеют имена строки, у них должны быть те же имена строки в том же порядке. В MATLAB имена строки должны быть тем же самым, но могут быть в различных порядках.
Если две таблицы имеют переменные, которые являются массивами ячеек N-D, то таблицы не могут быть вертикально конкатенированы.
Вы не можете использовать фигурные скобки, чтобы извлечь данные из нескольких табличных переменных, которые являются массивами ячеек N-D, поскольку эта операция является горизонтальной конкатенацией.
Ограничения, которые применяются к классам также, применяются к таблицам. Для получения дополнительной информации см. Определение Классов MATLAB для Генерации кода.
array2table
| cell2table
| struct2table
| table