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