필터 지우기
필터 지우기

Passing a parameters in MATLAB.

조회 수: 2 (최근 30일)
Ba Ba Black Sheep!
Ba Ba Black Sheep! 2017년 1월 3일
답변: Torsten 2017년 1월 3일
Suppose, I have the following functions:
function [f,g] = rosenbrockwithgrad(x, a, b)
% Calculate objective f
f = rosenbrock(x, a, b);
% gradient required
if nargout > 1
g = gradient(x);
end
end
function out = rosenbrock(x, a, b)
xx = x(1);
yy = x(2);
out = (1 - xx + a)^2 + 100*(yy - b - (xx-a)^2)^2;
end
I need to use them in the following routine,
function [x, fval, eflag, iter, fcount] =
Optimization_With_Analytic_Gradient(a, b, start_point)
x0 = start_point;
% inline function defitions
%fungrad = @(x)deal(fun(x),grad(x));
% options setup
options = optimoptions( 'fminunc', ...
'Display','off',...
'OutputFcn',@bananaout,...
'Algorithm','trust-region', ...
'GradObj','on');
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% calling fminunc
[x, fval, eflag, output] = fminunc(@rosenbrockwithgrad, x0, options);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
iter = output.iterations;
fcount = output.funcCount;
% plot window title
title 'Rosenbrock with Analytic Gradient...'
disp('Optimization_With_Analytic_Gradient...');
end
Note the use of fminunc().
So, How can I do that?
My code generates the following Error
>> main
Error using rosenbrockwithgrad (line 3)
Not enough input arguments.
Error in fminunc (line 271)
[f,GRAD] = feval(funfcn{3},x,varargin{:});
Error in Optimization_With_Analytic_Gradient (line 24)
[x, fval, eflag, output] = fminunc(@rosenbrockwithgrad, x0, options);
Error in main (line 53)
[x, fval, eflag, iter, fcount] = Optimization_With_Analytic_Gradient(a, b, starting_point);
Caused by:
Failure in initial user-supplied objective function evaluation. FMINUNC cannot continue.
>>

채택된 답변

Torsten
Torsten 2017년 1월 3일
[x, fval, eflag, output] = fminunc(@(x)rosenbrockwithgrad(x,a,b), x0, options);
Best wishes
Torsten.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Get Started with Optimization Toolbox에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by