Пакет: кодер
Суперклассы: 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