Process Tuned Properties

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

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

Смотрите также