拟合(后附MATLAB程序)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
拟合
一 拟合
(1)概念
已知离散数据m i y x i i ,,2,1),,( =,找出一个函数)(x f y =,使得函数在i x 处的数值最接近原始数据i y 的过程,就是拟合。
函数的数值和原始数值的接近程度用误差函数表示:
∑∑==-==m
i i i m i i
y x f 1212
2))((δδ 通过这种度量衡量接近程度的求拟合函数的方法,称为拟合曲线的最小二乘法。 拟合的工作就是找一个可以用来做拟合的函数,并求得使得2
δ最小的该函数的参数。 (2)求拟合函数的步骤
Step1:利用MATLAB 做原始数据的散点图
Step2:根据散点图的趋势确定拟合函数的类型,如:多项式函数,指数函数,三角函数 Step3:用最小二乘法确定拟合函数的系数
Step4:对比原始数值和拟合出来的函数数值,若差别较大,回到Step2
(3)拟合的应用
拟合曲线在实际中有广泛应用,特别在实验、统计等方面。通常,有一组实验活观测取得的数据,通过这些数据的散点图确定拟合函数的类型。确定好拟合函数可以对数据进行分析,也可以用来做预测。
(4)实例
实例一:多项式拟合的MATLAB 实现
clear all;clc;close all;
%多项式拟合
%数据我自己产生了,用时只需要用你要拟合的原始数据替换我的产生的两个向量
x1=rand(1,30);
x=sort(x1);
p1=[1 3 2 4];
y=polyval(p1,x);
%已经成功产生数据(x,y),向量x和向量y,
p=polyfit(x,y,4);%p为多项式的降幂系数
y0=polyval(p,x);%y0是多项式函数值
plot(x,y,'p',x,y0,'r')%把原始数据和拟合数据作图对比
实例二:指数拟合
如果发现散点图上的数据趋势和指数的趋势相同,可做指数拟合,下面给出两种常用的方式方式一:把数据做对数变化,做线性拟合,求出拟合函数的系数
clear all;clc;close all;
%******************************
%求指数拟合方法之一就是做对数变化
%lny=bx+a
%则最终的拟合函数是 y=exp(a)*exp(bx)
x1=rand(1,30);
x=sort(x1);
y=exp(x);%x,y为原始数据
y1=log(y)%做对数变化
p=polyfit(x,y1,1);%p为多项式的降幂系数
y0=polyval(p,x);%y0是多项式函数值
plot(x,y1,'p',x,y0,'r')%把原始数据和拟合数据作图对比
方式二:用非线性拟合函数lsqcurvefit 做,具体实现如下
clear all;clc;close all;
x1=rand(1,30);
x=sort(x1);
y=exp(x);%x,y为原始数据
zhishu=inline('a(1)+exp(a(2)*x)','a','x');
a=lsqcurvefit(zhishu,[0.1 0.1],x,y);
plot(x,y,'p',x,zhishu(a,x),'r')
(5)拟合工具箱
在MA TLAB命令窗口输入cftool可开启拟合工具箱,下图是MA TLAB 2014a版本的拟合工具箱初始界面。
把原始数据(x,y)别人在X data和Y data中选出来,这里必须是两个向量,在中间两个下拉选项中,上面的选择你要选择的拟合函数。在左下方会有拟合后的表达式,和一些参数指标。
举例如下: