我想将带有参数的函数传递给另一个以函数处理程序(指针)作为参数的函数,但其中一些函数处理程序的参数需要固定。在MATLAB中如何实现这一点?
具体来说,我想使用
具体来说,我想使用
fminsearch(fun,x0)
最小化函数h(eta)
。一个明显的问题是,如果我将所有参数都传递给x0
,它将最小化所有参数,但这不是我想要做的。我真正想做的是:
我尝试了以下方法,就我测试的范围而言似乎有效:function [ h ] = function_returner( x )
%
t = -10000;
h = @(eta)-10*x + t + eta^2;
end
和测试它的脚本:
h = function_returner(0);
h(3) %-9991
[x,fval,exitflag] = fminsearch(h,[10]) %returns [0, -10000, 1]
返回正确的最小值以及获得最小值的正确x值。我想确保的是在返回函数处理器后,固定的h
变量确实保持不变。也就是说,如果h
被传递,如何确保变量不会因为进入具有与函数处理器中相同变量名称的环境而改变值?
我还写道:
x = inf;
t = inf;
eta = inf;
h = function_returner(0);
h(3) %-9991
[x,fval,exitflag] = fminsearch(h,[10]) %returns [0, -10000, 1]
看起来它没有受到影响(即它按照我想要的方式工作)。但为了安全起见,我希望这不是某种奇怪的边缘情况,导致它无法正常工作。