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扩展
因此在命令窗口中,我得到每个迭代步骤的函数Count。由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'。
任何想法,为什么会这样?