赞
踩
MATLAB中的数据拟合算法
所谓数据拟合是求一个简单的函数,,不要求通过已知的这些点,而是要求在整体上逼近原函数。这时,在每个已知点上就会有误差,数据拟合就是从整体上使误差,尽量的小一些。也就是说,数据拟合的目的是使用一个较为简单的函数去逼近一个复杂的、未知的函数,从而可以对较为复杂的,庞大的数据进行分析。
对于MATLAB中的数据拟合,实际上可分为线性拟合与非线性拟合。
对于线性拟合,已知如下图像的x,y坐标,x = [1.0, 1.5, 2.0, 2.5, 3.0],y = [0.9, 1.7, 2.2, 2.6, 3.0]用一条直线去拟合下列散点。
拟合后的图像如下:
也就是说应用一条较为简单的函数可以使数据较好的分布在函数两端,且误差较小。
而对于非线性拟合,:已知如下图像的x,y坐标,x = [1.0, 1.5, 2.0, 2.5, 3.0],y = [0.9, 1.7, 2.2, 2.6, 3.0],用形如a*x+b*sin(x)+c的曲线去拟合下列散点。
指数的非线性拟合(通常可用于对人口数据)
对数函数的非线性拟合
对数函数的非线性拟合
令x1=log(x); y1=log(y)
总而言之,可以把一组数据以一个较为简单的函数相似的表示出来(当然要求近似度高)从而更好的分析研究数据。
而对于插值这种数据处理方法,插值是在一组已知数据点的范围内添加新数据点的技术。可以使用插值来填充缺失的数据、对现有数据进行平滑处理以及进行预测等。MATLAB 中的插值技术可分为适用于网格上的数据点和散点数据点。从数学上来说,数据插值是一种函数逼近的方法。
常用的插值方法:拉格朗日多项式插值、牛顿插值、分段线性插值、Hermite 插值和三次样条插值。
实际来说,MATLAB中的插值函数为interp1,其调用格式为: yi= interp1(x,y,xi,'method')
其中x,y为插值点,yi为在被插值点xi处的插值结果;x,y为向量, 'method'表示采用的插值方法,MATLAB提供的插值方法有几种: 'method'是最邻近插值, 'linear'线性插值; 'spline'三次样条插值; 'cubic'立方插值.缺省时表示线性插值
注意:所有的插值方法都要求x是单调的,并且xi不能够超过x的范围。
例如:在一 天24小时内,从零点开始每间隔2小时测得的环境温度数据分别为
12,9,9,10,18 ,24,28,27,25,20,18,15,13,
推测中午12点(即13点)时的温度.
x=0:2:24;
y=[12 9 9 10 18 24 28 27 25 20 18 15 13];
a=13;
y1=interp1(x,y,a,'spline')
结果为: 27.8725
下面是一些常用的命令:
命令1 interp1
功能 一维数据插值(表格查找)。该命令对数据点之间计算内插值。它找出一元函数f(x)在中间点的数值。其中函数f(x)由所给数据决定。
命令2 interp2
功能 二维数据内插值(表格查找)
命令3 interp3
功能 三维数据插值(查表)
命令4 interpft
功能 用快速Fourier 算法作一维插值
命令5 griddata
功能 数据格点
命令6 spline
功能 三次样条数据插值
命令7 interpn
功能 n 维数据插值(查表)
命令8 meshgrid
功能 生成用于画三维图形的矩阵数据。等等,这些命令在插值中起到了重要的作用。
撰稿:王路博
编辑:徐沛毅
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。