下面的程序包含一个timer
对象定义,后跟其start命令。然后程序继续执行其他语句。
我的问题是TimerFcn
是否会在0.01
秒后完全调用,还是会等到for-loop完成才能启动定时器回调函数?
% My timer object
t = timer('TimerFcn',@(x,y)G2(z), 'StartDelay',0.01);
start(t);
% Other program statements
for i=1:m
...
end
答案 0 :(得分:0)
底线是MATLAB实际上是单线程的。因此,如果当前正在执行长操作,则计时器回调将无法运行,并且根据计时器对象属性(请参阅BusyMode
),将事件添加到MATLAB最终将进入的队列中当它第一次有机会时......
根据我的理解(这是我自己的猜测),MATLAB timers可以在语句之间中断执行,但期间 。< / p>
所以理论上它应该在0.01秒之后运行,但是没有保证......
documentation说明如下:
注意:指定的执行时间和计时器的实际执行 可能会有所不同,因为计时器对象在MATLAB单线程中工作 执行环境。这个时间滞后的长度取决于 MATLAB正在执行的其他处理。强制执行 事件队列中的回调函数,包括对该函数的调用 您的代码中的drawow函数。 drawow函数刷新事件 队列中。
另一个doc page上还有这个说明:
注意:如果回调涉及CPU密集型任务(如更新数字),则可能会延迟回调函数执行。