雨下的芭蕉
2024-06-07 10:14:27
在学习的过程中,我们经常需要对一些离散数据进行指定函数的曲线拟合吗,来验证一些理论推理,下面我将为大家示范如何使用Matlab进行指定函数的曲线拟合。
操作方法
我们通过阻尼振荡实验中测得离散数据来进行示范,数据如下: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]'我们先通过散点图来观察其大致规律:
由上面的散点图可知,其对应的函数形式为下图所示:
接下我们采用这个函数模型对上面的离散数据进行曲线拟合,代码如下:syms tf=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);figureplot(x,y,'r*'xi,yi,'b-');title('拟合函数图形');figureplot(x,sqrt(y-yi(1:1:18,).^2/18),'r*');title('标准误差图');运行结果如下:
由上面的拟合函数图形和标准误差图形可知,拟合函数给出了数据的大致趋势,结果很好,下面再给出几个参数值与对应参数的置信区间;
细心的网友可能看到命令窗口中给出的Warning,其实,因为我们三个参数a,k,w三个参数的初始值未给出导致,因此如果拟合结果不是十分理想,可以多运行几次。
最后,我们对上述Matlab代码所出现的一些函数进行大致介绍,如果想要详细介绍请参考Matlab说明文档。%自定义拟合函数,在使用时直接模仿下面的参数填写即可f=fittype('a*cos(k*t)*exp(w*t)''independent''t''coefficients'{'a''k''w'});%根据自定义的拟合函数来拟合数据x,y,注意数据必须为列向量形式cfun=fit(x,y,f)