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

В этом примере показано, как задать количество входов для системной 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:

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

  • Реализуйте связанную getNumInputsImpl метод для определения количества входов.

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

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

См. также

|

Похожие темы