有没有办法在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