조정된 속성 처리하기
이 예제에서는 시뮬레이션 중에 조정 가능형 속성값이 변경될 경우 수행할 동작을 지정하는 방법을 보여줍니다.
processTunedPropertiesImpl
메서드는 중복 방지를 위해 동작을 관리하는 데 유용합니다. 대부분의 경우, 여러 상호 종속적 속성 중 하나를 변경하면 특정 동작이 수행됩니다. processTunedPropertiesImpl
메서드를 사용하면 해당 동작이 불필요하게 반복되지 않도록 동작 수행 시기를 제어할 수 있습니다.
룩업 테이블이 생성되는 시기를 제어하기
이 processTunedPropertiesImpl
예제를 사용하면 NumNotes
또는 MiddleC
속성이 변경될 경우 pLookupTable
이 다시 생성됩니다.
methods (Access = protected) function processTunedPropertiesImpl(obj) propChange = isChangedProperty(obj,'NumNotes')||... isChangedProperty(obj,'MiddleC') if propChange obj.pLookupTable = obj.MiddleC *... (1+log(1:obj.NumNotes)/log(12)); end end end
조정된 속성을 처리하는 완전한 클래스 정의 파일
classdef TuningFork < matlab.System % TuningFork Illustrate the processing of tuned parameters % properties MiddleC = 440 NumNotes = 12 end properties (Access = private) pLookupTable end methods (Access = protected) function resetImpl(obj) obj.MiddleC = 440; obj.pLookupTable = obj.MiddleC * ... (1+log(1:obj.NumNotes)/log(12)); end function hz = stepImpl(obj,noteShift) % A noteShift value of 1 corresponds to obj.MiddleC hz = obj.pLookupTable(noteShift); end function processTunedPropertiesImpl(obj) propChange = isChangedProperty(obj,'NumNotes')||... isChangedProperty(obj,'MiddleC') if propChange obj.pLookupTable = obj.MiddleC *... (1+log(1:obj.NumNotes)/log(12)); end end end