matlab - 在 MATLAB 中给定时间执行函数的最可靠方法

标签 matlab time delay

我需要在给定的延迟时间执行一个函数。假设我有一个向量 [0.5,1,0.6],我希望该函数在 0.5 秒后执行,然后在 1 秒后执行,最后在 0.6 秒后执行。

到目前为止,我已经尝试了暂停()的组合,但结果远不准确,我想在函数内部使用暂停,因此初始偏移量(及时)的处理可能很麻烦.

还有其他可能性可以做到这一点吗?如果误差幅度高达 10 毫秒,我并不关心。

谢谢

最佳答案

也许创建一个 timer 的数组singleShot 模式下的对象,其开始时间是根据延迟的累积总和计算的:

delays = [0.5, 1, 0.6];
startTimes = cumsum(delays);

timerFcn = @(~,thisEvent) disp([thisEvent.Type ' executed '...
     datestr(thisEvent.Data.time,'dd-mmm-yyyy HH:MM:SS.FFF')]);

for ii=1:numel(delays),
    T(ii) = timer('StartDelay',startTimes(ii),'TimerFcn',timerFcn,...
        'ExecutionMode','singleShot');
end

然后您可以同时启动所有计时器:

>> start(T); fprintf('Launching timers: %s\n',datestr(now,'dd-mmm-yyyy HH:MM:SS.FFF'))
Launching timers: 21-Mar-2014 12:14:46.780
TimerFcn executed 21-Mar-2014 12:14:47.280
TimerFcn executed 21-Mar-2014 12:14:48.280
TimerFcn executed 21-Mar-2014 12:14:48.880

这看起来相当准确。

现在,不要调用 disp 来打印日期和时间,而是启动您的函数。

编辑:不要忘记删除计时器 (delete(T)) 和/或停止它们,特别是如果计时器是在 GUI 中创建的,否则它们将继续运行。感谢您的提醒,@Daniel。

关于matlab - 在 MATLAB 中给定时间执行函数的最可靠方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22567228/

相关文章:

c++ - lsqnonlin(Matlab) 或 C++ 中的 SciPy 最小二乘法等价物

python - 如何使用 python 将矢量场应用于二维图像?

matlab - K-Means 的内部运算

linux - 将时间转换为 unix 时间戳

postgresql - 按时间范围聚合

延迟加载后 jQuery 淡入图像

c - 在C中读取Mat文件

swift - 如何 swift 开始和结束一周?

iphone - 缩短 UIScrollView 中的触摸延迟?

javascript - 如何使用 setTimeout/.delay() 等待字符之间的输入