matlab 求拟合直线的斜率_从零开始的matlab学习笔记——(24)曲线拟合

matlab应用——求极限,求导,求积分,解方程,函数绘图,三维图像,拟合函数....更多内容尽在个人专栏:matlab学习

才发现这个数据插值的返回值不是个函数表达式,是一系列点集,不能使用polyval函数预测值。


上一节我们说了数据插值,这一节我们再说一个差不多的东西,叫曲线拟合

曲线拟合:

先看一下百度百科的定义:

曲线拟合(curve fitting)是指选择适当的曲线类型来拟合观测数据,并用拟合的曲线方程分析两变量间的关系。

主要方法就是我们高中学过的最小二乘法

我们先生成一系列离散数据点:

x=1790:10:2010

y=[3 5 7 9 12 13 15 16 18 21 23 37 24 29 30 28 33 34 36 38 39 44 42]

plot(x,y,'r.')

c1a4acb745e322fe2a75fe83fc5b1af8.png

polyfit函数:

polyfit函数用于进行曲线拟合,调用格式和插值函数interp1相似

polyfit(x,y,n),

x,y构成离散数据点(x,y),n则是设定用n次多项式进行拟合,比如n=3就是用最高三次多项式进行拟合。

现在对上面的离散数据点进行拟合:

x=1790:10:2010

y=[3 5 7 9 12 13 15 16 18 21 23 37 24 29 30 28 33 34 36 38 39 44 42]

f=polyfit(x,y,3) %用f记录拟合后的函数

x1=1790:0.2:2010 %重新定义自变量x1

y1=polyval(f,x1) %重新定义因变量y1

plot(x,y,'r*',x1,y1,'b')

为了区分,这里plot函数把原来的数据点也画进去:

e5b55383a01ec67e0ba568c1a2901951.png

这里我们还可以预测后面的数据

比如要求2020年的数据:

ans=polyval(f,2020)

结果就是:

9c50f336ca6e9dc913cb58a29d56e957.png

这里简单说一说数据插值和曲线拟合的异同

同:两者都是函数逼近的方法,都可以对未知数据点进行合理的预测,但都会有一定的误差

异:插值需要的数据点相比曲线拟合较少

插值要求函数必须经过所有已知数据点,拟合不需要

最后再补充一点,可能会有知友发现插值和拟合的多项式函数都采用三次多项式。

首先,次数低于3,多项式拟合程度较差,不容易进行准确的拟合和插值

其次,多项式函数并非越高越好,这里有个Runge现象,即多项式函数次数越高,越容易产生振荡而偏离原函数,使得误差增大

到这里我们简单梳理了插值和拟合两种函数处理方式,下一节的内容暂定,我们可能要再回到符号计算。

欢迎喜欢的朋友点赞关注收藏啊:)

  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值