MATLAB:如何在时间计算器程序中包含均值和最小值

MATLAB: How to include mean and minimum in time calculator program

我怎样才能得到我的刺激时间的平均值而不是列出所有的 100 个刺激时间进行手动计算?

           function [time] = Babtime(n)
           N = 100;
           t = zeros(N,1);
           for k = 1:N
           tic;
           Bab(n);
           Stimulationtime=toc

此外,如果我不手动检查下面代码的 1000 个输出时间中的最小值,我如何才能获得最短刺激时间

               function [time] = Haldtime(n)
               N = 1000;
               t = zeros(N,1);
               for k = 1:N
               tic;
               Hald(n);
               Stimulationtime=toc

谢谢

将目录值存储在一个数组中,然后使用最小值。对于您的代码,您似乎已经创建了存储时间值的数组(数组 t):

function [time] = Haldtime(n)
N = 1000;
t = zeros(N,1);
for k = 1:N
    tic;
    Hald(n);
    t(k)=toc;
end
disp(min(t));
time=min(t);

当然,如果您想要平均值(这更有用),请将 min 替换为 mean

为了使它更方便,让您使用具有任意数量的输入参数和可变数量的 运行 循环的任何函数,您可以将您的计时器函数修改为以下内容:

function [times, t_min, t_mean] = myTimer(funcH, sampling, varargin)
times = zeros(sampling, 1);
for ii = 1:sampling
    tic;
    funcH(varargin{:});
    times(ii) = toc;
end
t_min = min(times);
t_mean = mean(times);

那么你可以简单地使用这个函数来计算运行不同函数的时间。对于您的示例,它将是:

[~, tmin, tavg] = myTimer(@Bab, 100, n);

[T, tmin, tavg] = myTimer(@Hald, 1000, n);

请注意,在第二个示例中,所有 运行 次都保存在 T 中,因此稍后您可以计算除最小值和平均值之外的不同统计数据。

看看 profile 可能也很有用。