非线性回归&优化

时间:2018-04-06 13:41:10

标签: matlab parameters curve-fitting nonlinear-optimization non-linear-regression

我需要一些帮助......我有一个模型功能:

function y = Surf(param,x);

global af1 af2 tData % A2 mER2 
A1 = param(1); m1 = param(2); A2 = param(3); m2 = param(4); 
m = param(5); n = param(6); 

k1 = @(T) A1*exp(mER1/T);
k2 = @(T) A2*exp(mER2/T);
af = @(T) sech(af1*T+af2);

y = zeros(length(x),1);
for i = 1:length(x)
    a = x(i,1); T = temperature(i,1);
    y(i) = (k2(T)+k1(T)*(a.^m))*((af(T)-a).^n);
end 

end

我有一套数据给出Cure,Cure_rate,Temperature。这些都在一个垂直列矩阵中。

基本上,我尝试使用:

[output,R1] = lsqcurvefit(@Surf, initial_guess, Cure, Cure_rate)
[output2,R2] = nlinfit(Cure,Cure_rate,@Surf,initial_guess)

而且它们的效果非常好,(我的initial_guess是上述模型中参数的初始猜测:[1.1e + 07 -7.8e + 03 1.2e + 06 -7.1e + 03 2.2 0.72]) p>

我的主要问题是,当我尝试研究可以进行非线性回归的不同方法时,例如fminsearch,fmincon,fsolve,fminunc等。他们只是不工作,我对我正在考虑的输入感到很困惑。主要是因为他们不像nlinfit和lsqcurvefit(C​​ure,Cure_rate的输入)一样工作,他们中的大多数只考虑了模型函数和初始猜测,我做了以上的方式:

output3 = fminsearch(@Surf,initial_guess)
output4 = fsolve(@Surf,initial_guess)
output5 = fmincon(@Surf,x0,A,b,Aeq,beq) 
(Not sure what should I put for Linear Inequality Constraint:
 A,b and Aeq,beq )
output6 = fminunc(@Surf,initial_guess)

问题是Matlab继续说我没有足够的输入或太多的输入而我没有得到它以及我应该如何将我的数据集包含在上述函数中的拟合函数(Cure,Cure_rate)中,例如在nlinfit中和lsqcurvefit?

0 个答案:

没有答案