注册 登录
编程论坛 Matlab

一个比较复杂的非线性拟合,急用,谢谢大家帮忙!!!!!!

pp26boy 发布于 2008-09-28 20:51, 1064 次点击
我想要拟合着一个函数,L=C(1)*abs(cos(0.56*(t-11.867)))*(w-26)*(1-exp(-C(2))),
其中t,w为自变量,L为函数,
L=[7.589,9.793,9.362,10.482,11.488,10.281,8.101,9.388,10.347,7.049,7.551,4.930,6.339]
t=[8,9,10,11,12,13,14,15,16,17,18,19,20]
w=[33.7,34.5,35.3,35.1,36.2,36.1,36.3,36.6,36.1,36.0,32.0,26.9,26.2]
想要求C(1)和C(2)的值。
希望大家能帮帮我,我真的实在是不会了,找到了这个论坛,希望大家帮帮我!!!
1 回复
#2
meteora11062008-09-28 22:54
你这是二元函数的拟合呀,不过幸亏两个自变量的关系还比较好,可以帮你作。把二元化一元,即把abs(cos(0.56*(t-11.867)))*(w-26)看成一个自变量,用非线性拟合函数lsqcurvefit拟合出c,程序:
function [c,resnorm,residual]=hanshu

H=@myfun;
t=[8,9,10,11,12,13,14,15,16,17,18,19,20];
w=[33.7,34.5,35.3,35.1,36.2,36.1,36.3,36.6,36.1,36.0,32.0,26.9,26.2];
L=[7.589,9.793,9.362,10.482,11.488,10.281,8.101,9.388,10.347,...
    7.049,7.551,4.930,6.339];
x=abs(cos(0.56*(t-11.867))).*(w-26);%化一元函数
c0=[1 1];%c的猜测初值

options=optimset('TolFun',1e-30,'TolX',1e-16);%参数设置
[c,resnorm,residual]=lsqcurvefit(H,c0,x,L,-inf,inf,options);
%resnorm函数的残差平方和
%residual函数残差

%-------------------------------------------------------------------
%子函数
function f=myfun(c,x)

f=c(1)*x*(1-exp(-c(2)));
你根据你的问题选个比较合适的初值c0,可能给不同的初值结果不太一样
有什么细节问题再说
1