logo资料库

利用MATLAB曲线拟合工具箱求离散点的拟合曲线.pdf

第1页 / 共7页
第2页 / 共7页
第3页 / 共7页
第4页 / 共7页
第5页 / 共7页
第6页 / 共7页
第7页 / 共7页
资料共7页,全文预览结束
中国科技论文在线 http://www.paper.edu.cn 利用 MATLAB 曲线拟合工具箱求离散点的拟 合曲线 陈巍* (辽宁工程技术大学 理学院,辽宁 阜新 123000) 摘要:曲线拟合是数值分析中的一种普遍且重要的方法,求解拟合曲线的方法也有很多.本 文主要介绍利用 MATLAB 曲线拟合工具箱对离散数据点做拟合处理,并与利用最小二乘法 求相应的拟合曲线的方法做对比,突出 MATLAB 曲线拟合工具箱的优点,并阐述了其适用 范围.最后通过利用 MATLAB 曲线拟合工具箱对实例中离散数据的拟合来具体说明它的使 用方法和优点. 关键词: 数值分析;MATLAB;曲线拟合;最小二乘法 中图分类号:O241 Utilize the curve-fitting toolbox of MATLAB to seek fitted curve of some disciete points Chen Wei (Liaoning Technical University College of Science,Liaoning Fuxin 123000) Abstract: Curve fitting is a common and important method in numerical analysis and there are a lot of approaches for solving fitted curve .This paper mainly introduce the method that utilize the Curve- Fitting Toolbox of MATLAB to fit some discrete data points and contrast with the method of the minimum squares. Through the contrast, it highlight the advantage of MATLAB Curve-Fitting Toolbox and elaborate its scope. At last, this paper specify the usage and the advantage of MATLAB Curve- Fitting Toolbox by example. Key words: numerical analysis; MATLAB; Curve-Fitting; minimum squares 0 引言 在很多实际情况中,两个变量之间的关系往往很难用具体的表达式把它表示出来,通常 只能通过实际测量得到一些互不相同的离散数据点.需要利用这些已知的数据点估计出两个 变量的关系或工件的具体轮廓,并要得到任意未知数据点的具体数值,这个过程就需要用到 拟合或差值方法来实现.本文主要讨论拟合的方法. 曲线拟合可以通过 MATLAB 编程来完成,通常为了达到更好的拟合效果需要做多次重 复修改,对于非线性曲线拟合还需要编写复杂的 M-文件.运用 MATLAB 曲线拟合工具箱来 实现离散数据点的曲线拟合是一种直观并且简洁的方法. 1 曲线拟合的最小二乘法理论 假设给定了一些数据点( )ii yx , ,人们总希望能找到这样的近似函数,它既能反映所给数 据的一般趋势,又不会出现较大偏差,并且要使构造的函数与被逼近函数在一个给定区间上 的偏差满足某种要求.这种思想就是所谓的“曲线拟合”的思想. 曲线拟合和差值不同,若要求通过所有给定的数据点是差值问题,若不要求曲线通过所 有给定的数据点,而只是要求它反映对象整体的变化趋势,这就是拟合问题.曲线拟合问题 作者简介:陈巍(1985-),女,硕士研究生,主要研究方向:最优化理论. E-mail: weiweichen_5566@126.com - 1 -
中国科技论文在线 http://www.paper.edu.cn 最常用的解法是线性最小二乘法[1],步骤如下: ( ) ( ) < 第一步:先选定一组函数 nmxr , xrxr , 1 ( ) ( ) ( )xra + mm+ = xraxraxf ( ) , + , 2 ( ) 1 为待定系数. aa ,, 2 其中 第二步:确定的准则(最小二乘准则):使n个点( )i i yx , ma , 22 11 m ,令: 与曲线 ( )xfy = 的距离 iδ 的平方和最小.记 ( aaJ 2 ,, 1 a , m n n ) = = 2 i δ ∑ [ ( ∑ xf i 1 使 ( aa ,, 2 ma , = i = i 1 1 1 ,, 2 aaJ ) − 2 y i ] )ma , = m n ∑ ∑ = i 1 = k 1 ⎡ ⎢ ⎣ ( xra ikk ) − 2 y i ⎤ ⎥ ⎦ 问题归结为,求 最小二乘法中如何选择数学模型很重要。用 MATLAB 解决曲线拟合问题通常有两种方 法:线性最小二乘拟合和非线性最小二乘拟合.对于两种方法的选择,要根据离散数据点位 置关系来确定,即首先将数据( = n , 最小. 作图,通过直观判断确定. axa m + + m 1 + + 拟合.可利用已有 iyx ii 线性最小二乘法通常是做多项式 ( ) a , ,2,1 ) , m xaxf = 1 的程序 y = = ( )myx ployfit ,, ( )xa 计算.做非线性最小二乘拟合时,应首先选择好适当的数学模型,如 , ployval 其中 m代表拟合多项式的次数.多项式在x 处 y 的值可用命令 + ,令 Y ln= bxae = ln ,其中 ba, 为待定参数.此时可以把它转化成线性模型来计算,两边取对数得 = ,求这个线性模型的 bxa lsqcurvefi 和lsqnonlin mfun. ,在其中定义函数 ( )xf ,但两者定义 M-文件的 y = ln y 最小二乘问题.另外一种方法就是直接采用非线性拟合的函数 来计算.两个命令都要先建立 M-文件 方式有所不同. bxAY A ln= ,于是有 ,记 t y a + 这些问题同样可以用 MATLAB 拟合工具[2]箱来实现,并且操作比较简单,误差等参数 也能一目了然的观察到. 2 MATLAB 曲线拟合工具箱 MATLAB 曲线拟合工具箱界面[3]是一个可视化的图形界面,具有强大的图形拟合功能, 其中包括:(1)可视化的展开一个或多个数据集,并可用散点图来表示;(2)用残差和置 信区间可视化的估计拟合结果的好坏;(3)通过其他界面还可以实现许多其他功能:比如 输出、查看和平滑数据;拟合数据,比较拟合曲线和数据集;从拟合曲线中排除特殊的数据 点;选定区间后可以显示拟合曲线和数据集.它把计算,可视化和程序设计融合到一个交互 的环境,在此环境中,利用强大的数值计算和图形功能,可高效求解一些复杂的工程问题及 实现计算结果的可视化. 用 MATLAB 曲线拟合工具箱对离散数据进行拟合时,可使用 MATLAB 内部的库函数 或用户自定义的方程对参变量进行多项式、指数、有理数等形式的数据拟合. 3 MATLAB 曲线拟合工具箱的应用举例 在实际中,产品和工件的轮廓形状很难找到一个具体的数学表达式,通常只能通过实验 或数学计算得到一些离散点及其上的数值点.此时就需要选择合适的数学模型对其进行曲线 - 2 -
中国科技论文在线 http://www.paper.edu.cn 拟合,做出它的拟合曲线,从而估计出它的实际形状.下面通过一个例子说明一下用 MATLAB 曲线拟合工具箱对离散数据点进行曲线拟合,并与一般方法的比较. 例1 已知机翼下轮廓上的数据如下表所示: 表 1[4] 机翼下轮廓数据 Tab. 1 under profile datum of airfoil 机翼长(X) 0 3 5 7 9 11 12 13 14 15 机翼宽(Y) 0 1.2 1.7 2.0 2.1 2.0 1.8 1.2 1.4 1.6 用这些数据拟合轮廓形状. (1)用多项式最小二乘法编程方法:(分别用 3 次和 4 次进行拟合) >> x=[0,3,5,7,9,11,12,13,14,15]; >> y=[0,1.2,1.7,2.0,2.1,2.0,1.8,1.2,1.4,1.6]; >> A=polyfit(x,y,3) A =0.0013 -0.0523 0.5913 -0.0483 >> z=polyval(A,x); >> plot(x,y,'k+',x,z,'r') 同样的方法可以得到 4 次多项式拟合曲线,3 次和 4 次的拟合图像分别为: 图 1 3 次拟合曲线 图 2 4 次拟合曲线 Fig. 1    cubic polynomial of fit                                    Fig. 2    4th degree polynomial of fit    0013 3 x .0 = + − + .0 + + 拟合得到的多项式分别为: )( xf .0 0523 2 x .0 5913 x − .0 0483 = − .0 3 x 2 x .0 0004 4 x .0 0099 0544 )( xf (2)用 MATLAB 曲线拟合工具箱计算: >> x=[0,3,5,7,9,11,12,13,14,15]; >> y=[0,1.2,1.7,2.0,2.1,2.0,1.8,1.2,1.4,1.6]; >> cftool 进入拟合工具箱界面, 然后点击 Data 按钮,在数据栏里选择数据 x 和 y.界面分别为: 0214 2767 x .0 - 3 -
中国科技论文在线 http://www.paper.edu.cn 图 3 曲线拟合工具箱界面 图 4 “Data”对话框 Fig.3    Curve‐Fitting Toolbox interface                                          Fig.4    “Data” dialogue box  单击 Create data set 按钮,然后单击 Close 返回拟合工具箱界面.再单击 Fitting 按钮,先 选择 3 次多项式拟合方法,即在 Type of fit 中选择 Polynomial,然后在下面的选项中选择 cubic polynomial(图 5),单击 Apply 进行拟合得到图像(图 6). 以及结果:Linear model Poly3:   f(x) = p1*x^3 + p2*x^2 + p3*x + p4 Coefficients (with 95% confidence bounds): p1 = 0.00128 (-0.0008073, 0.003367) p2 = -0.05227 (-0.1001, -0.004396) p3 = 0.5913 (0.2892, 0.8934) p4 = -0.0483 (-0.5768, 0.4802) Goodness of fit: SSE: 0.2948 R-square: 0.9143 Adjusted R-square: 0.8714 RMSE: 0.2217 图 5    “Fitting”对话框                                                          图 6    3 次拟合曲线 Fig.5    “Fitting” dialogue box                                                    Fig. 6    cubic polynomial of fit  - 4 -
中国科技论文在线 http://www.paper.edu.cn 从结果中可以看出,拟合得出多项式 ( ) xf = .0 00128 3 x − .0 05227 2 x + .0 5913 x − .0 , 0483 以及它的误差平方和 SSE 为 0.2948,相关系数平方和 R-square 为 0.9143,根的均方差 RMSE 为 0.2217. 若需要进行 4 次拟合,只需在 Fitting 中的 New fit 中选择 4 次多项式拟合就可以得到 4 次拟合图像和结果: 图 7 3 次和 4 次多项式拟合 Fig.7 cubic and 4th degree polynomial of fit + 所得拟合所得多项式为: − .0 = 4 0003661 )( x xf 误差平方和为 0.1801. 用这两种方法所得的结果基本相同,显然 4 次比 3 次的拟合效果要好.并且用拟合工具 009906 . 02141 05438 2767 2 x 3 x .0 .0 .0 .0 x + + 箱求解更为方便直观. 例2 下面为一组信号传播通路损耗的实测数据[5]: 表 2 一组信号传播损耗测试数据 Tab. 2 a group of signal propagation loss test datum -2.75 -2.85 -3 -3.05 -3.1 -3.15 -3.05 -2.9 -2.75 频率(MHz) 损耗(dB) 频率(MHz) 损耗(dB) 频率(MHz) 损耗(dB) 频率(MHz) 损耗(dB) -1.85 -1.75 -1.75 -1.7 -1.75 -1.8 -1.9 -1.95 30 31.5 33 34.5 36 37.5 39 40.5 42 用曲线拟合工具箱对其进行拟合,采用 6 次多项式拟合,得图像如下: -2.6 -2.45 -2.25 -2.1 -2 -2 -2.1 -2.15 -2.3 -2.4 -2.55 -2.6 -2.7 -2.6 -2.6 -2.45 -2.3 -2.05 43.5 45 46.5 48 49.5 51 52.5 54 55.5 57 58.5 60 61.5 63 64.5 66 67.5 69 70.5 71.5 73 74.5 76 77.5 79 81 - 5 -
中国科技论文在线 http://www.paper.edu.cn 图 8 6 次多项式拟合 Fig. 8 6th degree polynomial of fit 下面再举一个非线性拟合的例子. 例 3 用非线性拟合[6]的方法对下列一组数据进行拟合: 表 3 快速静脉注射下的血药浓度数据 Tab. 3 blood concentration datum under rapid intravenous injection t(h) c( 0.25 19.21 0.5 18.15 1 1.5 14.10 2 3 9.32 4 7.45 6 5.24 8 3.01 = − 15.36 12.98 btae ,其中, ba, 是待定参数. ml g /µ )  根据数据特点,选取数学模型: ( ) tc (1)用 lsqucurvefit()函数做拟合: 编写 M-文件:function f=curvefun1(x,tdata) f=x(1)*exp(-x(2)*tdata 输入程序:tdata=[0.25,0.5,1,1.5,2,3,4,6,8]; >> cdata=[19.21,18.15,15.36,14.10,12.89,9.32,7.45,5.24,3.01]; >> x0=[20,0.1]; >> x0=[0.2,0.05,0.05]; x=lsqcurvefit ('curvefun1',x0,tdata,cdata) f= curvefun1(x,tdata) x = 20.2413 0.2420 f =19.0532 17.9348 15.8911 14.0802 12.4757 9.7945 7.6894 4.7394 2.9211 f = 19.0532 17.9348 15.8911 14.0802 12.4757 9.7945 7.6894 4.7394 2.9211 = − e .0 2420 t .20 )( tc 2413 即 (2)用拟合工具箱计算: 输入程序: >> tdata=[0.25,0.5,1,1.5,2,3,4,6,8]; - 6 -
中国科技论文在线 http://www.paper.edu.cn >> cdata=[19.21,18.15,15.36,14.10,12.89,9.32,7.45,5.24,3.01]; >> cftool(tdata,cdata) 打开拟合工具,在数据栏里选择数据,根据数据点的分布,选择 Custom Equations,然后 在 Custom Equations 中设置函数 =)( tc 后进行拟合,所得图像为: − btae 图 9 非线性拟合 Fig. 9 nonlinear fit 拟合结果为: )( tc = 24.20 − .0 242 te ,与 lsqucurvefit()函数方法结果相同. 由此看出拟合工具箱首先可以画出数据点的散点图,便于选择模型;其次操作简便,省 去了复杂的编程工作;再次,结果以图像和数据两种方式给出,直观形象,并且结果中还给 出了判断拟合好坏的参数. 4 结论 本文给出了求离散数据点拟合曲线的 MATLAB 曲线拟合工具箱方法,并与通常使用的 利用拟合函数编程方法相比较,发现利用曲线拟合工具箱求解拟合曲线更加简捷和直观,并 且可视性效果很好. [参考文献] (References) [1] 李庆扬,关治,白峰山.数值计算原理[M].北京:清华大学出版社.2000:56-58. [2] 苏金明,张莲花,刘波等.MATLAB 工具箱应用[M].北京:电子工业出版社.2004. [3] 史立新,聂信天,季明.基于 MATLAB 曲线拟合工具箱的列表曲线拟合[J].新技术新工艺,2007(7). [4] 牛旭,李小平.利用三次样条差值法求机翼的拟合曲线[J].塔里木大学学报,2010(3). [5] 杨云升.MATLAB 曲线拟合及其在试验数据处理中的应用[J].电脑与信息技术,2009(4). [6] 陈文芳,许棠.利用 MATLAB 曲线拟合工具箱拟合 PN 结伏安特性曲线[J].计算机与数字工程,2007(10). - 7 -
分享到:
收藏