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