Main Content

조정된 속성 처리하기

이 예제에서는 시뮬레이션 중에 조정 가능형 속성값이 변경될 경우 수행할 동작을 지정하는 방법을 보여줍니다.

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

참고 항목