搜索你感兴趣的问题
Matlab曲线拟合fit命令1
要想成功必须强大 2024-06-04 13:11:30
推荐回答
要想成功必须强大 2024-06-07 10:14:37

Matlab中可以进行曲线拟合,之前的曲线拟合方式比较复杂,这是在2016中的拟合方式。主要介绍fit命令,它包含有二维数据拟合和三维数据拟合。

操作方法

给出一行数据,这里我们使用sin函数来进行数据拟合,人为的加入了一些噪声:aa = sin(0:0.05:pi);aa = aa+randn(1,63)/100;bb = 0:0.05:pi;plot(bb,aa,'bo');

然后就可以使用fit命令进行数据拟合了。ff = fit(bb,aa,'poly2');回车之后出现如下情况,数据报错。

原因比较简单,主要是需要列数据,而我们给出的是行数据。因此可以进行如下修改:aa = aa'bb = bb'ff = fit(bb,aa,'poly2');可以看到ff有三个参数,这主要是poly2起到了作用,意思是二阶拟合。

出现上述情况可以说明已经拟合成功,但是拟合的效果怎么样呢?plot(ff,bb,aa);看图来说,效果还不错。

我们可以计算一下它们之间的差值。cc = -0.4185*bb.^2+1.136*bb-0.05554;dd = cc-aa;plot(dd);std(dd)ans =0.1665

当然,后面的poly2也可以改成为poly10或者其他数值,后面的数值表示阶数,在比较简单的图形中,少量的阶数就可以很好的进行数据拟合,但是如果复杂的图形的话,就需要较多的阶数。比如还是以上图形,我们使用5阶;

将二阶和五阶的图形全部输入到figure中,我们再绘制一个sin图像,从0~pi。从图像可以看出,五阶的几乎与sin图像重合了。因此阶数越高,其函数拟合效果越好,当然计算所需的时间就会越长。

大家都关注
有问题 @爱问
Powered by iask.com