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

См. также

Похожие темы