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

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

See Also

processTunedPropertiesImpl