第3讲 插值拟合 Matlab课件
- 格式:ppt
- 大小:1.03 MB
- 文档页数:54
matlab插值与拟合
在MATLAB中,插值和拟合都是通过函数来实现的。
插值是通过创建新的数据点来填充在已知数据点之间的空白。
MATLAB提供了几种不同的插值方法,例如分段线性插值、三次样条插值、立方插值等。
具体使用哪种插值方法取决于数据的特性和所需的精度。
插值函数的一般形式是`interp1(x, y, xi, 'method')`,其中`x`和`y`是已知的数据点,`xi`是待插值点的横坐标向量,`method`是插值方法,例如最近邻点插值、线性插值、三次样条插值、立方插值等。
拟合是通过调整一个数学模型来使得该模型尽可能地接近给定的数据点。
在MATLAB中,可以使用`polyfit`函数进行多项式拟合。
该函数的一般形式是`p = polyfit(x, y, n)`,其中`x`和`y`是已知的数据点,`n`是多项式的阶数。
该函数返回一个向量`p`,表示多项式的系数。
可以使用`polyval`函数来评估这个多项式模型在给定数据点上的值。
需要注意的是,插值和拟合都是数学上的近似方法,它们只能尽可能地逼近真实的情况,而不能完全准确地描述数据的变化。
因此,选择合适的插值和拟合方法是非常重要的。
MATLAB 中的曲线拟合和插值在大量的使用领域中,人们经常面临用一个分析函数描述数据(通常是测量值)的任务。
对这个问题有两种方法。
在插值法里,数据假定是正确的,要求以某种方法描述数据点之间所发生的情况。
这种方法在下一节讨论。
这里讨论的方法是曲线拟合或回归。
人们设法找出某条光滑曲线,它最佳地拟合数据,但不必要经过任何数据点。
图11.1说明了这两种方法。
标有'o'的是数据点;连接数据点的实线描绘了线性内插,虚线是数据的最佳拟合。
11.1 曲线拟合曲线拟合涉及回答两个基本问题:最佳拟合意味着什么?应该用什么样的曲线?可用许多不同的方法定义最佳拟合,并存在无穷数目的曲线。
所以,从这里开始,我们走向何方?正如它证实的那样,当最佳拟合被解释为在数据点的最小误差平方和,且所用的曲线限定为多项式时,那么曲线拟合是相当简捷的。
数学上,称为多项式的最小二乘曲线拟合。
如果这种描述使你混淆,再研究图11.1。
虚线和标志的数据点之间的垂直距离是在该点的误差。
对各数据点距离求平方,并把平方距离全加起来,就是误差平方和。
这条虚线是使误差平方和尽可能小的曲线,即是最佳拟合。
最小二乘这个术语仅仅是使误差平方和最小00.20.40.60.81-2024681012xy =f (x )Second O rder C urv e Fitting图11.1 2阶曲线拟合在MATLAB 中,函数polyfit 求解最小二乘曲线拟合问题。
为了阐述这个函数的用法,让我们以上面图11.1中的数据开始。
» x=[0 .1 .2 .3 .4 .5 .6 .7 .8 .9 1]; » y=[-.447 1.978 3.28 6.16 7.08 7.34 7.66 9.56 9.48 9.30 11.2];为了用polyfit ,我们必须给函数赋予上面的数据和我们希望最佳拟合数据的多项式的阶次或度。
如果我们选择n=1作为阶次,得到最简单的线性近似。
Matlab 曲面插值和拟合插值和拟合都是数据优化的一种方法,当实验数据不够多时经常需要用到这种方法来画图。
在matlab中都有特定的函数来完成这些功能。
这两种方法的确别在于:当测量值是准确的,没有误差时,一般用插值;当测量值与真实值有误差时,一般用数据拟合。
插值:对于一维曲线的插值,一般用到的函数yi=interp1(X,Y,xi,method) ,其中method包括nearst,linear,spline,cubic。
对于二维曲面的插值,一般用到的函数zi=interp2(X,Y,Z,xi,yi,method),其中method也和上面一样,常用的是cubic。
拟合:对于一维曲线的拟合,一般用到的函数p=polyfit(x,y,n)和yi=polyval(p,xi),这个是最常用的最小二乘法的拟合方法。
对于二维曲面的拟合,有很多方法可以实现,但是我这里自己用的是Spline Toolbox里面的函数功能。
具体使用方法可以看后面的例子。
对于一维曲线的插值和拟合相对比较简单,这里就不多说了,对于二维曲面的插值和拟合还是比较有意思的,而且正好胖子有些数据想让我帮忙处理一下,就这个机会好好把二维曲面的插值和拟合总结归纳一下,下面给出实例和讲解。
原始数据x=[1:1:15];y=[1:1:5];z=[0.2 0.24 0.25 0.26 0.25 0.25 0.25 0.26 0.26 0.29 0.25 0.29;0.27 0.31 0.3 0.3 0.26 0.28 0.29 0.26 0.26 0.26 0.26 0.29;0.41 0.41 0.37 0.37 0.38 0.35 0.34 0.35 0.35 0.34 0.35 0.35;0.41 0.42 0.42 0.41 0.4 0.39 0.39 0.38 0.36 0.36 0.36 0.36;0.3 0.36 0.4 0.43 0.45 0.45 0.51 0.42 0.4 0.37 0.37 0.37];z是一个5乘12的矩阵。
3.3 插值与拟合的MATLAB实现简单的插值与拟合可以通过手工计算得出,但复杂的只能求助于计算机了。
3.3.1 线性插值在MATLAB 中,一维的线性插值可以用函数interpl 来实现。
函数interpl 的调用格式如下:yi = interpl ( x , y , xi ) ,其中yi 表示在插值向量xi 处的函数值,x 与y 是数据点。
这个函数还有如下两种形式:yi = interpl(y , xi),省略x,x 此时为l : N,其中N 为向量y 的长度。
yi = interpl(x , y , xi , method ) ,其中method 为指定的插值方法,可取以下凡种:nearest :最近插值。
linear :线性插值。
spline :三次样条插值。
cubic :三次插值。
注意:对于上述的所有的调用格式,都要求向量x 为单调。
例如:对以下数据点:( 2 * pi , 2 ) , ( 4 * pi , 3 ) , ( 6 * pi , 5 ) , ( 8 * pi , 7 ) , ( 10 * pi , 11 ) , ( 12 * pi , 13 ) , ( 14 * pi , 17) 进行插值,求x = pi , 6 的函数值。
>> x=linspace(0, 2 * pi, 8 );>> y=[2, 3, 5, 7, 11, 13, 17, 19 ];>> xl=[pi , 6 ];>> yl=interpl(x, y, xl)yl =90000 1836903.3.2 Lagrange 插值Lagrange 插值比较常用,是MATLAB 中相应的函数,但根据Lagrange 插值函数公式,可以用M 文件实现:Lagrange.mfunctions = Larange(x, y, x0 )% Lagrange 插值,x 与y 为已知的插值点及其函数值,x0 为需要求的插值点的值nx = length( x );ny = length( y );if nx ~=nywaming( ‘向量x 与y 的长度应该相同’)return;endm = length ( x0 ) ;%按照公式,对需要求的插值点向量x0 的元素进行计算for i = l: mt =0.0;for j = l : nxu = 1.0;for k = l : nxif k~=ju=j * ( x0( i )-x ( k ) ) / ( x( j )-( k ) ) ;endendt = t + u * y( j );ends( i ) = t ;endreturn例如:对(l , 2 ) , ( 2 , 4 ) , ( 3 , 6 ) , ( 4 , 8 ) , ( 5 , 10 ) 进行Lagrange 插值,求x = 23 , 3.7 的函数值。
MATLAB拟合和插值定义插值和拟合:曲线拟合是指您拥有散点数据集并找到最适合数据⼀般形状的线(或曲线)。
插值是指您有两个数据点并想知道两者之间的值是什么。
中间的⼀半是他们的平均值,但如果你只想知道两者之间的四分之⼀,你必须插值。
拟合我们着⼿写⼀个线性⽅程图的拟合:y=3x^3+2x^2+x+2⾸先我们⽣成⼀组数据来分析:x=-5:0.5:5;e=50*rand(1,length(x))-25;%制造[-25,25]的随机数作为误差y=3*x.^3+2*x.^2+x+2+e;%得到y值plot(x,y,'.')x =Columns 1 through 6-5.0000 -4.5000 -4.0000 -3.5000 -3.0000 -2.5000Columns 7 through 12-2.0000 -1.5000 -1.0000 -0.5000 0 0.5000Columns 13 through 181.0000 1.50002.0000 2.50003.0000 3.5000Columns 19 through 214.0000 4.50005.0000y =Columns 1 through 6-350.0110 -248.6360 -169.3421 -89.5653 -88.2298 -57.7238Columns 7 through 12-32.5505 2.3308 11.5861 9.0123 -0.4538 5.7254Columns 13 through 18-2.1840 30.3596 20.4478 73.2138 88.1756 152.0492Columns 19 through 21236.2809 334.3864 411.0563这时候x,y作为已知数据存在,要求我们拟合x,y的散点图,这时候会⽤到这个函数。
语法p = polyfit(x,y,n)[p,S] = polyfit(x,y,n)[p,S,mu] = polyfit(x,y,n)说明p = polyfit(x,y,n) 返回阶数为 n 的多项式 p(x) 的系数,该阶数是 y 中数据的最佳拟合(在最⼩⼆乘⽅式中)。