Matlab曲线拟合fit命令1
Matlab中可以进行曲线拟合,之前的曲线拟合方式比较复杂,这是在2016中的拟合方式。主要介绍fit命令,它包含有二维数据拟合和三维数据拟合。
操作方法
- 01
给出一行数据,这里我们使用sin函数来进行数据拟合,人为的加入了一些噪声: aa = sin(0:0.05:pi);aa = aa+randn(1,63)/100;bb = 0:0.05:pi;plot(bb,aa,'bo');
- 02
然后就可以使用fit命令进行数据拟合了。 ff = fit(bb,aa,'poly2'); 回车之后出现如下情况,数据报错。
- 03
原因比较简单,主要是需要列数据,而我们给出的是行数据。因此可以进行如下修改: aa = aa';bb = bb';ff = fit(bb,aa,'poly2'); 可以看到ff有三个参数,这主要是poly2起到了作用,意思是二阶拟合。
- 04
出现上述情况可以说明已经拟合成功,但是拟合的效果怎么样呢? plot(ff,bb,aa); 看图来说,效果还不错。
- 05
我们可以计算一下它们之间的差值。 cc = -0.4185*bb.^2+1.136*bb-0.05554; dd = cc-aa; plot(dd);std(dd) ans = 0.1665
- 06
当然,后面的poly2也可以改成为poly10或者其他数值,后面的数值表示阶数,在比较简单的图形中,少量的阶数就可以很好的进行数据拟合,但是如果复杂的图形的话,就需要较多的阶数。 比如还是以上图形,我们使用5阶;
- 07
将二阶和五阶的图形全部输入到figure中,我们再绘制一个sin图像,从0~pi。 从图像可以看出,五阶的几乎与sin图像重合了。因此阶数越高,其函数拟合效果越好,当然计算所需的时间就会越长。
赞 (0)