Реализуйте алгоритм с настраиваемыми параметрами

Введение

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

Похожие темы