Пакет: кодер
Суперклассы: coder.ArrayType
Представление набора классов MATLAB
Задает набор объектов класса значений, которые может принять созданный код. Использовать только с fiaccel -args вариант. Не передавайте в качестве входных данных сгенерированную функцию MEX.
Примечание
Можно также создавать и редактировать coder.Type объектов в интерактивном режиме с помощью редактора типов кодеров. См. раздел Создание и редактирование типов ввода с помощью редактора типов кодеров.
создает t = coder.typeof(value_class_object)coder.ClassType объект для объекта value_class_object.
создает t = coder.newtype(value_class_name)coder.ClassType объект для объекта класса value_class_name.
|
Объект класса значений, из которого создается v = myValueClass; t = coder.typeof(v); t = coder.typeof(myValueClass(2,3)); |
|
Имя файла определения класса значений по пути MATLAB ®. Укажите как вектор символа или скаляр строки. Например: t = coder.newtype('myValueClass'); |
При создании coder.ClassType объект t из объекта класса значений v с помощью coder.typeof, свойства t являются теми же, что и свойства v с атрибутом Constant установить в значение false.
Значение. Сведения о том, как классы значений влияют на операции копирования, см. в разделе Копирование объектов.
Создайте тип на основе объекта-примера в рабочей области.
Создание класса значений myRectangle.
classdef myRectangle properties length; width; end methods function obj = myRectangle(l,w) if nargin > 0 obj.length = l; obj.width = w; end end function area = calcarea(obj) area = obj.length * obj.width; end end end
Создание функции, которая принимает объект myRectangle в качестве входных данных.
function z = getarea(r) %#codegen z = calcarea(r); end
Создание объекта myRectangle.
v = myRectangle(1,2)
v =
myRectangle with properties:
length: 1
width: 2Создать coder.ClassType на основе объекта v.
t = coder.typeof(v)
t =
coder.ClassType
1×1 myRectangle
length: 1×1 double
width : 1×1 doublecoder.typeof создает coder.ClassType объект, имеющий те же имена и типы свойств, что и v имеет.
Создать код для getarea. Укажите тип ввода, передав coder.ClassType объект, t, в -args вариант.
codegen getarea -args {t} -report
coder.newtypeСоздать coder.ClassType объект для объекта класса значений mySquare с помощью coder.newtype.
Создать класс значений mySquare которое имеет одно свойство, side.
classdef mySquare properties side; end methods function obj = mySquare(val) if nargin > 0 obj.side = val; end end function a = calcarea(obj) a = obj.side * obj.side; end end end
Создать coder.ClassType тип для mySquare.
t = coder.newtype('mySquare')На предыдущем шаге создается coder.ClassType тип для t, но не присваивает никаких свойств mySquare к нему. Гарантировать t имеет все свойства mySquare, укажите тип side с помощью t.Properties.
t.Properties.side = coder.typeof(2)
После создания coder.ClassType, можно изменить типы свойств. Например:
t = coder.typeof(myClass) t.Properties.prop1 = coder.typeof(int16(2)); t.Properties.prop2 = coder.typeof([1 2 3]);
После создания coder.ClassType, можно добавить свойства. Например:
t = coder.typeof(myClass) t.Properties.newprop1 = coder.typeof(int8(2)); t.Properties.newprop2 = coder.typeof([1 2 3]);
При создании кода свойства coder.ClassType объект, который вы передаете codegen должны соответствовать свойствам в файле определения класса. Однако если файл определения класса имеет свойства, которые код не использует, coder.ClassType объект не должен включать эти свойства. Генератор кода удаляет неиспользуемые свойства.
coder.ArrayType | coder.CellType | coder.Constant | coder.EnumType | coder.FiType | coder.newtype | coder.PrimitiveType | coder.resize | coder.Type | coder.typeof | fiaccel