保存在fminsearch的每次迭代中在函数中计算的值

时间:2015-12-11 08:12:36

标签: matlab fminsearch

我想使用

找到函数的最小值
[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'。

的参数

0 个答案:

没有答案