如何计算变量输入的Matlab代码的执行时间?

时间:2016-02-19 12:18:59

标签: matlab

我想在以下条件下计算Matlab代码的执行时间:我写了一个名为somecode的Matlab函数,它有一个输入变量counter。我想计算每个输入值的执行时间。最初,counter=20somecode的输入因此是20.然后,counter在每次迭代中增加20,直到达到500.我想知道{所用的时间}对于somecode(20到500)的每个值,{1}}。 我在哪里需要使用countertic命令?

toc

请建议任何解决方案。 谢谢

1 个答案:

答案 0 :(得分:1)

作为一个初步想法,我会用for循环做这样的事情。它没什么特别的,但它应该给运行时提供一个想法。

% Create a vector for the entries of counter and for the runtimes.
% (Make them column vectors for displaying with table)
big_counter = (20:20:500)';
somecode_times = zeros(size(big_counter));

% Loop over the entries of counter
for ii = 1:length(big_counter)
  counter = big_counter(ii);
  tic;
  somecode(counter);
  % Save the runtime to somecode_times
  somecode_times(ii) = toc;
end

% Display the times in a table by uncommenting 
%table(big_counter, somecode_times)
% Otherwise show the results side by side
display([big_counter, somecode_times])

plot(big_counter, somecode_times,'+-')
xlabel 'counter'
ylabel 'time'
title 'time taken to run somecode(counter)'

示例输出:

   20.0000    0.0008
   40.0000    0.0017
   60.0000    0.0047
   80.0000    0.0072
  100.0000    0.0107
  120.0000    0.0186
  140.0000    0.0297
  160.0000    0.0496
  180.0000    0.0658
  200.0000    0.0949
  220.0000    0.1743
  240.0000    0.1734
  260.0000    0.2313
  280.0000    0.2767
  300.0000    0.3187
  320.0000    0.3959
  340.0000    0.4679
  360.0000    0.6698
  380.0000    0.7474
  400.0000    0.9920
  420.0000    0.9221
  440.0000    1.1148
  460.0000    1.2610
  480.0000    1.3960
  500.0000    1.6945

Example output plot for SO code