有没有办法在matlab中进行毫秒级延迟?
Is there a way to do a millisecond level delay in matlab?
帮助'PAUSE'说
PAUSE(n) pauses for n seconds before continuing, where n can also be a
fraction. The resolution of the clock is platform specific. Fractional
pauses of 0.01 seconds should be supported on most platforms.
但在我的例子中,pause(0.01) 根本不做任何事情(pause、pause(n) 和整数 n 有效)
有没有办法在matlab中实现毫秒级别的延迟(50ms,100~500ms)延迟?
Matlab 版本为
MATLAB Version 7.9.0.529 (R2009b)
64 位 Windows 10 64 位家庭版
我看到两个选项。我们称它们为 循环选项 和 本机选项 。第一个只是使用 while 循环来检查是否已经达到您想要的等待时间。您可以使用 MATLAB 的秒表计时器 tic
and toc
来完成此操作。这是正常时间(不是 CPU 时间)。当您编写一个以最大速度运行的循环时,您可能会遇到 CPU-使用率很高的情况,但如果只持续几毫秒,这应该没问题。
%% looping
% desired time to wait
dt_des = 0.001; % 1 ms
% initialize clock
t_st = tic;
% looping
while toc(t_st) < dt_des
end
% read clock
toc(t_st)
本机选项 正在使用 pause
(确保您已使用 pause('on')
启用它一次)。根据您的问题,我假设这并不总是有效——但是,它在我的系统上有效(R2019b,windows 10)。
%% use pause()
tic
pause(0.001)
toc
两者的结果是
Elapsed time is 0.001055 seconds.
Elapsed time is 0.001197 seconds.
它不太准确,但如果您在 PC 上调整数字,您可能会得到更好的结果。
你也可以使用
java.lang.Thread.sleep(10);
如果您使用的是旧版 matlab,请参阅讨论 here。
帮助'PAUSE'说
PAUSE(n) pauses for n seconds before continuing, where n can also be a
fraction. The resolution of the clock is platform specific. Fractional
pauses of 0.01 seconds should be supported on most platforms.
但在我的例子中,pause(0.01) 根本不做任何事情(pause、pause(n) 和整数 n 有效)
有没有办法在matlab中实现毫秒级别的延迟(50ms,100~500ms)延迟?
Matlab 版本为
MATLAB Version 7.9.0.529 (R2009b)
64 位 Windows 10 64 位家庭版
我看到两个选项。我们称它们为 循环选项 和 本机选项 。第一个只是使用 while 循环来检查是否已经达到您想要的等待时间。您可以使用 MATLAB 的秒表计时器 tic
and toc
来完成此操作。这是正常时间(不是 CPU 时间)。当您编写一个以最大速度运行的循环时,您可能会遇到 CPU-使用率很高的情况,但如果只持续几毫秒,这应该没问题。
%% looping
% desired time to wait
dt_des = 0.001; % 1 ms
% initialize clock
t_st = tic;
% looping
while toc(t_st) < dt_des
end
% read clock
toc(t_st)
本机选项 正在使用 pause
(确保您已使用 pause('on')
启用它一次)。根据您的问题,我假设这并不总是有效——但是,它在我的系统上有效(R2019b,windows 10)。
%% use pause()
tic
pause(0.001)
toc
两者的结果是
Elapsed time is 0.001055 seconds.
Elapsed time is 0.001197 seconds.
它不太准确,但如果您在 PC 上调整数字,您可能会得到更好的结果。
你也可以使用
java.lang.Thread.sleep(10);
如果您使用的是旧版 matlab,请参阅讨论 here。