您好,欢迎来到九壹网。
搜索
您的当前位置:首页拟合(后附MATLAB程序)

拟合(后附MATLAB程序)

来源:九壹网


拟合

一 拟合

(1)概念

已知离散数据(xi,yi),i1,2,,m,找出一个函数yf(x),使得函数在xi处的数值最接近原始数据yi的过程,就是拟合。

函数的数值和原始数值的接近程度用误差函数表示:

(f(xi)yi)222ii1i1mm

通过这种度量衡量接近程度的求拟合函数的方法,称为拟合曲线的最小二乘法。

拟合的工作就是找一个可以用来做拟合的函数,并求得使得最小的该函数的参数。

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)拟合工具箱

在MATLAB命令窗口输入cftool可开启拟合工具箱,下图是MATLAB 2014a版本的拟合工具箱初始界面。

把原始数据(x,y)别人在X data和 Y data中选出来,这里必须是两个向量,在中间两个下拉选项中,上面的选择你要选择的拟合函数。在左下方会有拟合后的表达式,和一些参数指标。

举例如下:

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 91gzw.com 版权所有 湘ICP备2023023988号-2

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务