《MATLAB的差值与曲线拟合PPT演示课件》由会员分享,可在线阅读,更多相关《MATLAB的差值与曲线拟合PPT演示课件(54页珍藏版)》请在金锄头文库上搜索。
1、MATLAB的差值与曲线拟合,MATLAB数据处理与应用2011-2012学年选修课,第八讲,王文健 ,SOUTHWEST JIAOTONG UNIVERSITY,2,主要内容,插值运算 曲线拟合 分段函数 拉格拉日插值 牛顿插值 Hermite插值,SOUTHWEST JIAOTONG UNIVERSITY,3,MATLAB插值与曲线拟合,简介 把试验数据绘制成图是点状分布,将这些点练成曲线,然后转化为有意义的数学函数,才能对数据做对比和分析 上述过程涉及插值(interpolation)和曲线拟合(curve-fitting) 插值过程中认为数据是准确的,求取描述点之间的数据 曲线拟合中,
2、假定已知曲线的规律,做曲线的最佳逼近,不需要经过所有数据点,SOUTHWEST JIAOTONG UNIVERSITY,4,MATLAB插值与曲线拟合,插值计算 假设试验得到一组数据形态为: f(xk);其中k=1,2,n;且x1=axn=c 如果某些点xi不属于上述的xi ,但是a=xi=c,要估计这些点的函数值f(xi)就需要做插值运算 根据原始数据所描述的函数的复杂程度,存在有: 一维插值 二维插值 Spline插值,SOUTHWEST JIAOTONG UNIVERSITY,5,MATLAB插值与曲线拟合,一维插值 一维插值可以是线性的,也可以是三次多项式或spline插值 一维线性插
3、值是假设两个数据中的变化为线性关系,因此可由已知点的坐标(f(a),a)和(f(c),c)计算b点的函数值f(b) 一维线性插值是最简单的插值,适用范围很小 可用较为复杂的三次多项式或spline来近似找到原函数f(x),SOUTHWEST JIAOTONG UNIVERSITY,6,MATLAB插值与曲线拟合,一维插值 MATLAB的一维插值函数为interp1(a,c,b)和interp1(a,c,b,method) 其中a,c为已知数据,而b为要插值的数据点,method为预先设定的插值方法,分别为线性(linear)、三次多项式(cubic)和spline 如果数据的变化较大,以spl
4、ine插值所形成的曲线最为平滑,效果最好 三次多项式所得的曲线平滑度介于linear和spline之间,SOUTHWEST JIAOTONG UNIVERSITY,7,MATLAB插值与曲线拟合,一维插值举例 假设汽车引擎在额定转速下温度与时间的测量值关系如下00; 120; 260; 368; 477; 5110;用一维插值法估计时间为2.6s和4.9s时的温度值。 分别用三种方法估计其值 x=0 1 2 3 4 5; y=0 20 60 68 77 110; y1=interp1(x,y,2.6) y2=interp1(x,y,2.6 4.9) y3=interp1(x,y,2.6 4.9
5、,cubic) y3=interp1(x,y,2.6 4.9,spline),SOUTHWEST JIAOTONG UNIVERSITY,8,MATLAB插值与曲线拟合,一维插值举例 画出插值后的时间与温度变化曲线图。 t=0 1 2 2.6 3 4 4.9 5; y1=0 20 60 64.8 68 77 106.7 110; y2=0 20 60 65.2 68 77 105.6 110; y3=0 20 60 67.3 68 77 105.2 110; plot(t,y1,t,y2,t,y3),SOUTHWEST JIAOTONG UNIVERSITY,9,MATLAB插值与曲线拟合,S
6、OUTHWEST JIAOTONG UNIVERSITY,10,MATLAB插值与曲线拟合,二维插值 假设试验所得到的一组数据形态为z=f(xk,yk),期中k=1,2,n;如果某些点(xi,yi)不属于上述点,要估计这些点的函数值f(xi,yi)就需要进行二维擦绘制运算,二维插值相当于二元函数运算 MATLAB中二维插值函数是interp2(x,y,z,xi,yi),期中xi,yi为要插值的数据点,x,y,z为已知数据 通过设定interp2(x,y,z,xi,yi,method)也可以设定不同的插值方法,有linear、cubic和spline三种,SOUTHWEST JIAOTONG U
7、NIVERSITY,11,MATLAB插值与曲线拟合,二维插值举例 假设汽车的引擎转速、温度与时间的测量值关系如下表,估计时间为2.6s和速度为2500r时的温度。,SOUTHWEST JIAOTONG UNIVERSITY,12,MATLAB插值与曲线拟合,二维插值举例 应用函数interp2函数分别用linear、cubic、spline来估计时间2.6s和转速2500r的温度值。 t=1 2 3 4 5; speed=2000 3000 4000; temp=20 110 176;60 180 220;68 240 349;77 310 450;110 405 503; temp1=in
8、terp2(speed,t,temp,2500,2.6) temp2=interp2(speed,t,temp,2500,2.6,cubic) temp3=interp2(speed,t,temp,2500,2.6,spline),SOUTHWEST JIAOTONG UNIVERSITY,13,MATLAB插值与曲线拟合,spline插值 函数spline有两种应用形式,spline(x,y,xi)和spline(x,y) spline(x,y,xi)与interp1(x,y,xi,spline)效果一样 举例 x=0 1 2 3 4 5; y=0 20 60 68 77 110; y1=s
9、pline(x,y,2.6) y1=spline(x,y,2.6,4.9),SOUTHWEST JIAOTONG UNIVERSITY,14,MATLAB插值与曲线拟合,spline插值 举例:在0,10区间上按正弦规律y=sin(x)取10个点yi,再在区间0,10上取41个点,以yi为已知数据,对这41个点做spline插值运算,得到函数值并绘图,比较其值与正弦波偏离程度。 x=0:10; y=sin(x); xx=0:0.25:10; yy=spline(x,y,xx); plot(x,y,o,xx,yy,xx,sin(xx);,SOUTHWEST JIAOTONG UNIVERSITY
10、,15,MATLAB插值与曲线拟合,SOUTHWEST JIAOTONG UNIVERSITY,16,MATLAB插值与曲线拟合,spline插值 采用一维线性插值运算 x=0:10; y=sin(x); xx=0:0.25:10; yy=interp1(x,y,xx); plot(x,y,o,xx,yy,xx,sin(xx);,SOUTHWEST JIAOTONG UNIVERSITY,17,MATLAB插值与曲线拟合,SOUTHWEST JIAOTONG UNIVERSITY,18,MATLAB插值与曲线拟合,spline插值 采用一维三次多项式插值运算 x=0:10; y=sin(x);
11、 xx=0:0.25:10; yy=interp1(x,y,xx,cubic); plot(x,y,o,xx,yy,xx,sin(xx);,SOUTHWEST JIAOTONG UNIVERSITY,19,MATLAB插值与曲线拟合,SOUTHWEST JIAOTONG UNIVERSITY,20,MATLAB插值与曲线拟合,spline插值 向量t=1900:10:1990,p=75.995 91.972 105.711 123.203 131.669 150.697 179.323 203.212 226.505 249.633表示从1900年到1990年人口普查的数字,利用spline插
12、值法预测2000年的人口数,并绘制人口变化趋势图。 t=1900:10:1990; p=75.995 91.972 105.711 123.203 131.669 150.697 179.323 203.212 226.505 249.633; y=spline(t,p,2000) plot(t 2000,p y,o),SOUTHWEST JIAOTONG UNIVERSITY,21,MATLAB插值与曲线拟合,SOUTHWEST JIAOTONG UNIVERSITY,22,MATLAB插值与曲线拟合,spline插值 画一个圆并在数据点y(:,2),y(:,6)处标上字母o。 x=pi*0
13、:0.5:2; y=0 1 0 -1 0 1 0;1 0 1 0 -1 0 1; pp=spline(x,y); yy=ppval(pp,linspace(0,2*pi,101);%计算分算函数的值 plot(yy(1,:),yy(2,:),-b,y(1,2:5),y(2,2:5),or),SOUTHWEST JIAOTONG UNIVERSITY,23,MATLAB插值与曲线拟合,SOUTHWEST JIAOTONG UNIVERSITY,24,MATLAB插值与曲线拟合,曲线拟合 曲线拟合(curve-fitting)顾名思义就是用近似的曲线方程来代表一组离散的数据 曲线拟合与插值有许多相
14、似之处,二者最大区别再于曲线拟合要找出一个曲线函数式,而插值仅求出与数据点对应的函数值而已 曲线拟合运用最小二乘法原理 如果拟合的曲线限定为多项式就称为多项式最小二乘法曲线拟合 MATLAB提供的曲线拟合有多项式最小二乘拟合、普通最小二乘拟合等,SOUTHWEST JIAOTONG UNIVERSITY,25,MATLAB插值与曲线拟合,线性回归 假设有一组数据形态为y=y(x),其中x=0 1 2 3 4 5,y=0 20 60 68 77 110,用一个最简单的方程式来表示这组数据,一阶线性方程式最简单 随意假设其方程式为y=20 x x=0 1 2 3 4 5; y=0 20 60 68
15、 77 110; y1=20*x sum_sq=sum(y-y1).2) plot(x,y1,x,y,o),title(Linear estimate),grid,SOUTHWEST JIAOTONG UNIVERSITY,26,MATLAB插值与曲线拟合,SOUTHWEST JIAOTONG UNIVERSITY,27,MATLAB插值与曲线拟合,线性回归 从图中看出,所假设的方程与实际数据的差距很大,从理论上讲,误差平方和最小才是代表数据的最佳方程式,以此标准寻找数据方程式的方法称为最小平方误差法或线性回归 MATLAB中的polyfit()函数提供了从一阶到高阶多项式的回归运算,语法为c
16、oef=polyfit(x,y,n),期中x、y为输入数据,n为多项式的阶数,coef为输出数组,数值为多项式的系数项,SOUTHWEST JIAOTONG UNIVERSITY,28,MATLAB插值与曲线拟合,线性回归 假设一组数据x=0 1 2 3 4 5和y=0 20 60 68 77 110,期中y是x的函数,使用最小二乘法建立一阶线性回归方程 用polyfit函数求出系数 x=0 1 2 3 4 5; y=0 20 60 68 77 110; coef=polyfit(x,y,1),SOUTHWEST JIAOTONG UNIVERSITY,29,MATLAB插值与曲线拟合,线性回归 画出方程的直线及x和y的数据点 a1=coef(1);a0=coef(2); ybest=a1*x+a0; sum_sq=sum(y-ybest).2) plot(x,ybest,x,y,o);title(Linear regression estimate),grid 通过比较发现,最小平方误差法获得的误差平方和要小于y=20 x的值,SOUTHWEST JIA