options = optimset('Display','iter','MaxIter',3,'OutputFcn',@outfun);
[x,fval,~,output] = fminsearch(@(param) esm6(param,identi),result(k,1:end-1),options);
此代码将找到我的 esm6 函数的本地最小值,并且由于“显示”选项,它将输出这样的字符串
迭代函数计数 min f(x) 过程
0 1 36.9193
1 5 35.9815 初始单纯形
2 7 35.4924 内部合约
3 9 35.4924 内部合约
4 11 33.0085 展开
所以在命令窗口中,我得到了每个迭代步骤的函数计数。由 fminsearch 创建的结构output
中只有 func-count 的总量。有没有办法接收在命令窗口中输出的所有信息,也在输出结构中?
编辑:
我认为我非常接近解决方案。我写了这个输出函数:
function stop = outfun(x,optimvalues,state);
stop = false;
if state == 'iter'
history = evalin('base','history');
history = [history; optimvalues.iteration optimvalues.funcCount];
assignin('base','history',history);
end
end
由于http://de.mathworks.com/help/matlab/math/output-functions.html这应该可以工作,但事实上,matlab 告诉我,
???引用不存在的字段“funcCount”。
任何想法,为什么会发生这种情况?