Этот пример показывает, как создать базовую систему 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
.
Метод 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
Доступ к методу 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