exponenta event banner

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

Передача объекта 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 coder object, можно изменить размер объекта:

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()

В редакторе типов кодеров генератор кода включает функцию getCoderType для объектов типа кодера. Эта функция используется для возврата унаследованного представления типов кодеров. См., Создание и редактирование типов ввода с помощью редактора типов кодеров

Некоторые типы данных MATLAB обеспечивают настраиваемые представления типов для генерации кода MATLAB. В других случаях тип представлен с помощью coder.ClassType.

См. также

| | |