将其他参数传递给fmincon

时间:2013-01-25 10:35:35

标签: matlab constraints curve-fitting data-fitting

我想使用fmincon在方程上拟合两个参数。我用lsqnonlin做到了,但我想利用fmincon的不等式约束。

问题在于我无法传递测量数据的两个向量,例如y(x)进入函数的方式与我在lsqnonlin中完成的方式相同。

我该怎么做?

estim = lsqnonlin(@fit_simp,X0,lb,ub,options,X,Y) %X,Y are the measured data in vectors, y(x)

estim = fmincon(@fit_simp,X0,[],[],[],[],[],[],nonlcon,options); 

我将如何传递测量的矢量?

1 个答案:

答案 0 :(得分:1)

使用这样的匿名函数:

estim = fmincon(@(y)fit_simp(y),X0,[],[],[],[],[],[],nonlcon,options); 

显然,您必须调整目标函数以接受参数,即fit_simp变为fit_simp(y)

这是直接来自文档,在此页面中搜索匿名:

http://www.mathworks.com/help/optim/ug/fmincon.html以及http://www.mathworks.com/help/optim/pass-extra-parameters.html

我刚刚在你的代码中看到你想要用两个额外的参数X和Y.你可能必须将这些参数封装在匿名函数的单个变量中(但也许你可以发送两个我不确定)

尝试

options.Y = Y;
options.X = X;

然后使用@(options)fit_simp(options)