如何在Matlab中查看和修改计时器对象的开始时间?我能得到的最接近的是计时器对象的“StartDelay”元素:
all_timers = get(timerfind);
其中返回的结构数组的每个元素都是一个计时器对象。结构的各种元素是(例如):
AveragePeriod: NaN
BusyMode: 'drop'
ErrorFcn: ''
ExecutionMode: 'singleShot'
InstantPeriod: NaN
Name: 'timer-1'
ObjectVisibility: 'on'
Period: 1
Running: 'on'
StartDelay: 7.200175000000000e+003
StartFcn: ''
StopFcn: ''
Tag: ''
TasksExecuted: 0
TasksToExecute: Inf
TimerFcn: @myFcn
Type: 'timer'
UserData: []
根据:
http://www.mathworks.co.uk/help/matlab/ref/timer-class.html
“StartDelay”是:大于或等于0的数字,指定定时器启动和TimerFcn中指定的函数的第一次执行之间的延迟(以秒为单位)。
但除非我知道计时器对象何时启动/创建/启动,否则StartDelay没有真正的帮助?
答案 0 :(得分:0)
startFun
可用于评估计时器启动时的功能,该功能可将开始时间存储在计时器的userData
中
定义一个函数,例如;
function myStartFcn(hTimer,~)
hTimer.UserData = now;
end
并将其设置为计时器的startFcn
hTimer = timer();
hTimer.StartFcn = @myStartFcn
userData
是一个有用的字段,我们可能希望将它用于许多事情,在这种情况下,将其作为一个结构并将其设置为字段会更好。 now
也提供了可能不理想的datenum格式,clock
是另一种可能性;
function myStartFcn(hTimer,~)
tempStruct = hTimer.UserData;
tempStruct.startTime = clock;
hTimer.UserData = tempStruct;
end
当计时器停止并以秒为单位存储上次运行时间时,可能还需要清除它
function myStopFcn(hTimer,~)
tempStruct = hTimer.UserData;
tempStruct.lastRunTime = etime(clock,tempStruct.startTime)
tempStruct.startTime = []
hTimer.UserData = tempStruct;
end