exponenta event banner

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

В этом примере показано, как задать количество входов для системного object™ с использованием и без использования getNumInputsImpl.

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

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

Как и для всего объекта System 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

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

addObj = AddTogether;
addObj(2)
ans =

     2

addObj(2,3)
ans =

     5

addObj(2,3,4)
ans =

     9

Управление количеством входов и выходов с помощью свойства

В этом примере показано, как записать объект System, позволяющий изменять количество входов и выходов перед запуском объекта. Используйте этот метод, когда системный объект будет включен в Simulink:

  • Добавить неперестраиваемое свойство 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

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

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

См. также

|

Связанные темы