exponenta event banner

Обработать настроенные свойства

В этом примере показано, как указать действие, выполняемое при изменении значения настраиваемого свойства во время моделирования.

processTunedPropertiesImpl метод полезен для управления действиями по предотвращению дублирования. Во многих случаях изменение одного из нескольких взаимозависимых свойств вызывает действие. С помощью processTunedPropertiesImpl можно управлять тем, когда это действие выполняется, чтобы оно не повторялось без необходимости.

Управление созданием таблицы подстановки

Этот пример processTunedPropertiesImpl вызывает pLookupTable регенерируется, если NumNotes или MiddleC изменения свойств.

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
    endend

Полный файл определения класса с настроенной обработкой свойств

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

См. также