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

속성 특성 정의하기

속성에 세부 정보를 추가하는 속성 특성은 속성에 대한 제어 계층을 제공합니다. MATLAB® 속성 특성 및 속성 유효성 검사 외에 System Object는 Nontunable 또는 DiscreteState를 사용할 수 있습니다. 여러 특성을 지정하려면 특성을 쉼표로 구분하십시오.

속성을 조정 불가형으로 지정하기

기본적으로 모든 속성은 조정 가능형으로, 속성 값이 언제든지 변경될 수 있다는 것을 의미합니다.

데이터 처리가 시작된 후 알고리즘이 상수 값에 의존하는 경우 속성에 대한 Nontunable 특성을 사용합니다. 속성을 조정 불가형으로 정의하면 변경되는 값이 있는지 확인하거나 그러한 값에 반응할 필요가 없으므로 알고리즘의 효율성을 높일 수 있습니다. 코드 생성 시, 속성을 조정 불가형으로 정의하면 해당 속성과 관련된 메모리를 최적화할 수 있습니다. 입력 포트 개수 또는 출력 포트 개수에 영향을 미치는 모든 속성을 조정 불가형으로 정의해야 합니다.

System object™를 사용할 경우 객체를 호출하기 전이나 release 함수를 호출한 후에만 조정 불가형 속성을 변경할 수 있습니다. 예를 들어, InitialValue 속성을 조정 불가형으로 정의하고 그 값을 0으로 설정합니다.

properties (Nontunable)
   InitialValue = 0;
end

속성을 DiscreteState로 지정하기

알고리즘에서 상태를 유지하는 속성을 사용하는 경우 이 속성에 DiscreteState 특성을 할당할 수 있습니다. 사용자가 getDiscreteState를 호출하면 이 특성이 있는 속성은 getDiscreteStateImpl을 통해 자신의 상태 값을 표시합니다. DiscreteState 특성을 가진 속성에는 다음 제한 사항이 적용됩니다.

  • 숫자형 값, 논리값 또는 fi 값임(단, 스케일링된 배정밀도 fi 값은 아님)

  • Nontunable, Dependent, Abstract, Constant 특성이 없음

  • 디폴트 값이 없음

  • 퍼블릭으로 설정할 수 없음

  • 기본적으로 GetAccess = Public

  • System object가 호출되면 setupImpl을 통해서만 설정되는 값임 (호출 순서 요약 항목 참조)

예를 들어, Count 속성을 이산 상태로 정의합니다.

properties (DiscreteState)
   Count;
end

다양한 속성 특성을 가진 예제 클래스

이 예제에서는 속성 특성을 설정하는 조정 불가형 속성 두 개, 이산 상태 속성 한 개 및 MATLAB 클래스 속성 유효성 검사를 보여줍니다.

classdef Counter < matlab.System
% Counter Increment a counter to a maximum value

  % These properties are nontunable. They cannot be changed 
  % after the setup method has been called or while the
  % object is running.
  properties (Nontunable)
      % The initial value of the counter
      InitialValue = 0
      % The maximum value of the counter, must be a positive integer scalar
      MaxValue (1, 1) {mustBePositive, mustBeInteger} = 3
  end
  
  properties
      % Whether to increment the counter, must be a logical scalar
      Increment (1, 1) logical = true
  end
   
  properties (DiscreteState)
      % Count state variable
      Count
  end
      
  methods (Access = protected)
      % Increment the counter and return its value
      % as an output
  
      function c = stepImpl(obj)
          if obj.Increment && (obj.Count < obj.MaxValue)
              obj.Count = obj.Count + 1;
          else
              disp(['Max count, ' num2str(obj.MaxValue) ' ,reached'])
          end
          c = obj.Count;
      end
      
      % Setup the Count state variable
      function setupImpl(obj)
          obj.Count = 0;
      end
      
      % Reset the counter to one.
      function resetImpl(obj)
          obj.Count = obj.InitialValue;
      end
  end
end

관련 항목