MATLAB fminunc梯度历史

时间:2016-10-06 08:41:58

标签: matlab optimization

我正在分析MATLAB的fminunc函数的优化过程。

有没有办法在所有迭代中获得渐变值数组?

由于

1 个答案:

答案 0 :(得分:1)

是的,确实如此。应使用Output Function

function optim_test
    grad_array= []; % initial array size is unknown
    f= @(x)x(1).^2+x(2).^4; % just for example
    options= optimset('OutputFcn',@outfun); % set the output function
    x= fminunc(f,[1 1],options);
    disp(grad_array);

    function stop = outfun(x, optimValues, state)
        grad_array(end+1,:)= optimValues.gradient;
        stop= false;
    end
end