В этом примере показано, как задать действие, которое должно быть принято, когда значение настраиваемого свойства изменяется во время симуляции.
The processTunedPropertiesImpl метод полезен для управления действиями для предотвращения дублирования. Во многих случаях изменение одного из нескольких взаимозависимых свойств вызывает действие. С processTunedPropertiesImpl метод, можно управлять, когда это действие принято, так что оно не повторяется без необходимости.
Этот пример processTunedPropertiesImpl вызывает pLookupTable будет регенерирован, когда либо NumNotes или MiddleC изменения свойств.
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 endend
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