MATLAB中的几个时间计数器

时间:2011-02-02 11:14:24

标签: matlab

我有一个运行循环的程序我希望有两个时间计数器,一个用于循环,它将告诉我循环的一次迭代是如何进行的,一个是整个程序的一次。据我所知tictoc只能使用一次。

3 个答案:

答案 0 :(得分:32)

你只熟悉这个tic toc语法:

tic; someCode; elapsed = toc;

但还有另一种语法:

start = tic; someCode; elapsed = toc(start);

第二种语法进行相同的时间测量,但允许您同时运行多个秒表计时器。您将tic的输出分配给变量tStart,然后在调用toc时使用该变量。 MATLAB测量tic及其相关toc命令之间经过的时间,并以秒为单位显示经过的时间。此语法使您可以计时多个并发操作,包括嵌套操作的时间(matlab documentation of tic toc)。

以下是如何在您的情况下使用它。让我们说这是你的代码:

for i = 1:M
   someCode;
end

像这样插入tic和toc:

startLoop = tic;
for i = 1:N
   startIteration = tic;
   someCode;
   endIteration = toc(startIteration);
end
endLoop = toc(startLoop);

您还可以使用上面的语法创建一个向量,其中第i个元素是第i次迭代的时间度量。像这样:

startLoop = tic;
for i = 1:N
   startIteration(i) = tic;
   someCode;
   endIteration(i) = toc(startIteration(i));
end
endLoop = toc(startLoop);

答案 1 :(得分:2)

您可以使用tic和toc来计算嵌套操作的时间,从Matlab帮助中获取tic:

tStart=tic; any_statements; toc(tStart);进行相同的时间测量,但允许您同时运行多个秒表计时器。您将tic的输出分配给变量tStart,然后在调用toc时使用该变量。 MATLAB测量tic及其相关toc命令之间经过的时间,并以秒为单位显示经过的时间。此语法使您可以计时多个并发操作,包括嵌套操作的时间

答案 2 :(得分:1)

我现在无法尝试此操作,但如果将tic值存储到变量中,则应该能够使用多个toctic语句。

在此阅读Matlab's documentation,甚至还有关于嵌套它们的部分。这是一个粗略的例子:

tStartOverall = tic;

...

tStartLoop = tic;
<your loop code here>
tEndLoop = toc(tStartLoop);

...

tEndOverall = toc(tStartOverall);