查看Matlab计时器对象的开始时间

时间:2014-10-14 10:55:19

标签: matlab time timer

如何在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没有真正的帮助?

1 个答案:

答案 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