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