插值、拟合与MATLAB编程1.doc
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 拟合 MATLAB 编程
- 资源描述:
-
插值、拟合与MATLAB编程1 ———————————————————————————————— 作者: ———————————————————————————————— 日期: 14 个人收集整理 勿做商业用途 插值、拟合与MATLAB编程 相关知识 在生产和科学实验中,自变量与因变量间的函数关系有时不能写出解析表达式,而只能得到函数在若干点的函数值或导数值,或者表达式过于复杂而需要较大的计算量。当要求知道其它点的函数值时,需要估计函数值在该点的值。 为了完成这样的任务,需要构造一个比较简单的函数,使函数在观测点的值等于已知的值,或使函数在该点的导数值等于已知的值,寻找这样的函数有很多方法。根据测量数据的类型有以下两类处理观测数据的方法。 (1)测量值是准确的,没有误差,一般用插值。 (2)测量值与真实值有误差,一般用曲线拟合。 在MATLAB中,无论是插值还是拟合,都有相应的函数来处理。 一、插 值 1、一维插值: 已知离散点上的数据集,即已知在点集X=上的函数值Y=,构造一个解析函数(其图形为一曲线)通过这些点,并能够求出这些点之间的值,这一过程称为一维插值。 MATLAB命令:yi=interp1(X, Y, xi, method) 该命令用指定的算法找出一个一元函数,然后以给出处的值.xi可以是一个标量,也可以是一个向量,是向量时,必须单调,method可以下列方法之一: ‘nearest’:最近邻点插值,直接完成计算; ‘spline':三次样条函数插值; ‘linear':线性插值(缺省方式),直接完成计算; ‘cubic':三次函数插值; 对于[min{xi},max{xi}]外的值,MATLAB使用外推的方法计算数值。 例1:已知某产品从1900年到2010年每隔10年的产量为:75.995, 91。972, 105.711, 123。203, 131.699, 150。697, 179。323, 203.212, 226.505, 249。633, 256.344, 267.893,计算出1995年的产量,用三次样条插值的方法,画出每隔一年的插值曲线图形,同时将原始的数据画在同一图上。 解:程序如下 year=1900:10:2010; product=[75。995, 91.972, 105.711, 123.203, 131.699, 150。697, 179.323, 203.212, 226.505, 249。633, 256。344, 267.893] p1995=interp1(year,product,1995) x=1900:2010; y=interp1(year,product,x,’cubic’); plot(year,product,’o’,x,y); 计算结果为:p1995=252.9885。 2、二维插值 已知离散点上的数据集,即已知在点集上的函数值,构造一个解析函数(其图形为一曲面)通过这些点,并能够求出这些已知点以外的点的函数值,这一过程称为二维插值. MATLAB函数:Zi=interp2(X,Y,Z,Xi,Yi,method) 该命令用指定的算法找出一个二元函数,然后以给出处的值。返回数据矩阵,Xi,Yi是向量,且必须单调,和meshgrid(Xi,Yi)是同类型的。method可以下列方法之一: ‘nearest':最近邻点插值,直接完成计算; ‘spline':三次样条函数插值; ‘linear’:线性插值(缺省方式),直接完成计算; ‘cubic':三次函数插值; 例2:已知1950年到1990年间每隔10年,服务年限从10年到30年每隔10年的劳动报酬表如下: 表:某企业工作人员的月平均工资(元) 服务年限 年份 10 20 30 1950 150。697 169。592 187。652 1960 179。323 195.072 250。287 1970 203.212 239。092 322。767 1980 226.505 273。706 426.730 1990 249。633 370.281 598.243 试计算1975年时,15年工龄的工作人员平均工资。 解:程序如下: years=1950:10:1990; service=10:10:30; wage=[150.697 169.592 187.652 179。323 195.072 250.287 203。212 239.092 322。767 226。505 273。706 426。730 249.633 370。281 598。243]; mesh(service,years,wage) %绘原始数据图 w=interp2(service,years,wage,15,1975); %求点(15,1975)处的值 计算结果为:235。6288 例3:设有数据x=1,2,3,4,5,6,y=1,2,3,4,在由x,y构成的网格上,数据为: 12,10,11,11,13,15 16,22,28,35,27,20 18,21,26,32,28,25 20,25,30,33,32,20 求通过这些点的插值曲面。 解:程序为:x=1:6; y=1:4; t=[12,10,11,11,13,15 16,22,28,35,27,20 18,21,26,32,28,25; 20,25,30,33,32,20] subplot(1,2,1) mesh(x,y,t) x1=1:0.1:6; y1=1:0。1:4; [x2,y2]=meshgrid(x1,y1); t1=interp2(x,y,t,x2,y2,'cubic'); subplot(1,2,2) mesh(x1,y1,t1); 结果如右图。 作业:已知某处山区地形选点测量坐标数据为: x=0 0.5 1 1。5 2 2.5 3 3。5 4 4.5 5 y=0 0。5 1 1。5 2 2.5 3 3.5 4 4.5 5 5.5 6 海拔高度数据为: z=89 90 87 85 92 91 96 93 90 87 82 92 96 98 99 95 91 89 86 84 82 84 96 98 95 92 90 88 85 84 83 81 85 80 81 82 89 95 96 93 92 89 86 86 82 85 87 98 99 96 97 88 85 82 83 82 85 89 94 95 93 92 91 86 84 88 88 92 93 94 95 89 87 86 83 81 92 92 96 97 98 96 93 95 84 82 81 84 85 85 81 82 80 80 81 85 90 93 95 84 86 81 98 99 98 97 96 95 84 87 80 81 85 82 83 84 87 90 95 86 88 80 82 81 84 85 86 83 82 81 80 82 87 88 89 98 99 97 96 98 94 92 87 1、 画出原始数据图; 2、 画出加密后的地貌图,并在图中标出原始数据。 程序如下:x=0:0.5:5 y=0:0.5:6 z=[89 90 87 85 92 91 96 93 90 87 82 92 96 98 99 95 91 89 86 84 82 84 96 98 95 92 90 88 85 84 83 81 85 80 81 82 89 95 96 93 92 89 86 86 82 85 87 98 99 96 97 88 85 82 83 82 85 89 94 95 93 92 91 86 84 88 88 92 93 94 95 89 87 86 83 81 92 92 96 97 98 96 93 95 84 82 81 84 85 85 81 82 80 80 81 85 90 93 95 84 86 81 98 99 98 97 96 95 84 87 80 81 85 82 83 84 87 90 95 86 88 80 82 81 84 85 86 83 82 81 80 82 87 88 89 98 99 97 96 98 94 92 87] subplot(1,2,1) mesh(x,y,z) x1=0:0。05:5 y1=0:0。05:6 [xx,yy]=meshgrid(x1,y1) zz=interp2(x,y,z,xx,yy,’spline') subplot(1,2,2) mesh(xx,yy,zz) hold on [x0,y0]=meshgrid(x,y) plot3(x0,y0,z,’bo') 二、拟合 曲线拟合 已知离散点上的数据集,即已知在点集上的函数值,构造一个解析函数(其图形为一曲线)使在原离散点上尽可能接近给定的值,这一过程称为曲线拟合.最常用的曲线拟合方法是最小二乘法,该方法是寻找函数使得最小。 MATLAB函数:p=polyfit(x,y,n) [p,s]= polyfit(x,y,n) 说明:x,y为数据点,n为多项式阶数,返回p为幂次从高到低的多项式系数向量p。x必须是单调的。矩阵s用于生成预测值的误差估计。(见下一函数polyval) 多项式曲线求值函数:polyval( ) 调用格式: y=polyval(p,x) [y,DELTA]=polyval(p,x,s) 说明:y=polyval(p,x)为返回对应自变量x在给定系数P的多项式的值。 [y,DELTA]=polyval(p,x,s) 使用polyfit函数的选项输出s得出误差估计Y DELTA。它假设polyfit函数数据输入的误差是独立正态的,并且方差为常数。则Y DELTA将至少包含50%的预测值。 例5:求如下给定数据的拟合曲线,x=[0。5,1.0,1。5,2。0,2.5,3。0], y=[1。75,2.45,3.81,4.80,7.00,8。60]. 解:MATLAB程序如下: x=[0。5,1。0,1。5,2.0,2.5,3。0]; y=[1。75,2。45,3.81,4.80,7.00,8。60]; p=polyfit(x,y,2) x1=0.5:0。05:3。0; y1=polyval(p,x1); plot(x,y,'*r’,x1,y1,'—b’) 计算结果为: p =0。5614 0。8287 1.1560 此结果表示拟合函数为: ,用此函数拟合数据的效果如图所示. 例2:由离散数据 x 0 .1 。2 .3 。4 .5 。6 .7 .8 .9 1 y .3 .5 1 1.4 1.6 1.9 .6 .4 。8 1。5 2 拟合出多项式。 程序: x=0:。1:1; y=[.3 。5 1 1.4 1.6 1.9 。6 .4 。8 1.5 2] n=3; p=polyfit(x,y,n) xi=linspace(0,1,100); z=polyval(p,xi); %多项式求值 plot(x,y,’o’,xi,z,’k:',x,y,’b’) legend(‘原始数据’,’3阶曲线') 结果: p = 16。7832 —25.7459 10.9802 -0。0035 多项式为:16.7832x3—25.7459x2+10.9802x—0.0035 曲线拟合图形: 也可由函数给出数据. 例3:x=1:20,y=x+3*sin(x) 程序: x=1:20; y=x+3*sin(x); p=polyfit(x,y,6) xi=linspace(1,20,100); z=polyval(p,xi); %¶àÏîʽÇóÖµº¯Êý plot(x,y,'o',xi,z,’k:',x,y,'b') 结果: p = 0。0000 —0。0021 0.0505 —0.5971 3。6472 —9。7295 11.3304 再用10阶多项式拟合 程序:x=1:20; y=x+3*sin(x); p=polyfit(x,y,10) xi=linspace(1,20,100); z=polyval(p,xi); plot(x,y,'o’,xi,z,’k:’,x,y,’b') 结果:p = Columns 1 through 7 0。0000 —0.0000 0.0004 —0.0114 0。1814 -1.8065 11。2360 Columns 8 through 11 -42.0861 88。5907 -92。8155 40。267 可用不同阶的多项式来拟合数据,但也不是阶数越高拟合的越好。 作业: 1.已知x=[0.1,0.8,1。3,1。9,2.5,3。1],y=[1.2,1.6,2。7,2.0,1。3,0。5],利用其中的部分数据,分别用线性函数插值,3次函数插值,求x=2.0处的值。 2.已知二元函数在点集上的值为,其中,左上角位置表示,右下角位置表示,求该数据集的插值曲面。 3.已知x=[1。2,1.8,2。1,2。4,2。6,3.0,3。3],y=[4.85,5.2,5.6,6。2,6。5,7.0,7。5],求对x,y分别进行4,5,6阶多项式拟合的系数,并画出相应的图形。 4.学习函数interp3(X,Y,Z,V,X1,Y1,Z1,method),对MATLAB提供的flow数据实现三维插值.展开阅读全文
咨信网温馨提示:1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。




插值、拟合与MATLAB编程1.doc



实名认证













自信AI助手
















微信客服
客服QQ
发送邮件
意见反馈



链接地址:https://www.zixin.com.cn/doc/2646049.html