Передача объекта в coder.typeof
или передача имени класса в виде строкового скаляра coder.newtype
создает объект, который представляет тип объекта для генерации кода.
Объект типа кодера отображает краткое описание свойств объекта, исключая значения внутренних состояний. Неконстантные свойства отображают их тип и размер, в то время как постоянные свойства отображают только их значения.
Чтобы создать объект типа кодера, передайте совместимый объект в coder.typeof
. Для примера:
t = categorical({'r','g','b'}); tType = coder.typeof(t)
Представление переменных t
хранится в объекте типа кодера tType
.
tType = matlab.coder.type.CategoricalType 1x3 categorical Categories : 3x1 homogeneous cell Ordinal : 1x1 logical Protected : 1x1 logical
Можно редактировать свойства объектов типа кодера. Свойствам объекта можно назначить скалярные значения. Значения неявно преобразуются в соответствующие значения типа кодера, когда они назначены свойствам объекта типа кодера. Генератор кода неявно преобразует константы, назначенные свойствам объекта типа кодера, в coder.Constant
значения. Вы можете сами изменить размер объектов
coder.resize
Вы можете изменить размер большинства объектов при помощи coder.resize
. Можно изменить размер объектов, их свойства и создать массивы в свойствах.
Для примера, для timetable
объект кодера, можно изменить размер объекта:
t = timetable((1:5)',(11:15)','SampleRate',1);
tType = coder.typeof(t);
tType = coder.resize(tType, [10 2],[1 0])
Этот код изменяет размер timetable
в :10x2
объект.
tType = matlab.coder.type.RegularTimetableType :10x2 timetable Data : 1x2 homogeneous cell Description : 1x0 char UserData : 0x0 double DimensionNames : {'Time'} {'Variables'} VariableNames : {'Var1'} {'Var2'} VariableDescriptions : 1x2 homogeneous cell VariableUnits : 1x2 homogeneous cell VariableContinuity : 1x2 matlab.internal.coder.tabular.Continuity StartTime : 1x1 matlab.coder.type.DurationType SampleRate : 1x1 double TimeStep : 1x1 matlab.coder.type.DurationType
Постоянные свойства tType
отобразить их значения. Неконстантные свойства отображают только их тип и размер.
Примечание
Не все типы, представляющие MATLAB® классы совместимы с coder.resize
.
Можно изменить размер объектов путем редактирования самих свойств. Для duration
объект типа кодера x
, отредактируйте Size
свойство для изменения размера при необходимости.
x = coder.typeof(duration((1:3),0,0)); x.Size = [10 10]
Этот код изменяет размер объекта типа кодера.
x = matlab.coder.type.DurationType 10x10 duration Format : 1x8 char
Можно также сделать объект типа кодера переменным размером, установив VarDims
флаг:
x.VarDims(2) = true
Второе измерение объекта типа кодера ограничено верхним углом 10
.
x = matlab.coder.type.DurationType 10x:10 duration Format : 1x8 char
В R2021a вызов coder.typeof
больше не возвращает coder.ClassType
объект. Если ваш рабочий процесс требует устаревшего представления объектов типа кодера, используйте getCoderType
функция от переменной, которая имеет новое представление вашего класса или объекта. Например, чтобы получить устаревшее представление datetime
переменная, используйте переменную, которая имеет новое представление tt
для вызова getCoderType
функция:
t = datetime; tt = coder.typeof(t); ttLegacy = tt.getCoderType()
В Coder Type Editor генератор кода включает функцию getCoderType
для объектов типа кодера. Используйте эту функцию, чтобы вернуть устаревшее представление типов кодеров. Смотрите, создайте и отредактируйте входные типы с помощью редактора типов Coder
Некоторые типы данных MATLAB обеспечивают настраиваемые представления типов для генерации кода MATLAB. В других случаях тип представлен с помощью coder.ClassType
.
Генерация кода для массивов переменного размера | coder.newtype
| coder.resize
| coder.typeof