Редактирование и представление объектов и свойств типа кодера

Передача объекта в 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.

См. также

| | |

Для просмотра документации необходимо авторизоваться на сайте