有没有人在这里得到了一个想法是什么命令,我应该在MATLAB中使用,以确定总的计算机时间运行Nelder-Mead算法使用FMINSEARCH,直到它停止。TQ
3zwjbxry1#
首先,您可以使用tic/toc指令检查计算时间。例如:
tic x = fminsearch('x^2+x+2',10) toc
其次,Nelder-Mead算法是一种无约束非线性优化算法,它以启发式方式迭代地向最小值前进。从我的Angular 来看,它可能会更慢,找不到一个‘好’的最小值。因此,我建议您使用拟牛顿方法,如BFGS。你只需要使用函数fminunc。
jhdbpxl92#
如果要对特定的代码段计时,可以使用
tic % yourcode toc
如果无法编辑代码或想要检查函数的总运行时间,请尝试
help profile
bakd9h0s3#
代码:
t=cputime; your_operation; cputime-t
返回进程花费的计算(CPU)时间。Tic/toc命令返回运行时间;这可能取决于同时使用CPU的其他程序。
xqk2d5yq4#
从this answer开始,函数timeit优于使用tic和toc,因为timeit中的内部操作考虑了MATLAB的细微差别。根据documentationtimeit多次调用指定的函数,并计算测量值的中值。考虑从fminsearch文档中获取的示例。
timeit
tic
toc
fminsearch
% MATLAB R2022a 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(fun,x0)); % median runtime in seconds
4条答案
按热度按时间3zwjbxry1#
首先,您可以使用tic/toc指令检查计算时间。例如:
其次,Nelder-Mead算法是一种无约束非线性优化算法,它以启发式方式迭代地向最小值前进。从我的Angular 来看,它可能会更慢,找不到一个‘好’的最小值。因此,我建议您使用拟牛顿方法,如BFGS。你只需要使用函数fminunc。
jhdbpxl92#
如果要对特定的代码段计时,可以使用
如果无法编辑代码或想要检查函数的总运行时间,请尝试
bakd9h0s3#
代码:
返回进程花费的计算(CPU)时间。Tic/toc命令返回运行时间;这可能取决于同时使用CPU的其他程序。
xqk2d5yq4#
从this answer开始,函数
timeit
优于使用tic
和toc
,因为timeit
中的内部操作考虑了MATLAB的细微差别。根据documentation
timeit
多次调用指定的函数,并计算测量值的中值。考虑从
fminsearch
文档中获取的示例。