有没有人知道我应该在MATLAB中使用什么命令来确定使用FMINSEARCH运行Nelder-Mead算法所花费的总计算机时间,直到它停止为止。 TQ
答案 0 :(得分:3)
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
优于使用tic
和toc
,这是因为timeit
中的内部操作说明了MATLAB的细微差别。
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