Пакет: coder
Суперклассы: 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® путь. Задайте как вектор символов или строковый скаляр. Для примера: 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
объект не должен включать эти свойства. Генератор кода удаляет свойства, которые вы не используете.
codegen
| coder
| coder.ArrayType
| coder.Constant
| coder.cstructname
| coder.EnumType
| coder.EnumType
| coder.FiType
| coder.newtype
| coder.PrimitiveType
| coder.resize
| coder.Type
| coder.typeof