基于Matlab的曲线拟合_第1页
基于Matlab的曲线拟合_第2页
基于Matlab的曲线拟合_第3页
基于Matlab的曲线拟合_第4页
基于Matlab的曲线拟合_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

来自:Hi记忆基于Matlab的曲线拟合摘要:科学研究中经常要对得到的实验数据进行分析,通过研究物理量之间的函数关系,探索事物之间的联系、规律,或做出相应的预测。这些分析都离不开拟合,拟合的方法有很多种,最常用的曲线拟合方法是最小二乘法。Matlab是一个很强大的数值分析软件,能帮助我们快速、准确地进行曲线拟合,并能直观的显示出结果。本文除了介绍最小二乘法的原理之外,还通过一个实例,表述了如何用Matlab自带函数lsqcurvefit()及工具箱cftool进行曲线拟合,并分别给出了相关的结果图。关键字:曲线拟合,最小二乘法,Matlab,lsqcurvefit,cftool(Curve Fitting Tool)前言在科学研究实验与工程计算中,经常要从一组实际观测数据点集(x,y)(i=0,1,2,n)出发,去寻找变量x与y的函数关系式,即y = f(x)。绝大多数情况下,函数关系特别复杂,通过离散的观测点很难通过理论计算推断出自变量与对应因变量的函数表达式,不利于进一步的数据分析。这时候就要采用曲线拟合的方法,来近似求解变量间的最佳函数关系,目的是找到一条光滑曲线,使它在某种准则下最佳的拟合数据并最大程度地接近实际理论曲线。随着科学技术的发展,曲线拟合在数据分析及寻找事物规律、预测等应用中具有越来越重要的作用。曲线拟合的方法有很多,大致可以分为插值法和逼近法。考虑到一些实验仪器的精度要求与计算机的数据运算、存储能力或其他条件限制,可采用插值法增加数据。插值法可采用拉格朗日插值、牛顿插值、样条插值等,逼近法有最小二乘法、切比雪夫法等。在科学研究中,最常用的曲线拟合方法是最小二乘法。MATLAB是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,具有很强大的图形处理能力及计算处理能力、编译语言简单易用、模块集合工具箱应用广泛、可开发用户界面等优点,已成为我们对实验数据进行研究分析的首选工具。对于数据的曲线拟合问题,Matlab为用户提供了多种线性与非线性拟合方法,包括拟合函数与工具箱,用户还能根据自己的需要进行编程。利用Matlab能快速、准确地得到曲线拟合结果。最小二乘法在许多科学研究实验中,往往要根据一组得到的确定实验数据(x,y)(i=0,1,2,m),求自变量x与因变量y的函数关系式y = S(x;a,a, a,a)(nm),这时a为待定参数,由于观测数据存在误差,且待定参数a的数量比给定数据点的数量少(即nm),这类问题不要求y =S(x)= S(x;a,a, a,a)通过点(x,y)(i=0,1,2,m),只要求在给定点x上的误差=f(x)- y的平方和最小。设(x), (x),(x)是区间Ca,b上线性无关函数族,在=span(x), (x),(x)中找到一函数S(x),使误差平方和|= = =其中s(x)= a(x) + a(x) + + a(x) (nm)。这就是最一般的小二乘逼近,得到的拟合曲线为s(x),用几何语言说,就称为曲线拟合的最小二乘法。曲线拟合的Matlab实现例:已知数据如下表1表1 待拟合数据xy0.610.920.991.521.472.03试确定拟合函数的系数,并画出拟合曲线。用Matlab求解曲线拟合问题的方法有很多种,可以直接调用Matlab函数,也可以按照算法进行编程,最简单的方法便是使用Matlab为用户提供的工具箱。下面只介绍用Matlab函数与工具箱求解上例。方法一:用lsqcurvefit函数实现曲线拟合Matlab为用户提供了lsqcurvefit函数实现最小二乘拟合,调用格式如下:x=lsqcurvefit(fun,x0,xdata,ydata);fun为拟合函数,(xdata,ydata)为一组实验观测数据,满足ydata = fun(xdata,x),以x0为初始点求解改数据拟合问题。新建m文件,将待拟合函数写入,保存为cf.m:function f=cf(x,xdate)n=length(xdate);for i=1:n f(i)=x(1)+x(2)*xdate(i)+x(3)*sin(xdate(i)+x(4)*exp(xdate(i);end运行以下程序:clear all;xdata=0.1 0.4 0.5 0.7 0.8 0.9;ydata=0.61 0.92 0.99 1.52 1.47 2.03;x0=1 1 1 1;%初始点选为全1向量x=lsqcurvefit(qx,x0,xdata,ydata)plot(xdata,ydata,ro);xi=0:0.01:1;y=cf(x,xi);grid on;hold on;plot(xi,y)xlabel(x)ylabel(y)title(lsqcurvefit函数曲线拟合)legend(原始数据点,拟合曲线)输出结果:x = 7.0008 38.4868 -30.0778 -6.5485图1为仿真结果图,Matlab直观的给出了拟合结果。即求得的拟合函数为f(x)= 7.0008+38.4868x-30.0778sinx-6.5485。图1使用lsqcurvefit函数拟合结果方法二:使用工具箱cftoolMatlab自带很多功能强大的工具箱,直接使用就能方便高效得到结果。本例中我们可以调用曲线拟合工具箱cftool(Curve Fitting Tool)。图2Curve Fitting Tool界面将原始数据输入:xdata=0.1 0.4 0.5 0.7 0.8 0.9;ydata=0.61 0.92 0.99 1.52 1.47 2.03;调用cftool,只要在命令窗口直接输入cftool并回车即可:弹出工具箱界面如上图2所示。在左上角的X data与Y data分别选定原始数据xdata与ydata,在右边的下拉菜单中选择Custom Equation,即用户自定义,输入a+b*x+c*sin(x)+d*exp(x),点击Fit按钮开始拟合,得到如下图3结果:图3cftool 拟合结果由图3可明显看出用曲线拟合工具箱得到的结果与方法一编程实现的结果一致。参考文献1 吕喜明,李明远.最小二乘曲线拟合的Matlab实现J.内蒙古民族大学学报,2009,24(2):125-127.2 John H.Mathews,Kurtis D.

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论