При ускорении кода с помощью fiaccel, чтобы указать тип ввода, который является объектом класса значений, можно предоставить пример объекта с помощью -args вариант.
Определите класс значений. Например, определите класс 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
Определите функцию, которая принимает объект класса значений в качестве входных данных. Например:
function z = getarea(r) %#codegen z = calcarea(r); end
Определите объект класса.
rect_obj = myRectangle(fi(4),fi(5))
rect_obj =
myRectangle with properties:
length: [1×1 embedded.fi]
width: [1×1 embedded.fi]Передача объекта-примера в fiaccel с помощью -args вариант.
fiaccel getarea -args {rect_obj} -report
В отчете вы видите, что r имеет те же свойства, length и width, в качестве примера объекта rect_object.

Вместо предоставления объекта-примера можно создать тип для объекта класса значений и предоставить типу -args вариант.
Определите объект класса:
rect_obj = myRectangle(fi(4),fi(5))
rect_obj =
myRectangle with properties:
length: [1×1 embedded.fi]
width: [1×1 embedded.fi]Создание типа для объекта myRectangle который имеет те же типы свойств, что и rect_obj, использовать coder.typeof. coder.typeof создает coder.ClassType объект, определяющий тип для класса.
t= coder.typeof(rect_obj)
t =
coder.ClassType
1×1 myRectangle
length: 1×1 embedded.fi
DataTypeMode: Fixed-point: binary point scaling
Signedness: Signed
WordLength: 16
FractionLength: 12
width : 1×1 embedded.fi
DataTypeMode: Fixed-point: binary point scaling
Signedness: Signed
WordLength: 16
FractionLength: 12Передать тип в fiaccel с помощью -args вариант.
fiaccel getarea -args {t} -report
После создания типа можно изменить типы свойств.
t.Properties.length = coder.typeof(fi(0,1,32,29)) t.Properties.width = coder.typeof(fi(0,1,32,29))
Можно также добавить или удалить свойства. Например, для добавления свойства newprop:
t.Properties.newprop = coder.typeof(int16(1))
coder.ClassType Файл определения объекта и классаПри ускорении кода свойства coder.ClassType объект, который вы передаете fiaccel должны соответствовать свойствам в файле определения класса. Если файл определения класса имеет свойства, которые код не использует, coder.ClassType объект не должен включать эти свойства. fiaccel удаляет неиспользуемые свойства.
Входы функций начального уровня, являющиеся объектами, имеют следующие ограничения:
Объект, являющийся вводом функции точки входа, должен быть объектом класса значений. Объекты классов дескрипторов не могут быть входами функций точки входа. Поэтому класс значений, содержащий класс дескриптора, не может быть вводом функции точки входа.
Объект не может быть глобальной переменной.
Если объект имеет повторяющиеся имена свойств, его нельзя использовать с coder.Constant. Повторяющиеся имена свойств встречаются в объекте подкласса в следующих ситуациях:
Подкласс имеет свойство с тем же именем, что и свойство суперкласса.
Подкласс является производным от нескольких суперклассов, использующих одно и то же имя для свойства.
Сведения о том, когда MATLAB ® допускает дублирование имен свойств, см. в разделе Подклассификация нескольких классов.