拟合(后附MATLAB程序)

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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中选出来,这里必须是两个向量,在中间两个下拉选项中,上面的选择你要选择的拟合函数。在左下方会有拟合后的表达式,和一些参数指标。

举例如下:

相关文档
最新文档