Main Content

입력값 개수 변경하기

이 예제에서는 getNumInputsImpl을 사용하는 경우와 사용하지 않는 경우에 System object™에 대한 입력값 개수를 설정하는 방법을 보여줍니다.

입력값 개수나 출력값 개수가 가변적인 경우 Simulink®에서 System object를 사용하려면, 클래스 정의에 getNumInputsImpl 메서드 또는 getNumOutputsImpl 메서드를 포함시켜야 합니다.

이 예제에서는 입력값 개수를 수정하는 경우를 보여줍니다. 출력값 개수를 변경하려는 경우에도 동일한 원리가 적용됩니다.

모든 System object Impl 메서드와 마찬가지로, getNumInputsImpl 메서드와 getNumOutputsImpl 메서드는 직접 호출되지 않는 내부 메서드이므로 이들 메서드의 액세스를 항상 protected로 설정하십시오.

최대 세 개의 입력값 허용하기

이 예제에서는 입력값 개수를 변경할 수 있는 System object를 작성하는 방법을 보여줍니다.

1개, 2개 또는 3개 입력값을 처리하는 코드를 추가하여 최대 세 개의 입력값을 받도록 stepImpl 메서드를 업데이트합니다. MATLAB에서 이 System object만 사용하는 경우 getNumInputsImplgetNumOutputsImpl은 필요하지 않습니다.

전체 클래스 정의

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

1개, 2개, 3개 입력값으로 이 System object를 실행합니다.

addObj = AddTogether;
addObj(2)
ans =

     2

addObj(2,3)
ans =

     5

addObj(2,3,4)
ans =

     9

속성을 사용하여 입력값 개수와 출력값 개수 제어하기

이 예제에서는 System object를 실행하기 전에 입력값 개수와 출력값 개수를 변경할 수 있는 System object를 작성하는 방법을 보여줍니다. Simulink에 System object가 포함되는 경우 다음 방법을 사용하십시오.

  • 입력값 개수를 제어하는 조정 불가형 속성 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

1개, 2개, 3개 입력값으로 이 System object를 실행합니다.

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

참고 항목

|

관련 항목