如何确定在MATLAB中使用fminsearch时的总运行时间

时间:2013-02-07 08:49:56

标签: matlab fminsearch

有没有人知道我应该在MATLAB中使用什么命令来确定使用FMINSEARCH运行Nelder-Mead算法所花费的总计算机时间,直到它停止为止。 TQ

4 个答案:

答案 0 :(得分:3)

首先,您可以使用tic / toc指令检查计算时间。例如:

tic
x = fminsearch('x^2+x+2',10)
toc

其次,Nelder-Mead算法是一种无约束非线性优化算法,它以启发式方式迭代地向最小值方向发展。从我的角度来看,它可能会更慢,而不是找到一个“好”的最小值。因此,我建议你使用Quasi-Newton方法,比如BFGS。您只需使用函数fminunc

答案 1 :(得分:1)

如果您想对特定代码进行计时,可以使用

tic
% yourcode
toc

如果您无法编辑代码或想要检查函数的总运行时间,请尝试

help profile

答案 2 :(得分:0)

代码:

t=cputime; 
your_operation; 
cputime-t

返回您的进程花费的计算(CPU)时间。 Tic / toc命令返回经过的运行时间;这可能取决于同时使用CPU的其他程序。

答案 3 :(得分:0)

this answer中,函数timeit优于使用tictoc,这是因为timeit中的内部操作说明了MATLAB的细微差别。

根据documentation

  

timeit多次调用指定的函数,并计算   测量值的中位数。

请考虑从fminsearch文档中获取的示例。

% MATLAB R2018b
fun = @(x)100*(x(2) - x(1)^2)^2 + (1 - x(1))^2;
x0 = [-1.2,1];
[x,fval] = fminsearch(fun,x0);

RunTime = timeit(@() fminsearch(fh,x0));      % median runtime in seconds