В этом примере показано, как задать действие, которое должно быть принято, когда значение настраиваемого свойства изменяется во время симуляции.
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