1

我想在方程上拟合两个参数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); 

我将如何通过测量的向量?

4

1 回答 1

1

使用这样的匿名函数:

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

显然你必须调整你的目标函数来接受参数,即fit_simp变成fit_simp(y)

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

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

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

尝试

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

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

于 2013-01-25T11:52:15.693 回答