Process Tuned Properties - MATLAB & Simulink (original) (raw)
Main Content
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
- Complete Class Definition File with Tuned Property Processing
Control When a Lookup Table Is Generated
This example of processTunedPropertiesImpl
causes thepLookupTable
to be regenerated when either theNumNotes
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