主要内容

rateControl

以固定的频率执行循环

描述

rateControl对象使您能够以固定的频率运行循环。它还收集关于循环迭代时间的统计信息。使用等待在循环中暂停代码执行,直到下一个时间步。循环每期望期几秒,除非包含的代码需要更长的时间来操作。对象使用OverrunAction属性以确定它如何处理较长的循环操作时间。默认设置,“滑”,立即执行循环ifLastPeriod大于期望期.使用“下降”导致等待方法等待,直到下一个的倍数期望期,以执行下一个循环。

提示

操作系统的调度分辨率和其他系统活动的级别会影响速率执行精度。因此,对于MATLAB的执行,准确的速率定时被限制在100hz®代码。要提高性能和执行速度,可以使用代码生成。

创建

描述

例子

rateObj= rateControl (desiredRate创建一个对象,该对象根据您的系统时间以固定的速率操作循环,并直接设置DesireRate财产。

属性

全部展开

循环的期望执行速率,指定为以Hz为单位的标量。当使用等待,循环每小时运行一次DesiredRate几秒,除非循环需要更长的时间。然后,它开始基于指定的下一个循环OverrunAction

执行之间所需的时间段,以秒为单位指定为标量。此属性等于DesiredRate

自构造或重置以来经过的时间,指定为以秒为单位的标量。

最近两次调用之间经过的时间等待,指定为标量。默认情况下,LastPeriod设置为直到等待是第一次打电话第一次打电话之后,LastPeriod=TotalElapsedTime

方法处理溢出,指定为以下字符向量之一:

  • “下降”-等待下一个时间间隔等于的倍数期望期

  • “滑”-立即再次执行循环

每个代码段调用等待在执行结束时。

对象的功能

等待 暂停代码执行以达到预期的执行速率
统计数据 统计过去的执行周期
重置 重置对象

例子

全部折叠

创建运行在1hz的速率对象。

r = rateControl (1);

开始一个循环使用rateControl对象内部以控制循环执行。在循环执行之前重置对象以重置计时器。打印迭代和经过的时间。

重置(右)i = 1:10 time = r.TotalElapsedTime;流('迭代:%d-经过的时间:%f\n',我等待,时间)(r);结束
迭代:1-运行时间:0.003428迭代:2-运行时间:1.008492迭代:3-运行时间:2.001464迭代:4-运行时间:3.001801迭代:5-运行时间:4.003319迭代:6-运行时间:5.001040迭代:7-运行时间:6.002202迭代:8-运行时间:7.000384迭代:9-运行时间:8.001155迭代开:10-经过的时间:9.001238

每次迭代以1秒为间隔执行。

创建一个rateControl用于在20 Hz下运行的对象。

r = rateControl (20);

启动一个回路并使用rateControl对象

i=1:30%你的密码在这里等待(r);结束

得到循环操作后的对象统计信息。

统计=统计(右)
统计=结构体字段:周期:[0.0751 0.0269 0.0497 0.0512 0.0523 0.0449 0.0501…]数值周期:30平均周期:0.0500标准偏差:0.0065数值周期:0

创建一个rateControl用于在20 Hz下运行的对象。

r = rateControl (2);

启动一个回路并使用对象

i=1:30%你的密码在这里等待(r);结束

显示rateControl循环操作后的对象属性。

disp(右)
rateControl属性:DesiredRate: 2 DesiredPeriod: 0.5000 OverrunAction: 'slip' TotalElapsedTime: 15.0106 LastPeriod: 0.5000

重置对象以重启时间统计。

重置(r);disp(右)
rateControl属性:DesiredRate: 2 DesiredPeriod: 0.5000 OverrunAction: 'slip' TotalElapsedTime: 0.0029 LastPeriod: NaN

兼容性考虑

全部展开

未来版本中的行为改变

介绍了R2016a