Main Content

기본 System object 정의하기

이 예제에서는 숫자를 1씩 증분하는 기본 System object™를 만드는 방법을 보여줍니다. 이 예제에 사용되는 클래스 정의 파일에는 System object를 정의하는 데 필요한 최소한의 요소가 들어 있습니다.

System object 클래스 생성하기

MAT 파일을 만들어 편집하거나 MATLAB® 편집기를 사용하여 System object를 만들 수 있습니다. 이 예제에서는 MATLAB 편집기에서 새로 만들기 메뉴를 사용하는 방법을 설명합니다.

  1. MATLAB의 편집기 탭에서 새로 만들기 > System Object > 기본을 선택합니다. 간단한 System object 템플릿이 열립니다.

  2. matlab.System에서 객체를 서브클래스화합니다. 파일의 첫 번째 라인에서 UntitledAddOne으로 바꿉니다.

    classdef AddOne < matlab.System
    

    System object는 기본 클래스 matlab.System으로 구성되며 하나 이상의 mixin 클래스를 포함할 수 있습니다. 클래스 정의 파일의 첫 번째 라인에 기본 클래스와 mixin 클래스를 지정합니다.

  3. 파일을 저장하고 이름을 AddOne.m으로 지정합니다.

알고리즘 정의하기

stepImpl 메서드에는 객체를 실행할 때 함께 실행시킬 알고리즘이 포함되어 있습니다. System object가 수행할 동작이 포함되도록 이 메서드를 정의합니다.

  1. 직접 생성한 기본 System object에서 stepImpl 메서드 템플릿을 검사합니다.

    methods (Access = protected)
       function y = stepImpl(obj,u)
          % Implement algorithm. Calculate y as a function of input u and
          % discrete states.
          y = u;
       end
    end

    stepImpl 메서드는 사용자가 직접 호출하거나 실행하지 않는 내부 메서드이므로 이에 대한 액세스는 항상 protected로 설정됩니다.

    정적 메서드를 제외한 모든 메서드의 첫 번째 입력 인수는 System object 핸들이어야 합니다. MATLAB 편집기에 의해 삽입되는 디폴트 값은 obj입니다. System object 핸들의 이름은 자유롭게 지정할 수 있습니다.

    기본적으로, 입력값 개수와 출력값 개수는 둘 다 1입니다. 입력값/출력값을 사용하여 입력값과 출력값을 추가할 수 있습니다. 가변적인 개수의 입력값이나 출력값을 사용할 수도 있습니다. 입력값 개수 변경하기 항목을 참조하십시오.

    또는 MAT 파일을 편집하여 System object를 만드는 경우 메서드 삽입 > 알고리즘 구현을 사용하여 stepImpl 메서드를 추가할 수 있습니다.

  2. stepImpl 메서드에서 계산을 변경하여 u의 값에 1을 더합니다.

    methods (Access = protected)
        
        function y = stepImpl(~,u)
          y = u + 1;
        end
    

    객체 핸들을 전달하는 대신, 물결표(~)를 사용하여 객체 핸들이 함수에 사용되지 않음을 나타낼 수 있습니다. 객체 핸들 대신 물결표를 사용하면 사용되지 않은 변수에 대한 경고가 발생하지 않습니다.

  3. 기본 템플릿에 기본적으로 포함되어 있는 메서드 중 사용되지 않은 메서드를 제거합니다.

    더 많은 System object 동작과 속성을 추가하기 위해 이러한 메서드를 수정할 수 있습니다. 전혀 변경하지 않을 수도 있으며 그럴 경우 System object는 의도한 대로 계속 작동합니다.

이제 클래스 정의 파일에는 이 System object에 필요한 코드가 모두 있습니다.

classdef AddOne < matlab.System
% ADDONE Compute an output value one greater than the input value
  
  % All methods occur inside a methods declaration.
  % The stepImpl method has protected access
  methods (Access = protected)
    
    function y = stepImpl(~,u)
      y = u + 1;
    end
  end
end

참고 항목

| | |

관련 항목