Задайте объекты как вводы в приложении 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 меня вводят входной параметр или глобальные типы непосредственно.

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

  4. Выберите Define на примере.

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

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

Похожие темы

Была ли эта тема полезной?