Matlab 使用tic/toc功能代替计时器
使用Matlab 使用tic/toc功能代替计时器,matlab,timer,counter,Matlab,Timer,Counter,使用timer对象变得太复杂了,尤其是当您必须使用多个计时器时,所以我试图考虑其他方法 我希望避免使用暂停,因为它会停止其他函数的执行。我曾想过使用tictoc函数来测量经过的时间,但我在下面编写的代码并没有像我预期的那样工作 time=tic; if(abs(toc(time)))==3 %% if 3 second past my function end 如何修改此代码,使其在3秒后执行命令?您需要一个while循环或一些东西来等待3秒的时间。 像这样的 time=tic; wh
timer
对象变得太复杂了,尤其是当您必须使用多个计时器时,所以我试图考虑其他方法
我希望避免使用暂停
,因为它会停止其他函数的执行。我曾想过使用tic
toc
函数来测量经过的时间,但我在下面编写的代码并没有像我预期的那样工作
time=tic;
if(abs(toc(time)))==3 %% if 3 second past
my function
end
如何修改此代码,使其在3秒后执行命令?您需要一个while循环或一些东西来等待3秒的时间。 像这样的
time=tic;
while 1
if(abs(toc(time)))==3 %% if 3 second past
my function
break;
end
end
如果要每3秒钟调用my function
,则应执行以下操作:
time=tic;
while 1
if mod((abs(toc(time))),3) == 0 %% if 3 second past
my function
end
end
请确保完成后,您有某种方式来告诉用户,然后中断while循环。您可以将其设置为>=而不是==。如果它没有准确的值,它将捕获它。TLDR;
tic
/toc
对和while
循环实际上与使用pause
没有什么不同,因为它们都会阻止任何其他功能的执行。您必须使用计时器
对象
更详细的解释
为了实现这一点,您需要使用
while
循环来监控所需的时间是否已过。此外,您还需要使用请标记语言。我假设Ruby?MATLAB,很抱歉,我总是忘记这不是MATLAB论坛供将来参考,不要把语言放在标题中,它增加了不必要的容量。把它作为一个标签,就像使用“timer”和“counter”一样。你应该真正使用timer
对象来正确地完成这项工作,特别是当你需要运行多个对象时。
function wait(time_in_sec)
tic
while toc < time_in_sec
end
% Do thing after 3 seconds
fprintf('Has been %d seconds!\n', time_in_sec)
end
wait(3)
wait(5)
function tmr = wait(time_in_sec)
tmr = timer('StartDelay', time_in_sec, ...
'ExecutionMode', 'SingleShot', ...
'TimerFcn', @(s,e)status(time_in_sec));
tmr.start()
function status(t)
fprintf('Has been %d seconds!\n', t);
end
end
wait(3)
wait(5) % Both will execute after 5 seconds
wait(3)
disp('Started 3 second timer')
wait(5)
disp('Started 5 second timer')