Пакет: кодер
Суперклассы: coder.ArrayType
Представляйте набор классов MATLAB
Задает набор объектов класса значения, которые может принять сгенерированный код. Используйте только с codegen
-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® path. Задайте как вектор символов или строковый скаляр. Например: 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 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')
Предыдущий шаг создает 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.Type
| coder.PrimitiveType
| coder.EnumType
| coder.CellType
| coder.FiType
| coder.Constant
| coder.ArrayType
| coder.newtype
| coder.typeof
| coder.resize
| codegen
| coder
| coder.cstructname