Измените количество вводов

Этот пример показывает, как определить номер входных параметров для Системы object™ с и не используя getNumInputsImpl.

Если у вас есть переменное количество вводов или выводов, и вы намереваетесь использовать Системный объект в Simulink®, необходимо включать getNumInputsImpl или метод getNumOutputsImpl в определении класса.

Эти примеры показывают модификации для количества входных параметров. Если вы хотите изменить количество выходных параметров, те же принципы применяются.

Как со всем Системным объектом методы Impl, вы всегда устанавливаете getNumInputsImpl и доступ метода getNumOutputsImpl к protected, потому что они - внутренние методы, которые никогда не называются непосредственно.

Позвольте до Трех Вводов

Этот пример показывает, как записать Системный объект, который позволяет количеству входных параметров отличаться.

Обновите метод stepImpl, чтобы принять до трех входных параметров путем добавления кода, чтобы обработать один, два, или три входных параметра. Если вы только используете этот Системный объект в MATLAB, getNumInputsImpl и getNumOutputsImpl не требуются.

Полное определение класса

classdef AddTogether < matlab.System
    % Add inputs together
    
    methods (Access = protected)
        function y = stepImpl(~,x1,x2,x3)
            switch nargin
                case 2
                    y = x1;
                case 3
                    y = x1 + x2;
                case 4
                    y = x1 + x2 + x3;
                otherwise
                    y = [];
            end  
        end
    end
end

Запустите этот Системный объект с один, два, и три входных параметра.

addObj = AddTogether;
addObj(2)
ans =

     2

addObj(2,3)
ans =

     5

addObj(2,3,4)
ans =

     9

Управляйте количеством вводов и выводов со свойством

Этот пример показывает, как записать Системный объект, который позволяет изменения в количестве вводов и выводов прежде, чем запустить объект. Используйте этот метод, когда ваш Системный объект будет включен в Simulink:

  • Добавьте ненастраиваемое свойство NumInputs управлять количеством входных параметров.

  • Реализуйте связанный getNumInputs и методы getNumOutputsImpl, чтобы задать количество входных параметров.

Полное определение класса

classdef AddTogether2 < matlab.System
    % Add inputs together.  The number of inputs is controlled by the
    % nontunable property |NumInputs|.
    
    properties (Nontunable)
        NumInputs = 3;   % Default value
    end
    methods (Access = protected)
        function y = stepImpl(obj,x1,x2,x3)
            switch obj.NumInputs
                case 1
                    y = x1;
                case 2
                    y = x1 + x2;
                case 3
                    y = x1 + x2 + x3;
                otherwise
                    y = [];
            end  
        end
        function validatePropertiesImpl(obj)
            if ((obj.NumInputs < 1) ||...
                    (obj.NumInputs > 3))
                error("Only 1, 2, or 3 inputs allowed.");
            end
        end
        
        function numIn = getNumInputsImpl(obj)
            numIn = obj.NumInputs;
        end
    end
end

Запустите этот Системный объект с один, два, и три входных параметра.

addObj = AddTogether2;
addObj.NumInputs = 1;
addObj(2)
ans =

     2

release(addObj);
addObj.NumInputs = 2;
addObj(2,3)
ans =

     5

release(addObj);
addObj.NumInputs = 3;
addObj(2,3,4)
ans =

     9

Смотрите также

|

Похожие темы

Была ли эта тема полезной?