matlab 指数曲线拟合:y=a*exp((t-b)^2/c)

t=[219,222,223,226,229,233];y=[352,2353,3513.6303,3521];
求解系数a,b,c

clear
t=[219 222 223 226 229];%你给的数据有问题,请自行调整
y0=[352 2353 3513 6303 3521];
y1=ones(size(y0),1);
y1=log(y0);%对原方程两边取对数
p=polyfit(t,y1,2);%p为拟合多项式的系数,降幂排列
c=1/p(1);%把取对数后的式子整理一下,就可以得到abc跟p的对应关系
b=-p(2)*c/2;
a=exp(p(3)-b^2/c);
a
b
c
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-12-31
定义拟合函数:
function s=hansh(x,r)
a=x(1);
b=x(2);
c=x(3);
s=a*exp((r-b)^2/c);
主函数:
t=[219 222 223 226 229 233];
y=[352 2353 3513 6303 3521 3300]; %你的数据少个y
x0=[1 1 1]; %对a,b,c赋初值
[x,resnorm]=lsqcurvefit(@hansh,x0,t,y) %最小二乘曲线拟合
第2个回答  2010-12-31
同意二楼做法,应该使用最佳平方逼近,但你的数据好像有问题啊