MATLAB中如何用循环实现精确延时

来源:互联网 发布:bt下载软件 编辑:程序博客网 时间:2024/06/14 10:23

<span style="font-size: 12px; font-family: 'Source Code Pro', monospace; white-space: pre-wrap; background-color: rgb(255, 255, 255);"><span style="font-size:18px">    前面在用MATLAB控制硬件的时候,在每次采集的过程中需要等一段固定的时间再采集信号。所以这里就会需要用到延时函数来精确延时,首先想到的就是函数pause(time),但运行时发现错误,后来弄清楚了,pause的作用是暂停,而不是延时。在运行pause时,程序各个系统都暂停了,也要把我的采集硬件部分暂停,这就会产生冲突。</span></span><span style="font-size: 12px; font-family: 'Source Code Pro', monospace; white-space: pre-wrap; background-color: rgb(255, 255, 255);"><span style="font-size:18px">然后Google后,发现还有一个timer函数,查了help之后,发现这是一个定时触发器,每隔一定的时间,就会触发制定函数,也不符合我的要求。</span></span>

再想到既然查不到现成的函数,那就只能自己写一个循环函数来实现定时了。但如果只是单纯的指定循环多少次的话,这不能起到精确定时的作用,因为同样的代码,在不同的电脑状态和不同的配置的机器上跑出来的时间是不一样的,所以模糊大概定个时勉强还行,如果说精确定时到0.1秒什么的,肯定是不行的。

很明显这个思路里差一个指示时间的代码。联想到平时计算程序耗时,经常会用到tic,toc,其中tic表示开始时间,toc表示结束时间。那可不可以用他们来实现?随后我又仔细查了下MATLAB的help中tic和toc的用法,于是有了以下精确定时的程序:

tic;for t = 0.001:0.001:time    while toc < t    endend


其中,time表示定时时间,单位为s。语句t=0.001:0.001:time中的步长表示计时的精度,此处为0.001ms。经过运行,程序达到了精确计时的预期效果。



1 0
原创粉丝点击