В этом примере показано, как создать базовую системную object™, увеличивающую число на единицу. Файл определения класса, используемый в примере, содержит минимальные элементы, необходимые для определения объекта System.
Можно создавать и редактировать MAT-файл или использовать редактор MATLAB ® для создания системного объекта. В этом примере описывается использование меню Создать (New) в редакторе MATLAB.
В MATLAB на вкладке «Редактор» выберите «Создать» > «Системный объект» > «Базовый». Откроется простой шаблон объекта Система (System).
Подкласс объекта из matlab.System. Заменить Untitled с AddOne в первой строке файла.
classdef AddOne < matlab.System
Системные объекты состоят из базового класса, matlab.System и может включать в себя один или более классов миксина. Базовый класс и смешанные классы указываются в первой строке файла определения класса.
Сохраните файл и присвойте ему имя AddOne.m.
stepImpl содержит алгоритм для выполнения при запуске объекта. Определите этот метод таким образом, чтобы он содержал действия, которые должен выполнять объект System.
В созданном базовом системном объекте проверьте 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
stepImpl для доступа к методу всегда установлено значение protected поскольку это внутренний метод, который пользователи не вызывают напрямую или не запускают.
Для всех методов, кроме статических, в качестве первого входного аргумента требуется дескриптор объекта System. Значение по умолчанию, вставленное редактором MATLAB, obj. Для дескриптора объекта System можно использовать любое имя.
По умолчанию количество входов и выходов равно одному. Входные и выходные данные можно добавлять с помощью параметров «Входные/выходные данные». Можно также использовать переменное количество входов или выходов, см. раздел Изменение количества входов.
Кроме того, при создании системного объекта путем редактирования MAT-файла можно добавить stepImpl метод с помощью команды Вставить метод > Реализовать алгоритм.
Изменение вычислений в stepImpl метод для добавления 1 к значению u.
methods (Access = protected)
function y = stepImpl(~,u)
y = u + 1;
end
Совет
Вместо прохождения в дескрипторе объекта можно использовать тильду (~), чтобы указать, что дескриптор объекта не используется в функции. Использование тильды вместо дескриптора объекта предотвращает появление предупреждений о неиспользуемых переменных.
Удаление неиспользуемых методов, включенных по умолчанию в базовый шаблон.
Эти методы можно изменить, чтобы добавить дополнительные действия и свойства объекта System. Можно также не вносить никаких изменений, и системный объект по-прежнему работает по назначению.
Файл определения класса теперь имеет весь код, необходимый для этого объекта System.
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