我想使用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);
我将如何传递测量的矢量?
答案 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)