В этом примере показано, как создать базовую системную object™, которая увеличивает число на единицу. Файл определения класса, используемый в примере, содержит минимальные элементы, необходимые для определения системного объекта.
Можно создать и отредактировать MAT-файл или использовать MATLAB® Редактор, чтобы создать системный объект. В этом примере описывается использование меню New в редакторе MATLAB.
В MATLAB на вкладке Editor выберите New > System Object > Basic. Откроется простой шаблон системного объекта.
Подкласс вашего объекта из matlab.System
. Замените Untitled
с AddOne
в первой линии вашего файла.
classdef AddOne < matlab.System
Системные объекты состоят из базового класса, matlab.System
и могут включать один или несколько классов mixin. Вы задаете базовый класс и классы mixin в первой линии файла определения класса.
Сохраните файл и назовите его AddOne.m
.
The stepImpl
метод содержит алгоритм, который должен выполняться при запуске объекта. Определите этот метод так, чтобы он содержал действия, которые необходимо выполнить системный объект.
В созданном базовом системном объекте смотрите stepImpl
шаблон метода.
methods (Access = protected) function y = stepImpl(obj,u) % Implement algorithm. Calculate y as a function of input u and % discrete states. y = u; end end
The stepImpl
для доступа к методу всегда задано значение protected
поскольку это внутренний метод, который пользователи не вызывают и не запускают напрямую.
Все методы, кроме статических методов, требуют указателя на системный объект в качестве первого входного параметра. Значение по умолчанию, вставленное РЕДАКТОРОМ MATLAB, является obj
. Вы можете использовать любое имя для указателя на системный объект.
По умолчанию количество входов и выходов одно. Входы и выходы могут быть добавлены с помощью Inputs/Outputs. Можно также использовать переменное количество входов или выходов, см. Изменение количества входов.
Кроме того, если вы создаете Системный объект путем редактирования MAT-файла, можно добавить stepImpl
метод с использованием Insert Method > Implement algorithm.
Измените расчеты в stepImpl
метод добавления 1
к значению u
.
methods (Access = protected) function y = stepImpl(~,u) y = u + 1; end
Совет
Вместо прохождения в указателе на объект можно использовать тильду (~
), чтобы указать, что указатель на объект не используется в функции. Использование тильды вместо указателя на объект предотвращает предупреждения о неиспользованных переменных.
Удалите неиспользованные методы, которые по умолчанию включены в базовый шаблон.
Можно изменить эти методы, чтобы добавить дополнительные действия и свойства системного объекта. Вы также не можете вносить никаких изменений, и системный объект все еще работает должным образом.
Теперь файл определения класса имеет весь код, необходимый для этого системного объекта.
classdef AddOne < matlab.System % ADDONE Compute an output value one greater than the input value % All methods occur inside a methods declaration. % The stepImpl method has protected access methods (Access = protected) function y = stepImpl(~,u) y = u + 1; end end end
getNumInputsImpl
| getNumOutputsImpl
| matlab.System
| stepImpl