이 페이지의 최신 내용은 아직 번역되지 않았습니다. 최신 내용은 영문으로 볼 수 있습니다.

속성값을 유한한 목록으로 제한하기

제한된 값 세트만 허용하는 System object™ 속성을 생성하려면 열거형을 사용합니다. MATLAB® 또는 Simulink®의 System object에서 열거형 데이터를 사용하려면 System object 클래스 정의에서 이러한 데이터를 참조하고 별도의 클래스 정의 파일에 열거형 클래스를 정의하십시오.

열거형에 대한 자세한 내용은 열거형 항목을 참조하십시오.

Simulink의 MATLAB System 블록에 사용하는 System object의 경우 Use Enumerated Data in Simulink Models (Simulink) 항목을 참조하십시오.

열거형 속성을 생성하려면 다음이 필요합니다.

  • 열거형 클래스로 설정한 System object 속성.

  • 이 속성에 대해 가능한 모든 값을 정의하여 연결한 열거형 클래스 정의.

열거형은 또한 Simulink.IntEnumType에서 파생할 수도 있습니다. 이 유형의 열거형을 사용하여 사용자 지정 헤더 같은 특성을 MATLAB System 블록의 입력값이나 출력값에 추가할 수 있습니다. Use Enumerated Data in Simulink Models (Simulink) 항목을 참조하십시오.

이 예제에서는 색상에 대한 System Object 열거형 속성을 정의합니다.

열거형 클래스 ColorValues의 정의는 다음과 같습니다.

classdef ColorValues < int32
    enumeration
        blue (0)
        red (1)
        green (2)
    end
end
ColorValues 클래스는 코드 생성 호환성을 위해 int32에서 상속됩니다. 열거형 값은 유효한 MATLAB 식별자여야 합니다.

Color라는 System Object 속성은 디폴트 값을 blue로 설정합니다. (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
    end

    methods (Access = protected)
        function stepImpl(obj)
            h = Whiteboard.getWhiteboard();
            plot(h, ...
                randn([2,1]), randn([2,1]), ...
                'Color',char(obj.Color));
        end
        
        function releaseImpl(obj)
            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';

몇 개의 선을 그립니다.

for i=1:3
  greenInk();
  blueInk();
end

화이트보드 지우기

release(greenInk);
release(blueInk);

관련 항목