Этот пример показывает, как реализовать алгоритм с настраиваемыми параметрами с помощью блока 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