处理调整后的属性
此示例说明如何指定当可调属性值在仿真过程中更改时要执行的操作。
processTunedPropertiesImpl
方法对于管理操作以避免重复执行十分有用。在许多情况下,更改多个相互依赖的属性之一会导致执行某个操作。通过 processTunedPropertiesImpl
方法,您可以控制执行该操作的时间,以使其不会被不必要地重复执行。
控制生成查找表的时间
以下示例的 processTunedPropertiesImpl
将导致在 NumNotes
或 MiddleC
属性更改时重新生成 pLookupTable
。
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 end end
包含调整后的属性处理的完整类定义文件
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