Этот пример показывает, как реализовать алгоритм с настраиваемыми параметрами при помощи блока MATLAB System.
Системные объекты позволяют вам реализовывать использование алгоритмов MATLAB. Системные объекты являются специализированным видом объекта MATLAB, специально разработанного для реализации и симуляции динамических систем с входными параметрами то изменение в зависимости от времени.
После того, как вы зададите Системный объект, можно включать его в модель Simulink с помощью блока MATLAB System.
Блок MATLAB System реализует Системный объект TunableNontunableProperties
, что множители, введенные параметром Gain
и, добавляют параметр Bias
во вход. Вход к блоку MATLAB System обеспечивается блоком Constant, и блок Display показывает результат применения усиления и смещения. Параметр Gain
является настраиваемым и может быть изменен, когда симуляция запускается. Параметр Bias
является ненастраиваемым и не может быть изменен во время симуляции. Когда модель запускается, можно изменить настраиваемые свойства, но вы не можете изменить ненастраиваемые свойства.
Можно получить доступ к исходному коду MATLAB, используемому блоком MATLAB System путем нажатия на гиперссылку "Source Code" от диалогового окна блока. Системный объект TunableNontunableProperties
реализует setupImpl
, stepImpl
и методы processTunedPropertiesImpl
. Системный объект имеет два публичных свойств: Gain
и Bias
. Свойство Bias
имеет Ненастраиваемый атрибут, который делает это свойство только для чтения во время симуляции. Свойство 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