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

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

Была ли эта тема полезной?