Задайте объекты как входные параметры в приложении MATLAB Coder

В приложении MATLAB® Coder™, чтобы задать тип входа, который является объектом класса значения:

  1. Задайте класс значения. Например, задайте класс 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

  2. Задайте функцию, которая берет объект класса значения как вход. Например:

    function z = getarea(r)
    %#codegen
    z = calcarea(r);
    end

  3. В приложении создайте проект для 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.

Обеспечьте пример

Если вы обеспечиваете объект класса значения, приложение использует размеры и типы свойств объекта в качестве примера.

  1. В MATLAB задайте объект класса значения myRectangle.

    rect_obj = myRectangle(4,5)

  2. В приложении, на странице Define Input Types, нажимают Let me enter input or global types directly.

  3. Кликните по полю справа от входного параметра r.

  4. Выберите Define by Example.

  5. Введите rect_obj или выберите его из списка переменных рабочей области.

    Приложение определяет свойства и их размеры и типы от объекта в качестве примера.

В качестве альтернативы можно обеспечить имя класса значения, myRectangle, или coder.ClassType объект для того класса. Задавать coder.ClassType объект, использовать coder.typeof. Например:

  1. В MATLAB задайте coder.ClassType объект, который имеет те же свойства как rect_obj.

    t = coder.typeof(rect_obj)

  2. В приложении обеспечьте t как пример.

Чтобы изменить размер или тип свойства, кликните по полю справа от свойства.

Непротиворечивость между файлом определения и определения класса типа

Когда вы генерируете код, свойства, которые вы задаете в приложении, должны быть сопоставимы со свойствами в файле определения класса. Если файл определения класса имеет свойства, которые не использует ваш код, ваше определение типа в приложении не должно включать те свойства. Генератор кода удаляет свойства, которые не использует ваш код.

Ограничения для Использования объектов как входные параметры функции точки входа

Входные параметры функции точки входа, которые являются объектами, имеют эти ограничения:

  • Объект, который является входным параметром функции точки входа, должен быть объектом класса значения. Объекты классов Handle не могут быть входными параметрами функции точки входа. Поэтому класс значения, который содержит класс Handle, не может быть входным параметром функции точки входа.

  • Объект не может быть глобальной переменной.

  • Если объект имеет дублирующиеся имена свойства, вы не можете использовать его с coder.Constant. Дублирующиеся имена свойства происходят в объекте подкласса в этих ситуациях:

    • Подкласс имеет свойство с тем же именем как свойство суперкласса.

    • Подкласс выводит из нескольких суперклассов, которые используют то же имя для свойства.

    Для получения информации о том, когда MATLAB позволяет дублирующиеся имена свойства, смотрите Разделение на подклассы Нескольких Классов.

Смотрите также

Похожие темы