Пакет: кодер
Суперклассы: coder.ArrayType
Представляйте набор классов MATLAB
Задает набор объектов класса значения, которые может принять сгенерированный код. Используйте только с опцией -args
codegen
. Не передавайте как вход сгенерированной MEX-функции.
создает объект 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
.
Значение. Чтобы изучить, как классы значения влияют на операции копии, смотрите Копирование Объектов (MATLAB).
Создайте тип на основе объекта в качестве примера в рабочей области.
Создайте класс значения 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 double
coder.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')
Задайте тип side
.
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
не должен включать те свойства. Генератор кода удаляет свойства, которые вы не используете.
codegen
| coder
| coder.ArrayType
| coder.Constant
| coder.EnumType
| coder.EnumType
| coder.FiType
| coder.PrimitiveType
| coder.Type
| coder.cstructname
| coder.newtype
| coder.resize
| coder.typeof