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

Вы можете получить доступ к исходному коду MATLAB, используемому блоком MATLAB System, нажав гиперссылку «Source Code» из диалогового окна блока. Системный объект TunableNontunableProperties реализует setupImpl, stepImpl и processTunedPropertiesImpl методы. Системный объект имеет две общественной собственности: Gain и Bias. The Bias свойство имеет атрибут Nontunable, который делает это свойство доступным только для чтения во время симуляции. The Gain свойство не имеет атрибутов, поэтому по умолчанию оно настраивается и может быть изменено во время симуляции.
Системный объект имеет частную собственность, называемую pGain. pGain сохраняет значение общедоступного Gain свойство после области значений Gain ограничено в диапазоне от 1 до 2. Можно инициализировать pGain путем копирования значения Gain в setupImpl способ. В этом примере pGain используется в stepImpl метод для вычисления выхода. В Системный объект, всякий раз, когда общедоступные настраиваемые свойства изменяются, 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