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