В MATLAB® Coder™ задать тип входа, являющегося объектом класса значений, приложение:
Определите класс значений. Для примера задайте класс 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
В приложении создайте проект для getarea
. На странице Define Input Types укажите тип объекта одним из следующих способов:
Запись тестового файла getarea_test
который создает объект myRectangle
класс и передает его в getarea
. Для примера:
rect_obj = myRectangle(4,5); rect_area = getarea(rect_obj); disp(rect_area);
В приложении на странице Define Input Types укажите тестовый файл getarea_test
.
Нажмите Autodefine Input Types.
Если вы предоставляете объект класса значения, приложение использует размеры и типы свойств объекта примера.
В MATLAB задайте объект класса значения myRectangle
.
rect_obj = myRectangle(4,5)
В приложении, на странице Define Input Types, нажмите Let me enter input or global types directly.
Щелкните поле справа от параметра входа r
.
Выберите Define by Example.
Введите rect_obj
или выберите его из списка переменных рабочей области.
Приложение определяет свойства, их размеры и типы из объекта примера.
Кроме того, можно задать имя класса значений, myRectangle
, или coder.ClassType
объект для этого класса. Как задать coder.ClassType
объект, использование coder.typeof
. Для примера:
В MATLAB задайте coder.ClassType
объект, который имеет те же свойства, что и rect_obj
.
t = coder.typeof(rect_obj)
В приложении предоставьте t
как пример.
Чтобы изменить размер или тип свойства, щелкните поле справа от свойства.
Когда вы генерируете код, свойства, которые вы задаете в приложении, должны соответствовать свойствам в файле определения класса. Если файл определения класса имеет свойства, которые не использует ваш код, ваше определение типа в приложении не должно включать эти свойства. Генератор кода удаляет свойства, которые не использует ваш код.
Входные параметры функции точки входа, которые являются объектами, имеют следующие ограничения:
Объект, который является входным параметром функции точки входа, должен быть объектом класса значения. Объекты классов handle не могут быть входными параметрами функции точки входа. Поэтому класс значения, который содержит класс handle, не может быть входным параметром функции точки входа.
Объект не может быть глобальной переменной.
Если объект имеет повторяющиеся имена свойства, вы не можете использовать его с coder.Constant
. Повторяющиеся имена свойства происходят в объекте подкласса в следующих ситуациях:
Подкласс имеет свойство с таким же именем, что и свойство суперкласса.
Подкласс происходит из нескольких суперклассов, которые используют одно и то же имя для свойства.
Для получения информации о том, когда MATLAB разрешает повторяющиеся имена свойства, смотрите Подклассы нескольких классов.