版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第三章数据拟合本章讨论在MatLab软件包中,如何进行数据拟合。§3.1多项式曲线拟合Matlab中的多项式曲线拟合使用命令如下:p=polyfit(x,y,n)解释:p=polyfit(x,y,n)表示在误差平方极小的意义下,通过数据拟合运算,寻找n次多项式p(x)的系数,p是一个n+1次的行向量:p=(p,p,…,p,p),其中nn-1 10p(x)=pXn+pXn-1H Fpx+pn n-1 1 0另外,输入时,x的数据要使用列向量。例3.1在区间[0,2.5]中,用多项式函数拟合误差函数。2x误差函数erf(x):erf(x)二 Ie-t2dt,它在区间卜10,10]中的图像如下:兀0在区间[0,2.5]中,每隔0.1取一个误差函数的数据,然后用一个6次多项式去拟合误差函数。程序如下:x=(0:0.1:2.5)';y=erf(x);p=polyfit(x,y,6)执行后得到结果:p=Columns1through50.0084-0.09830.4217-0.74350.1471Columns6through71.10640.0004即,p=(0.0084,-0.0983,0.4217,-0.7435,0.1471,1.1064,0.0004),也就是得到6次多项式为:p(x)=0.0084x6-0.0983x5+0.4217x4-0.7435x3+0.1471x2+1.1064x+0.0004计算一下误差函数的数据y与6次多项式p(x)的值之间的误差。程序如下:f=polyval(p,x);table=[xyfy-f]执行后得到结果:table=000.0004-0.00040.10000.11250.11190.00060.20000.22270.22230.00040.30000.32860.3287-0.00010.40000.42840.4288-0.00040.50000.52050.5209-0.00040.60000.60390.6041-0.00020.70000.67780.67780.00000.80000.74210.74180.00030.90000.79690.79650.00041.00000.84270.84240.00031.10000.88020.88000.00021.20000.91030.9104-0.00001.30000.93400.9342-0.00021.40000.95230.9526-0.00031.50000.96610.9664-0.00031.60000.97630.9765-0.00021.70000.98380.98380.00001.80000.98910.98890.00021.90000.99280.99250.00032.00000.99530.99510.00022.10000.99700.99690.00012.20000.99810.9982-0.00012.30000.99890.9991-0.00032.40000.99930.9995-0.00022.50000.99960.99940.0002面在区间[0,5]之间作图比较两个函数的图像的区别。程序如下:x=(0:0.1:5)';y=erf(x);f=polyval(p,x);plot(x,y,'o',x,f,'-')axis([0502])执行后得到结果:其中,用“0”画的曲线是误差函数的图像。例3.2一个[x,y,z,v]=fl0w;xmin=min(x(:));ymin=min(y(:));zmin=min(z(:));xmax=max(x(:));ymax=max(y(:));zmax=max(z(:));hslice=surf(linspace(xmin,xmax,100),...linspace(ymin,ymax,100),...zer0s(100));r0tate(hslice,[-1,0,0],-45)xd=get(hslice,'XData');yd=get(hslice,'YData');zd=get(hslice,'ZData');delete(hslice)h=slice(x,y,z,v,xd,yd,zd);set(h,'FaceC0l0r','interp',...'EdgeC0l0r','n0ne',...'DiffuseStrength',.8)h0ld0nhx=slice(x,y,z,v,xmax,[],[]);set(hx,'FaceC0l0r','interp','EdgeC0l0r','n0ne')hy=slice(x,y,z,v,[],ymax,[]);set(hy,'FaceColor','interp','EdgeColor','none')hz=slice(x,y,z,v,[],[],zmin);set(hz,'FaceColor','interp','EdgeColor','none')daspect([1,1,1])axistightboxonview(-38.5,16)camzoom(1.4)camprojperspectivelightangle(-45,45)colormap(jet(24))set(gcf,'Renderer','zbuffer')执行后得到图像:§3.2样条拟合在MatLab软件包中有内部样条函数spline,它是通过三次样条数据插值进行计算。它的格式是:yy=spline(x,y,xx)pp=spline(x,y)其中:(1)yy=spline(x,y,xx)是通过三次样条分析,对数据x和y插值寻找向量XX的函数yy。如果y是一个矩阵,则对y的每一行进行插值运算,此时向量x的长度length(x)必须等于y的列数size(y,2),并且所得结果矩阵yy的阶是y的行数X向量xx的长度,即,等于size(y,l)xlength(xx)。另外,如果想对矩阵y的列进行插值分析与计算,可以使用MatLab内部函数interp1(x,y,xx,'spline'),此时要求向量x的长度length(x)必须等于y的行数size(y,1),并且所得结果矩阵yy的阶是向量xx的长度Xy的列数,即,等于length(xx)xsize(y,2)。(2)pp=spline(x,y)返回三次多项式的分段函数形式。例3-2-1首先x从0到10每隔0.25取值,生成数据y=sin(x),然后进行拟合。写一个名称为opt_spline_l的M一文件:x=0:10;y=sin(x);xx=0:.25:10;yy=spline(x,y,xx);plot(x,y,'o',xx,yy)pp=spline(x,y)[breaks,coefs,l,k,d]=unmkpp(pp)v=ppval(pp,0.85)存盘并且执行,得到下列结果与拟合函数的图形:pp=form:'pp'breaks:[012345678910]coefs:[10x4double]pieces:10order:4dim:1breaks=0 1 2 3 4 5 6 7 8 9 10coefs=-0.0419-0.26121.14460-0.0419-0.38680.49650.84150.1469-0.5124-0.40270.90930.1603-0.0716-0.98670.14110.03720.4095-0.6488-0.7568-0.12340.52110.2818-0.9589-0.16840.15090.9538-0.2794-0.0640-0.35420.75060.65700.1190-0.5463-0.14990.98940.1190-0.1894-0.88560.4121l=10k=4d=1v=0.7584程序中,[breaks,coefs,l,k,d]=unmkpp(pp)表示返回被拟合的样条函数;v=ppval(pp,0.85)表示求x=0.85时的函数值,得到v=0.7584。返回的结果中,breaks表示拟合的样条函数共分10段,每一段中都是一个三次多项式函数,并且在ceofs中给出这10段三次多项式的系数,coefs:[10x4double]表示coefs是一个10X4的矩阵,double的意思是矩阵coefs中的元素都是双精度数值。例如,第一段中的系数是:-0.0419 -.26121.14460它表示在0<x<1中,拟合得到的三次多项式函数是:-0.0419x3-0.2612x2+1.1446x+0其余类推。l=10表示分10段拟合样条函数;k=4表示每一段返回的系数是4个;d=1表示在每一段中都是一元函数。例3-2-2在指定的x区间[-4,4]上做样条分析,并且满足在区间的端点上函数y取0值。写一个名称为opt_spline_2的M一文件:x=-4:4;y=[0.151.122.362.361.46.49.060];cs=spline(x,[0y0]);xx=linspace(-4,4,101);plot(x,y,'o',xx,ppval(cs,xx),'-');程序中的语句cs=spline(x,[0y0])含有[0y0]表示在区间的端点上函数y取0值。存盘并且执行,得到下列样条拟合的图形:例3-2-3从公元1900年〜1990年每隔10年计算一次美国的人口数据(单位:百万),得到数据列p=[75.99591.972105.711123.203131.669...150.697179.323203.212226.505249.633],以此为基础做样条分析,预测美国2000年的人口数据。写一个名称为opt_spline_3的M—文件:t=1900:10:1990;p=[75.99591.972105.711123.203131.669150.697179.323203.212226.505249.633];spline(t,p,2000)存盘并且执行,得到下列预测结果:ans=270.6060即,预测美国2000年人口为270.6060(百万),也就是大约2亿7千万。例3-2-4对(x,y)取样本点(0,0)、(0.5pi,1)、(pi,0)、(1.5pi
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 含药物的漱口剂产品供应链分析
- 装有测量传感器的健身圈项目营销计划书
- 云计算行业营销策略方案
- 磁带消磁装置项目运营指导方案
- 花园水管用洒水枪商业机会挖掘与战略布局策略研究报告
- 冷媒秤产业链招商引资的调研报告
- 绘图用丁字尺项目营销计划书
- 冷藏展示柜产业链招商引资的调研报告
- 医用南美牛奶菜的干皮产品供应链分析
- 传真通信行业经营分析报告
- 眼、淋巴结体格检查考核评分标准
- 肌电图震颤分析检测对帕金森病的诊断价值
- 船舶救生与消防培训课件
- DB31T 1249-2020 医疗废物卫生管理规范
- 中国建筑史说课市公开课金奖市赛课一等奖课件
- 3D-one熊猫的制作方法课件
- 人教版七年级上册数学一元一次方程的应用-古代数学问题
- 多发伤复合伤病人急诊抢救流程图
- 床单元消毒机-课件
- 硫酸镁使用课件
- 工程暂停令-范本
评论
0/150
提交评论