Main Content
Process Tuned Properties
This example shows how to specify the action to take when a tunable property value changes during simulation.
The processTunedPropertiesImpl
method is useful for managing actions to
prevent duplication. In many cases, changing one of multiple interdependent properties
causes an action. With the processTunedPropertiesImpl
method, you can
control when that action is taken so it is not repeated unnecessarily.
Control When a Lookup Table Is Generated
This example of processTunedPropertiesImpl
causes the
pLookupTable
to be regenerated when either the
NumNotes
or MiddleC
property changes.
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
Complete Class Definition File with Tuned Property Processing
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