我想使用
找到函数的最小值[x,fval] = fminsearch(@(param) esm6(param,identi),result(k,1:end-1),options)
现在,对于每个迭代步骤,我想要一些函数' esm6'计算保存在数组中。我尝试了以下方法: 在我编写的函数的第一行
identi.sim.i_optiIter = identi.sim.i_optiIter + 1;
有一个迭代变量来计算fminsearch的迭代步骤。后来为了抓住我需要的价值
identi.sim.guete_werte.gew(identi.sim.i_optiIter,:,:) = y_sim;
identi.sim.guete_werte.ungew(identi.sim.i_optiIter,:,:) = y_sim_ungew;
并确保我在下一个函数调用中使用了identi-struct的新值,我在函数的末尾写了这个:
assignin('base','identi',identi);
现在不幸的是,它没有做我想做的事。任何人都可以帮我这个吗?
编辑:
我使用输出功能再次尝试它。我像这样扩展我的选项:
options = optimset('Display','iter','MaxIter',3,'OutputFcn',@outfun);
但现在的问题是,我无法弄清楚将这个问题放在哪里。 outfun看起来像这样:
function stop = outfun(x,optimvalues,state,iteration,y_sim,y_sim_ungew)
stop = false;
if state == 'iter'
guete_werte.gew(iteration,:,:) = y_sim;
guete_werte.ungew(iteration,:,:) = y_sim_ungew;
end
end
现在问题是,我不能把它放在我调用fminsearch的文件中,因为那是一个脚本。如果我将输出函数放入单独的.m函数文件中,则无法访问esm6函数的变量。如果我将它添加到esm6-function文件中,matlab无法找到该函数并说
???使用==>时出错feval未定义的功能或方法' outfun'对于 输入类型' struct'。
的参数