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