如何用Matlab进行指定函数的曲线拟合
在学习的过程中,我们经常需要对一些离散数据进行指定函数的曲线拟合吗,来验证一些理论推理,下面我将为大家示范如何使用Matlab进行指定函数的曲线拟合。
操作方法
- 01
我们通过阻尼振荡实验中测得离散数据来进行示范,数据如下: x=[0 0.4 1.2 2 2.8 3.6 4.4 5.2 6 7.2 8 9.2 10.4 11.6 12.4 13.6 14.4 15]'; y=[1 0.85 0.29 -0.27 -0.53 -0.4 -0.12 0.17 0.28 0.15 -0.03 -0.15 -0.071 0.059 0.08 0.032 -0.015 -0.02]'; 我们先通过散点图来观察其大致规律:
- 02
由上面的散点图可知,其对应的函数形式为下图所示:
- 03
接下我们采用这个函数模型对上面的离散数据进行曲线拟合,代码如下: syms t f=fittype('a*cos(k*t)*exp(w*t)','independent','t','coefficients',{'a','k','w'}); cfun=fit(x,y,f) %显示拟合函数,数据必须为列向量形式 xi=0:0.1:20; yi=cfun(xi); figure plot(x,y,'r*',xi,yi,'b-'); title('拟合函数图形'); figure plot(x,sqrt(y-yi(1:1:18,:).^2/18),'r*'); title('标准误差图'); 运行结果如下:
- 04
由上面的拟合函数图形和标准误差图形可知,拟合函数给出了数据的大致趋势,结果很好,下面再给出几个参数值与对应参数的置信区间;
- 05
细心的网友可能看到命令窗口中给出的Warning,其实,因为我们三个参数a,k,w三个参数的初始值未给出导致,因此如果拟合结果不是十分理想,可以多运行几次。
- 06
最后,我们对上述Matlab代码所出现的一些函数进行大致介绍,如果想要详细介绍请参考Matlab说明文档。 %自定义拟合函数,在使用时直接模仿下面的参数填写即可 f=fittype('a*cos(k*t)*exp(w*t)','independent','t','coefficients',{'a','k','w'}); %根据自定义的拟合函数来拟合数据x,y,注意数据必须为列向量形式 cfun=fit(x,y,f)