调用函数中的MATLAB tic / toc

时间:2018-12-06 01:11:23

标签: matlab timer

在MATLAB中,我想给其他人编写的函数计时,他们的函数可能在内部使用tic / toc。我需要自己的tic / toc。但是,如果内部函数调用tic,则外部定时器将重置。

如何避免这种情况?我不想使用timeit,因为timeit会多次调用内部函数,这是我不希望的。

MWE:

外部脚本:

tic

inner_function()

elapsed_time = toc;

fprintf('Function took %f seconds\n', elapsed_time)

内部功能:

function [] = inner_function()

    pause(2)

    tic
    toc

end

然后:

>> outer_script
Elapsed time is 0.000024 seconds.
Function took 0.000232 seconds

如果您将tic中的toc / inner_function()注释掉,您会得到这个,这正是我想要的:

>> outer_script
Function took 2.000362 seconds

仅需更多上下文,外部脚本就是我的,我用它来测试学生编写的功能。我想允许他们使用tic / toc,但是他们希望在代码中使用它们,但是我也希望能够独立地计时他们的代码。

1 个答案:

答案 0 :(得分:6)

您可以通过将tic调用分配给变量来实现。稍后将所需的计时器作为参数提供给toc

function [] = inner_function()    
    pause(2)    
    tic
    toc    
end

运行修改后的示例,

clock2 = tic;
inner_function()
elapsed_time = toc(clock2);
fprintf('Function took %f seconds\n', elapsed_time)
Elapsed time is 0.000009 seconds.
Function took 2.009997 seconds