logo资料库

MATLAB指数拟合程序.doc

第1页 / 共5页
第2页 / 共5页
第3页 / 共5页
第4页 / 共5页
第5页 / 共5页
资料共5页,全文预览结束
(1)预处理数据为 ln y =ln a +b*x (2)用 polyfit 进行多项式拟合 例如 x=[1971:1990]; y=[8.5229 8.7177 8.9221 9.0859 9.2420 9.3717 9.4974 9.6259 9.7542 9.8705 10.0072 10.1654 10.3008 10.4357 10.5851 10.7507 10.9300 11.1026 11.2704 11.4333]; 用上面的指数函数进行拟合 程序如下: % % % % % % %----------------------- x=[1971:1990]; y=[8.5229 8.7177 8.9221 9.0859 9.2420 9.3717 9.4974 9.6259 9.7542 9.8705 10.0072 10.1654 10.3008 10.4357 10.5851 10.7507 10.9300 11.1026 11.2704 11.4333]; log_y=log(y); P=polyfit(x,log_y,1); logy1=P(1)*x+P(2); y1=exp(logy1); plot(x,y,x,y1,'*') % % % % % % %----------------------- 结果如下
1.2 包含非其次项 拟合模型为:y=a1+a2*exp(-a3*x) 现有 x=[0 1.001 1.999 3 4 5.021 6 6.995 8 9.002]; y=[15 13.869 12.515 11.514 10.647 9.895 9.244 8.679 8.189 7.764]; 对其用上述非其次指数函数拟合, 使用非线性回归函数 nlinfit.程序如下: % % % % % % %----------------------- x=[0 1.001 1.999 3 4 5.021 6 6.995 8 9.002]; 13.869 y=[15 7.764]; 12.515 11.514 10.647 9.895 9.244 8.679 8.189 myfun=inline('a(1)+a(2)*exp(-a(3)*x)','a','x') ; a = nlinfit(x,y,myfun,[15 10,1]) I=min(x):0.1:max(x); V=a(1)+a(2)*exp(-a(3)*I); plot(x,y,'o',I,V) legend('Y','V')
% % % % % % %----------------------- 注意:对于 a=nlinfit(x,y,myfun,a0)中关于 a0 初始值的选取还需要斟酌!!! 选取不当可能造成拟合程度不好…… 结果如下 1.3 多个指数项函数的拟合 拟合函数模型:y=a(1)*exp(a(2)*x)+a(3)*exp(a(4)*x) 程序如下: % % % % % % %----------------------- X=[0.490667 0.955333 1.544 1.940667 2.48 3.026667 3.966667 4.453333 5.073333 6.033333 7.04] Y=[253.3333 381 450 503.6667 532 520 489 481.3333 459 438.3333 422] myfun=inline('A(1)*exp(A(2)*x)+A(3)*exp(A(4)*x)','A','x') A = nlinfit(X,Y,myfun,[700 -0.01 -700 -1 ]) I=min(X):0.1:max(X);
V=A(1)*exp(A(2)*I)+A(3)*exp(A(4)*I); plot(X,Y,'o',I,V) legend('Y','V') % % % % % % %----------------------- 程序结果如下所示: 1.4 非其次项的多个指数项函数的拟合 拟合模型:y=a(1)+a(2)*exp(a(4)*x)+a(3)*exp(-a(4)*x) % % % % % % %----------------------- x=[10 12.5 15 17.5 20 22.5 25 27.5 30 32.5 35 37.5 40 42.5 45 47.5 50]; y=[62.1 77.3 92.5 104 112.9 121.9 125 129.4 134 138.2 142.3 143.2 144.6 147.2 147.8 149.1 150.9]; myfunc=inline('beta(1)+beta(2)*exp(beta(3)*x)+beta(4)*exp(-beta(5)*x) ','beta','x'); beta=nlinfit(x,y,myfunc,[0.5 0.5 0.5 0.5,0.5]); a=beta(1),k1=beta(2),k2=beta(4),m=beta(4) ,n=beta(5)
xx=min(x):max(x); yy=a+k1*exp(m*xx)+k2*exp(-n*xx); plot(x,y,'o',xx,yy,'r') % % % % % % %----------------------- 结果如下图所示: 由于蠕变效应,地震发生后,地表地形会发生蠕变。其蠕变曲线 (震后形变) 是可用非其次指数函数来描述。GPS 观测数据能够观测到震后形变。然而,其却 淹没在各种波动之中,其中包括固体潮,余震等。因此,需要对其进行拟合。 下面的程序读取某个文件夹下的 GPS 数据,并拟合其蠕变曲线(震后形变)。
分享到:
收藏