小波函数的数据拟合方法

http://www.doc88.com/p-0804368854890.html
1.数据拟合的最小二乘法
目前,数据拟合的常用方
法是最小二乘法,而基函数多采用n次多项式、切比晓夫多项
式、Bernstein多项式等,由不同的基函数产生的拟合效果不同,
但计算过程稳定与否和拟合精度的高低是衡量基函数优劣的
主要标准。

应用函数
polyfit进行多项式拟合在做数据拟合时,选择合适的拟合数学公式是很重要的,Matlab的内置函数polyfit可计算数据的n 次最小二乘拟合多项式,其调用格式为A=polyfit(x,y,n),式中x 和y 分别为自变量和因变量,而n 为多项式的次数,而得到的 A 为多项式系数按降幂排列得出的行向量,可以使用 polyval()函数求取多项的值,n=1时就为线性拟合,多项式拟合是最简单且常用的方法。为确保多式拟合的有效性,以及控制误差积累,同时兼顾算法的复杂性,一般多以适当次数拟合为宜。
数据拟合是一种很重要的数据处理方法,多项式曲线拟合又是一种较为常用的数据拟合方法。当数据点较多时,多项式阶数很低,拟合精度和效果不是很理想。要提高拟合精度和效果就必须提高曲线阶数,但阶数太高又会带来计算上的复杂性及其他方面的不利。因此,如果只采用一种多项式曲线函数去拟合较多的数据点难以取得较好的拟合精度和效果。为有效地解决上述问题,一般采用分段曲线拟合。
先将样本点数据输入给 matlab工作空间,然后用多项式拟合函数去拟合数据,得到二次多项式系数矩阵 A
%多项式拟合函数实现数据拟合%
x=[110.3323,148.7328,178.064,202.8258033,224.7105,244.5711,262.908,280.045,296.204,311.5475];
y=[5,10,15,20,25,30,35,40,45,50];
A=polyfit(x,y,2);
z=polyval(A,x);
plot(x,y,'r*',x,z,'b');
legend('实验数据','二次拟合');

 
应用函数lsqcurvefit进行非线性数据拟合matlab的最优化工具箱中提供了内建函数lsqcurvefit,它是用来解决最小二乘曲线拟合的问题,要先定义 M 函数文件。该函数的调用格式为c=lsqcurvefit(Fun,a0,x,y),
其中:Fun为原型函数的 matlab表示,可以是 M 函数或匿名函数;a0为最优化的初值;x,y 为原始输入输出数据向量。
 假设由下面的语句生成一组数据x 和y
  ***x=0:0.1:10;
y=0.12*exp(-0.213*x)+0.54*exp(-0.17*x).sin(1.23*x);**
并已知该数据满足原型为
y(x)=a(1)*exp(-a(2)*x)+a(3)*exp(-a(4)*x).*sin(a(5)*x)
其中ai为待定系数。采用最小二乘曲线拟合的目的就是获得这些待定系数,使得目标函数的值为最小。由题意定义 M 函数如下:
function f=Example(a,x)
f=a(1)*exp(-a(2)*x)+a(3)*exp(-a(4)*x).*sin(a(5)*x)
由下面的语句得出待定系数向量为a=[0.12,0.213,0.54,0.17,1.23]
,还可以绘制出的拟合曲线与样本点,拟合精度很高

`%lsqcurvefit—-实现最小二乘曲线拟合%
x=0:0.1:10;
y=0.12*exp(-0.213*x)+0.54*exp(-0.17*x).*sin(1.23*x);
a0=[1 1 1 1 1];
a=lsqcurvefit(‘Example’,a0,x,y);
y1=a(1)*exp(-a(2)*x)+a(3)*exp(-a(4)*x).*sin(a(5)*x);
plot(x,y,’+’,x,y1);
legend(‘实验数据’,’二次拟合’);

图形界面拟合
除了直接通过命令方式进行曲线拟合外,也可以在曲线拟合的图形界面进行曲线拟合和工作分析。使用图形界面的曲线拟合方式,可以很好地完成曲线拟合和数据分析的工作和任务,并且更加直观。通过图形界面进行拟合后的数据结果同样保存在工作空间。在 Matlab中还提供了支持曲线拟合的图形用户界面.下面重新做例1来说明如何使用图形窗口拟合。
输入如下命令在工作空间创建x,y 实验向量,并画出实验数据波形,系统弹出图形显示窗口。选择 Tools/Basic Fitting菜单项
 x=[110.332 3 148.732 8 178.064 202.825 803 3 224.710 5 244.571 1 262.908 280.045296.204 311.547 5];
 y=[5
 10 15 20 25 30 35 40 45 50];
  plot(x,y)执行命令后,
所示的曲线拟合窗口。在该窗口中,可以选择曲线拟合的类型、是否显示方程、是否绘制残差,以及曲线拟合的结果。
**曲线拟合工具箱**cftool 拟合
MATLAB的曲线拟合工具箱有强大的图形拟合功能,它是一个可视化的图形界面。可以方便快捷 地 进 行 列 表 曲 线 拟 合.
在MATLAB命令窗口中输入以下语句,
x=0:0.1:10;
y=0.12*exp(-0.213*x)+0.54*exp(-0.17*x).*sin(1.23*x);
cftool
打开曲线拟合工具箱,利用
Xdata和 Ydata的下拉菜单读入数据x 和y单击“fitting“
按钮在“Fit Name”中输入“傅里叶逼近”,在“type of fit”
中选择“Fourier”傅里叶函数逼近。

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值