How can I pass extra parameters to an output function in the Optimization Toolbox?
2 次查看(过去 30 天)
显示 更早的评论
I'm trying to specify an output function in my optimization options as an anonymous function so as to pass additional parameters to it. My options structure is defined as follows:
options = optimset('outputfcn',@(x)outfun(x,extraArg),'display','iter',...
'Algorithm','active-set');
...
function stop = outfun(x,optimValues,state,extraarg)
...
...
end % nested function
As a result, I get the following error:
??? Error using ==> runfminsearch>@(x)myfunObj(x,k1,k2,k3)
Too many input arguments.
I need to pass additional arguments to an output function using an anonymous function.
采纳的回答
MathWorks Support Team
2011-1-26
An output function expects 3 input arguments:
stop = outfun(x, optimValues, state)
Thus, the anonymous function, which is the value of the 'OutputFcn' property in the call to OPTIMSET, should be defined as follows:
options = optimset('outputfcn',@(x,optimValues,state)outfun(x,optimValues,state,extraArg),'display','iter',...
'Algorithm','active-set');
That is, @(x,optimValues,state)outfun(x,optimValues,state,extraArg) instead of @(x)outfun(x,extraArg).
0 个评论
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Problem-Based Optimization Setup 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!