Main Content

調整されたプロパティの処理

この例では、シミュレーション中に調整可能なプロパティの値が変更された場合に実行されるアクションの指定方法を示します。

processTunedPropertiesImpl メソッドは重複を回避するようにアクションを管理する場合に役に立ちます。相互依存する複数のプロパティではその多くの場合、1 つの変更がアクションを引き起こします。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

参考