기본 System object 정의하기
이 예제에서는 숫자를 1씩 증분하는 기본 System object™를 만드는 방법을 보여줍니다. 이 예제에 사용되는 클래스 정의 파일에는 System object를 정의하는 데 필요한 최소한의 요소가 들어 있습니다.
System object 클래스 생성하기
MAT 파일을 만들어 편집하거나 MATLAB® 편집기를 사용하여 System object를 만들 수 있습니다. 이 예제에서는 MATLAB 편집기에서 새로 만들기 메뉴를 사용하는 방법을 설명합니다.
MATLAB의 편집기 탭에서 새로 만들기 > System Object > 기본을 선택합니다. 간단한 System object 템플릿이 열립니다.
matlab.System
에서 객체를 서브클래스화합니다. 파일의 첫 번째 라인에서Untitled
를AddOne
으로 바꿉니다.classdef AddOne < matlab.System
System object는 기본 클래스
matlab.System
으로 구성되며 하나 이상의 mixin 클래스를 포함할 수 있습니다. 클래스 정의 파일의 첫 번째 라인에 기본 클래스와 mixin 클래스를 지정합니다.파일을 저장하고 이름을
AddOne.m
으로 지정합니다.
알고리즘 정의하기
stepImpl
메서드에는 객체를 실행할 때 함께 실행시킬 알고리즘이 포함되어 있습니다. System object가 수행할 동작이 포함되도록 이 메서드를 정의합니다.
직접 생성한 기본 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
메서드를 추가할 수 있습니다.stepImpl
메서드에서 계산을 변경하여u
의 값에1
을 더합니다.methods (Access = protected) function y = stepImpl(~,u) y = u + 1; end
팁
객체 핸들을 전달하는 대신, 물결표(
~
)를 사용하여 객체 핸들이 함수에 사용되지 않음을 나타낼 수 있습니다. 객체 핸들 대신 물결표를 사용하면 사용되지 않은 변수에 대한 경고가 발생하지 않습니다.기본 템플릿에 기본적으로 포함되어 있는 메서드 중 사용되지 않은 메서드를 제거합니다.
더 많은 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
참고 항목
stepImpl
| getNumInputsImpl
| getNumOutputsImpl
| matlab.System