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