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

<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
    end
end


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



  • 12
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值