속성 특성 정의하기
속성에 세부 정보를 추가하는 속성 특성은 속성에 대한 제어 계층을 제공합니다. MATLAB® 속성 특성 및 속성 유효성 검사 외에 System object는 Nontunable
또는 DiscreteState
를 사용할 수 있습니다. 여러 특성을 지정하려면 특성을 쉼표로 구분하십시오.
속성을 조정 불가형으로 지정하기
기본적으로 모든 속성은 조정 가능형으로, 속성 값이 언제든지 변경될 수 있다는 것을 의미합니다.
데이터 처리가 시작된 후 알고리즘이 상수 값에 의존하는 경우 속성에 대한 Nontunable
특성을 사용합니다. 속성을 조정 불가형으로 정의하면 변경되는 값이 있는지 확인하거나 그러한 값에 반응할 필요가 없으므로 알고리즘의 효율성을 높일 수 있습니다. 코드 생성 시, 속성을 조정 불가형으로 정의하면 해당 속성과 관련된 메모리를 최적화할 수 있습니다. 입력 포트 개수 또는 출력 포트 개수에 영향을 미치는 모든 속성을 조정 불가형으로 정의해야 합니다.
참고
핸들 클래스인 MATLAB System object™가 객체의 조정 불가형 속성으로 할당된 경우에는 matlab.System
객체의 속성에 대한 변경 사항을 감지할 수 없습니다. matlab.System
객체에 대한 값 클래스 속성 변경 사항은 감지할 수 있습니다. 조정 불가형 matlab.System
속성은 한 핸들 클래스에서 다른 핸들 클래스로 변경될 경우에 감지됩니다.
System object를 사용할 경우 객체를 호출하기 전이나 release
함수를 호출한 후에만 조정 불가형 속성을 변경할 수 있습니다. 예를 들어, InitialValue
속성을 조정 불가형으로 정의하고 그 값을 0으로 설정합니다.
properties (Nontunable)
InitialValue = 0;
end
속성을 DiscreteState로 지정하기
알고리즘에서 상태를 유지하는 속성을 사용하는 경우 이 속성에 DiscreteState
특성을 할당할 수 있습니다. 사용자가 getDiscreteState
를 호출하면 이 특성이 있는 속성은 getDiscreteStateImpl
을 통해 자신의 상태 값을 표시합니다. DiscreteState
특성을 가진 속성에는 다음 제한 사항이 적용됩니다.
숫자형 값, 논리값 또는 fi 값임(단, 스케일링된 배정밀도 fi 값은 아님)
Nontunable
,Dependent
,Abstract
,Constant
특성이 없음디폴트 값이 없음
퍼블릭으로 설정할 수 없음
기본적으로
GetAccess = Public
임속성을 이산 상태로 정의하는 경우
saveObjectImpl
또는loadObjectImpl
을 사용하여 객체를 수동으로 저장하거나 덮어쓸 필요가 없습니다.
예를 들어, Count
속성을 이산 상태로 정의합니다.
properties (DiscreteState)
Count;
end
사용자 지정 속성 삽입
사용자 지정 속성 대화 상자를 사용하면 사용자가 선택한 특성을 갖는 새 속성을 정의할 수 있습니다. 사용자 지정 속성을 추가하려면 편집기 툴스트립에서 속성 삽입 드롭다운을 선택하고 사용자 지정 속성...을 선택하십시오. 이 대화 상자에서 사용자 지정 속성에 대한 속성 액세스 및 System object 특성과 MATLAB 속성 특성을 설정할 수 있습니다.
액세스
액세스 | 설정 | 설명 |
---|---|---|
SetAccess 와 GetAccess | public | 동일한 System object나 이를 참조하는 또 다른 System object의 다른 코드에서 속성에 액세스할 수 있습니다. |
protected | 동일한 System object의 코드나 서브클래스의 코드에서만 속성을 사용할 수 있습니다. | |
private | 동일한 System object의 코드에서만 속성에 액세스할 수 있습니다. | |
immutable | 이 속성값은 System object를 만드는 경우에만 설정할 수 있습니다. 사용자가 속성값은 변경할 수 없습니다. 이 설정은 |
System object 특성(Attribute)
특성 | 설명 |
---|---|
Logical | 속성값을 논리형 스칼라 값으로 제한합니다. 논리값으로 변환할 수 있는 모든 스칼라 값도 유효합니다(예: 0 또는 1). |
Nontunable | 시스템이 실행 중인 동안에는 속성값을 변경할 수 없습니다. |
DiscreteState | 상태 값을 유지합니다. |
PositiveInteger | 속성값을 양의 정수 값으로 제한합니다. |
MATLAB 속성 특성(Attribute)
특성 | 설명 |
---|---|
Constant | 이 속성은 모든 클래스 인스턴스에서 동일한 값을 가집니다. |
Hidden | 이 속성은 속성 목록에 표시되지 않습니다. |
Dependent | 이 속성값은 객체에 저장되지 않습니다. set 함수와 get 함수는 속성 이름을 사용하여 객체에 대한 인덱스를 지정하는 방식으로 속성에 액세스할 수 없습니다. |
선택한 특성들로 속성을 만들려면 삽입을 클릭하십시오. MATLAB 편집기가 속성을 코드에 삽입합니다.
다양한 속성 특성을 가진 예제 클래스
이 예제에서는 속성 특성을 설정하는 조정 불가형 속성 두 개, 이산 상태 속성 한 개 및 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