В приложении 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 позволяет дублирующиеся имена свойства, смотрите Разделение на подклассы Нескольких Классов.