В этом примере показано, как реализовать алгоритм с настраиваемыми параметрами с помощью системного блока MATLAB.
Системные объекты позволяют реализовать алгоритмы с помощью MATLAB. Системные объекты - специализированный вид объектов MATLAB, разработанный специально для реализации и моделирования динамических систем с вводами, изменяющимися с течением времени.
После определения объекта System его можно включить в модель Simulink с помощью блока MATLAB System.
Системный блок MATLAB реализует системный объект TunableNontunableProperties который кратен входу на Gain и добавляет Bias параметр на вход. Вход в системный блок MATLAB обеспечивается блоком константы, и блок дисплея показывает результат применения усиления и смещения. Gain параметр является настраиваемым и может быть изменен при выполнении моделирования. Bias параметр не настраивается и не может быть изменен во время моделирования. При работе модели можно изменить настраиваемые свойства, но нельзя изменить не настраиваемые свойства.

Доступ к исходному коду MATLAB, используемому системным блоком MATLAB, можно получить, щелкнув гиперссылку «Исходный код» в диалоговом окне блока. Системный объект TunableNontunableProperties реализует setupImpl, stepImpl и processTunedPropertiesImpl методы. Объект System имеет два общих свойства: Gain и Bias. Bias имеет атрибут Nontunable, который делает это свойство доступным только для чтения во время моделирования. Gain свойство не имеет атрибутов, поэтому по умолчанию оно настраивается и может быть изменено во время моделирования.
Объект System имеет частное свойство с именем pGain. pGain сохраняет значение общедоступного Gain после диапазона Gain ограничено от 1 до 2. Можно инициализировать pGain путем копирования значения Gain в setupImpl способ. В этом примере: pGain используется в stepImpl способ вычисления выходного сигнала. В объекте System при каждом изменении общедоступных настраиваемых свойств processTunedPropertiesImpl вызывается. В этом примере: processTunedPropertiesImpl обновляет частную собственность pGain на основе значения, полученного от общественности Gain собственность.
classdef TunableNontunableProperties < matlab.System
% TunableNontunableProperties Multiply input by Gain and add Bias
properties
Gain = 1.5
end
properties(Nontunable)
Bias = 0.1
end
properties(Access = private)
pGain
end
methods(Access = protected)
function setupImpl(obj, ~)
% Copy public property value Gain to private property pGain and
% restrict its range between 1 and 2
obj.pGain = obj.Gain;
if obj.pGain < 1
obj.pGain = 1;
elseif obj.pGain > 2
obj.pGain = 2;
end
end
function y = stepImpl(obj, u)
y = u * obj.pGain + obj.Bias;
end
function processTunedPropertiesImpl(obj)
% Update private property pGain from the public Gain property
% and restrict its range between 1 and 2.
obj.pGain = obj.Gain;
if obj.pGain < 1
obj.pGain = 1;
elseif obj.pGain > 2
obj.pGain = 2;
end
end
end
end