속성값을 유한한 목록으로 제한하기
제한된 값 세트만 허용하는 System object™ 속성을 생성하려면 열거형 또는 속성 유효성 검사를 사용하면 됩니다.
Simulink®의 MATLAB System 블록에서 사용되는 System object의 경우, 열거형 또는 속성 유효성 검사를 사용할 수 있습니다. 열거형을 사용할 경우, 열거형 역시 Simulink.IntEnumType
에서 파생할 수도 있습니다. 이 유형의 열거형을 사용하여 사용자 지정 헤더 같은 특성을 MATLAB System 블록의 입력값이나 출력값에 추가할 수 있습니다. Use Enumerated Data in Simulink Models (Simulink)를 참조하십시오.
mustBeMember
를 사용한 속성 유효성 검사
속성 유효성 검사로 속성값을 제한하려면 mustBeMember
유효성 검사 함수를 사용하십시오.
이 예제에서는 값 solid
, dash
또는 dot
를 가질 수 있는 Style
속성을 정의합니다. 디폴트 값은 solid
이고 (1,1)
은 속성을 스칼라로 정의합니다.
properties Style (1,1) string {mustBeMember(Style, ["solid","dash","dot"])} = "solid"; end
matlab.system.mustBeMember
를 사용하십시오.properties Style (1,:) char {matlab.system.mustBeMember(Style, ["solid","dash","dot"])} = "solid"; end
열거형 속성
System object에서 열거형 데이터를 사용하려면 System object 클래스 정의에서 열거형을 속성으로 참조하고 별도의 클래스 정의 파일에 열거형 클래스를 정의하십시오.
열거형 속성을 생성하려면 다음이 필요합니다.
열거형 클래스로 설정한 System object 속성.
이 속성에 대해 가능한 모든 값을 정의하여 연결한 열거형 클래스 정의.
이 예제에서는 색상에 대한 System object 열거형 속성을 정의합니다. 열거형 클래스 ColorValues
의 정의는 다음과 같습니다.
classdef ColorValues < int32 enumeration blue (0) red (1) green (2) end end
ColorValues
클래스는 코드 생성 호환성을 위해 int32
에서 상속됩니다. 열거형 값은 유효한 MATLAB 식별자여야 합니다.System object에서 Color
속성은 blue
가 디폴트 값으로 설정된 ColorValues
객체로 정의됩니다. (1,1)
은 Color
속성을 스칼라로 정의합니다.
properties
Color (1, 1) ColorValues = ColorValues.blue
end
Whiteboard System object 생성하기
이 예제에서는 Whiteboard
System object™의 클래스 정의, 두 가지 유형의 유한한 목록 속성, 그리고 이 객체를 사용하는 방법을 보여줍니다. Whiteboard 객체를 실행할 때마다 이 객체는 화이트보드에 선을 그립니다.
Whiteboard
System object의 정의
type Whiteboard.m
classdef Whiteboard < matlab.System % Whiteboard Draw lines on a figure window % properties(Nontunable) Color (1, 1) ColorValues = ColorValues.blue Style (1,1) string {mustBeMember(Style, ["solid","dash","dot"])} = "solid"; end methods (Access = protected) function stepImpl(obj) h = Whiteboard.getWhiteboard(); switch obj.Style case "solid" linestyle = "-"; case "dash" linestyle = "--"; case "dot" linestyle = ":"; end plot(h, randn([2,1]), randn([2,1]), ... "Color",string(obj.Color), "LineStyle",linestyle); end function releaseImpl(~) cla(Whiteboard.getWhiteboard()); hold on end end methods (Static) function a = getWhiteboard() h = findobj('tag','whiteboard'); if isempty(h) h = figure('tag','whiteboard'); hold on end a = gca; end end end
System object를 생성합니다.
greenInk = Whiteboard; blueInk = Whiteboard;
색을 변경하고 파란색 선 스타일을 설정합니다.
greenInk.Color = "green"; blueInk.Color = "blue"; blueInk.Style = "dot";
몇 개의 선을 그립니다.
for i=1:3 greenInk(); blueInk(); end
화이트보드를 지웁니다.
release(greenInk); release(blueInk);
관련 항목
- 속성값 유효성 검사
- 열거형
- Code Generation for Enumerations (MATLAB Coder)