Pause code execution to achieve desired execution rate
Run Loop at Fixed Rate
Create a rate object that runs at 1 Hz.
r = rateControl(1);
Start a loop using the
rateControl object inside to control the loop execution. Reset the object prior to the loop execution to reset timer. Print the iteration and time elapsed.
reset(r) for i = 1:10 time = r.TotalElapsedTime; fprintf('Iteration: %d - Time Elapsed: %f\n',i,time) waitfor(r); end
Iteration: 1 - Time Elapsed: 0.001485 Iteration: 2 - Time Elapsed: 1.001106 Iteration: 3 - Time Elapsed: 2.000637 Iteration: 4 - Time Elapsed: 3.000937 Iteration: 5 - Time Elapsed: 4.001071 Iteration: 6 - Time Elapsed: 5.001071 Iteration: 7 - Time Elapsed: 6.000925 Iteration: 8 - Time Elapsed: 7.000560 Iteration: 9 - Time Elapsed: 8.000385 Iteration: 10 - Time Elapsed: 9.000394
Each iteration executes at a 1-second interval.
Rate object, specified as a handle. This object
contains the information for the desired rate and other information about
the execution. See
rateControl (Navigation Toolbox) for more information.
numMisses — Number of missed task executions
Number of missed task executions, returned as a scalar.
waitfor returns the number of times the task was missed in
Rate object based on the
LastPeriod time. For example, if the desired rate is
1 Hz and the last period was 3.2 seconds,
Introduced in R2016a
rateControl (Navigation Toolbox)