matlab 中的计时器可以产生一个单独的线程来等待,可以解决需要从当前 matlab 实例外部查看的问题。我们可以设置计时器来检查调试模式是否处于活动状态以及是否要执行某些操作。
检查调试模式是否处于活动状态以及是否处于活动状态的示例函数:
function mycallbackfunction(~,~)
if feature('IsDebugMode') % undocumented thanks to CatzLoveJazz
load handel
sound(y,Fs)
前两行是一个引人注目的示例,其他可能性是使用beep
、写入文件或运行任何命令或函数。
evalin('base','stop(timerHandle)') % stop the timer
end
end
可以修改此功能以评估“注意力抓取”一次,然后在调试模式不再处于活动状态时重置。目前它依赖于停止然后手动重新启动计时器。
(注意:以前的版本有一个 else 但是这是多余的,因为它不会在工作区繁忙时运行)
现在创建计时器对象。
timerTic=4; % how often the timer checks
timerHandle = timer();
timerHandle.startDelay = timerTic;
timerHandle.Period = timerTic;
timerHandle.ExecutionMode = 'fixedRate';
timerHandle.TasksToExecute = inf;
timerHandle.TimerFcn = @mycallbackfunction;
并开始计时通话
start(timerHandle)
运行吸引注意力的线路后,计时器将自动停止。如果从未进入调试模式,计时器将继续运行,需要手动停止stop(timerHandle)
请记住在清除变量之前运行delete(timerHandle)
一次完成以删除对象timerHandle