我想在以下条件下计算Matlab代码的执行时间:我写了一个名为somecode
的Matlab函数,它有一个输入变量counter
。我想计算每个输入值的执行时间。最初,counter=20
和somecode
的输入因此是20.然后,counter
在每次迭代中增加20,直到达到500.我想知道{所用的时间}对于somecode
(20到500)的每个值,{1}}。
我在哪里需要使用counter
,tic
命令?
toc
请建议任何解决方案。 谢谢
答案 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