MATLAB数据拟合与插值.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据拟合与插值 基于Matlab 曲线拟合 曲线拟合涉及回答两个基本问题 最佳拟合意味着什么? 应该用什么样的曲线? 最小二乘曲线拟合 在MATLAB 中,函数polyfit 求解最小二乘曲线拟合问题。 ? x=[0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1]; ? y=[-0.447 1.978 3.28 6.16 7.08 7.34 7.66 9.56 9.48 9.30 11.2]; 为了用polyfit,我们必须给函数赋予上面的数据和我们希望最佳拟合数据的多项式的阶次或度。如果我们选择n=1 作为阶次,得到最简单的线性近似。通常称为线性回归。相反,如果我们选择n=2 作为阶次,得到一个2 阶多项式。 ? n=2; % polynomial order ? p=polyfit(x, y, n) p =-9.8108 20.1293 -0.0317 polyfit 的输出是一个多项式系数的行向量。其解是 y = -9.8108x^2 +20.1293x-0.0317 为了将曲线拟合解与数据点比较,让我们把二者都绘成图。 ? xi=linspace(0, 1, 100); % x-axis data for plotting ? z=polyval(p, xi); ? plot(x, y, o , x, y, xi, z, : ) ? xlabel( x ), ylabel( y=f(x) ), title( Second Order Curve Fitting ) 多项式阶次的选择是有点任意的。两点决定一直线或一阶多项式。三点决定一个平方或2 阶多项式。按此进行,n+1 数据点唯一地确定n 阶多项式。于是,在上面的情况下,有11 个数据点,我们可选一个高达? 阶的多项式。然而,高阶多项式给出很差的数值特性,人们不应选择比所需的阶次高的多项式。此外,随着多项式阶次的提高,近似变得不够光滑,因为较高阶次多项式在变零前,可多次求导。例如,选一个10 阶多项式 ? pp=polyfit(x, y, 10) ; 将前述解作图,并把此图与原始数据及2 阶曲线拟合相比较,结果如图示 ? zz=polyval(pp, xi); % evaluate 10th order polynomial ? plot(x, y, o , xi, z, : , xi, zz) % plot data ? xlabel( x ), ylabel( y=f(x) ), title( 2nd and 10th Order curve Fitting ) 插 值 插值定义为对数据点之间函数的估值方法,这些数据点是由某些集合给定。当不能很快地求出所需中间点的函数值时,插值是一个有价值的工具。 MATLAB 用直线连接所用的数据点以作图。这个线性插值猜测中间值落在数据点之间的直线上。当然,当数据点个数的增加和它们之间距离的减小时,线性插值就更精确。 sine 函数的两个图,一个在数据点之间用60 个点,它比另一个只用6 个点更光滑和更精确。 如曲线拟合一样,插值要作决策。根据所作的假设,有多种插值。而且,可以在一维以上空间中进行插值。即如果有反映两个变量函数的插值,z=f(x, y),那么就可在x 之间和在y 之间,找出z 的中间值进行插值。MATLAB 在一维函数interp1 和在二维函数interp2中,提供了许多的插值选择。 为了说明一维插值,考虑下列问题,12 小时内,一小时测量一次室外温度。数据存储在两个MATLAB 变量中。 ? hours=1:12; % index for hour data was recorded ? temps=[5 8 9 15 25 29 31 30 22 25 27 24]; % recorded temperatures ? plot(hours, temps, hours, temps, + ) % view temperatures ? title( Temperature ) ? xlabel( Hour ), ylabel( Degrees Celsius ) 正如图,MATLAB 画出了数据点线性插值的直线。为了计算在任意给定时间的温度,人们可试着对可视的图作解释。另外一种方法,可用函数interp1。 ?

文档评论(0)

tiangou + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档