曲线拟合向导讲解

上传人:我** 文档编号:114449095 上传时间:2019-11-11 格式:DOCX 页数:29 大小:139.68KB
返回 下载 相关 举报
曲线拟合向导讲解_第1页
第1页 / 共29页
曲线拟合向导讲解_第2页
第2页 / 共29页
曲线拟合向导讲解_第3页
第3页 / 共29页
曲线拟合向导讲解_第4页
第4页 / 共29页
曲线拟合向导讲解_第5页
第5页 / 共29页
点击查看更多>>
资源描述

《曲线拟合向导讲解》由会员分享,可在线阅读,更多相关《曲线拟合向导讲解(29页珍藏版)》请在金锄头文库上搜索。

1、Mathworks Tech-Note 1508 曲线拟合向导1 介绍2 Mathworks 产品的曲线拟合特色a 曲线拟合工具箱(Curve Fitting Toolbox)b Matlab 内建函数与其他的带有曲线拟合能力的附加产品(工具箱)c 线性曲线拟合d 非线性曲线拟合3 加权曲线拟合方法a 曲线拟合工具箱b 统计工具箱c 优化工具箱4 利用曲线拟合工具箱提高曲线拟合结果5 其他的相关资料第1节: 简介MATLAB即有内建的解决很多通常遇到的曲线拟合问题的能力,又具有附加这方面的产品。本技术手册描述了几种拟合给定数据集的曲线的方法,另外,本手册还解释了加权曲线拟合、针对复数集的曲线拟

2、合以及其他一些相关问题的拟合技巧。在介绍各种曲线拟合方法中,采用了典型例子的结合介绍。第2节: MathWorks产品的曲线拟合特色MATLAB有可以用于曲线拟合的内建函数。MathWorks公式也提供了很多工具箱可以用于曲线拟合。这些方法可以用来做线性或者非线性曲线拟合。MATLAB也有一个开放的工具箱曲线拟合工具箱(Curve Fitting Toolbox),她可以用于参数拟合,也可以用于非参数拟合。本节将介绍曲线拟合工具箱与其他工具箱、以及各种MATLAB可以用于曲线拟合的内建函数的详细特征。a 曲线拟合工具箱曲线拟合工具箱是专门为数据集合进行曲线拟合而设计的。这个工具箱集成了用MAT

3、LAB建立的图形用户界面(GUIs)和M文件函数。曲线拟合向导 Genial USTC 2004-4-18 利用工具箱的库方程(例如线性,二次,高阶多项式等)或者是用户自定义方程(局限于用户的想象力)可以进行参数拟合。当你想找出回归系数以及他们背后的物理意义的时候就可以采用参数拟合。 通过采用平滑样条或者其他各种插值方法,你就可以进行非参数拟合。当回归系数不具有物理意义并且不在意他们的时候,就采用非参数拟合方法。曲线拟合工具箱提供了如下功能: 数据回归,譬如 截面(?sectioning)与平滑; 标准线性最小二乘拟合,非线性最小二乘拟合,加权最小二乘拟合,约束二乘(constrained l

4、east squares)拟合 以及 稳健(robust)拟合; 根据诸如 R2 以及 误差平方和(SSE)确定的拟合性能的统计特征。请查阅曲线拟合工具箱提供的demos。b MATLAB内建函数与具有曲线拟合能力的其他工具箱除了曲线拟合工具箱,MATALB与其他工具箱也提供了些可以用于解决线性和非线性曲线拟合的功能。本节列举并解释了其中几个。c 利用MATLAB内建函数进行线性曲线拟合函数 描 述polyfit 用多项式进行数据拟合。polyfit(X,Y,N)对数据X,Y拟合N阶多项式系数,P(X(I)=Y(I), 在最小二乘意义上。 反斜线或者矩阵阵左除。如果A是一个方阵,AB 基本上与

5、inv(A)*B一致的,是采用的不同计算方式而已。polyval 在给定点计算多项式的值corrcoef 计算两个向量的相关系数。它可以与polyfit和polyval函数一起用来在实际数据和拟合输出之间计算R2 相关系数下面给出一个利用corref计算R值的例子:load censusp,s=polyfit(cdate,pop,2);Output=polyval(p,cdate);Corrolation=corroef(cate,Output);cdate 与它自身很好的相关,同样的 Output也与它自身很好相关。反对角线上元素是 2曲线拟合向导 Genial USTC 2004-4-18

6、cdate与 Output之间的相关性。这个值非常接近于1,因此实际数据与拟合结果能否较好的吻合。因此,这个拟合是“好”的拟合。(应该是这样判断的么?我怎么觉得应该通过pop与Output的相关性来判断拟合的好坏的呢?)利用反斜线操作符与polyfit函数进行回归与曲线拟合的更多的例子请参照MATLAB文档中的Regression and Curve Fitting一节。附加例子:数据集:t = 0 .3 .8 1.1 1.6 2.3;y = 0.5 0.82 1.14 1.25 1.35 1.40;plot(t,y,o), grid on方法1:多项式回归基于图形,数据可能通过二次多项式建模

7、如下:y = a0 +a1*t +a2*t其中未知系数a0,a1,a2可以通过最小二乘(通过最小化通过模型计算出来的数据的偏差的平方和)拟合计算。三个未知数6个方程如下:用6x3的矩阵表示:X = ones(size(t) t t.2;则结果通过反斜线操作符得到:a=Xya =0.53180.9191-0.2387因此二阶多项式模型为: y = 0.5318+0.9191*t-0.2387*t2曲线拟合向导 Genial USTC 2004-4-18 计算模型在均匀空间的值,并将原来的值画在同一个图形上: T=(0:.1:2.5);Y=ones(size(T) T T.2)*a;plot(T,

8、Y,-t,y,o),grid on方法2: 线性参数回归建立模型:X=ones(size(t) exp(-t) t.*exp(-t);a = Xy;T=(0:.1:2.5);Y=ones(size(T) exp(-T) T.exp(-T)*a;plot(T,Y,-,t,y,o),grid on曲线拟合向导 Genial USTC 2004-4-18方法3: 多元回归如果y是一个包含多个独立变量的函数,表示变量间的相邻关系的矩阵方程可以通过附加数据进行扩展。假设我们测量参数x1、x2的少数几个值的输出y,观测值如下:x1 = .2 .5 .6 .8 1.0 1.1;x2 = .1 .3 .4 .

9、9 1.1 1.4;y = .17 .26 .28 .23 .27 .24;本数据的一个多元模型是:多元回归解决的是通过最小二乘拟合求未知系数a0,a1,a2。通过构造回归矩阵X构造和解决同步方程,依然采用反斜线操作符。X=ones(size(x1) x1 x2;a=Xy;为了评价模型,求取绝对误差的最大值:Y = X *a;MaxErr = max(abs(Y-y);实例分析:曲线拟合(本节来自matlab的在线帮助文档)本节提供了以实际数据分析形式的在MATLAB中的数据分析基本能力的概貌。下面的例子是以收集的人口普查数据为基础,采用MATLAB函数对数据进行实验拟合: 多项式拟合 残差分

10、析 指数拟合 误差界限1 导入数据load census (census.mat包含了美国1790年到1990年的人口数据)其中包括两个变量:cdate与popcdate 是从1790以10递增到1990的一个列向量,是年份数;pop 是cdate中年份相应的人口数据向量曲线拟合向导 Genial USTC 2004-4-182 多项式拟合首先我们想通过简单的多项式对普查数据进行拟合。利用MATLAB中的两个函 数进行处理:polyfit 与 polyval 。polyfit函数是在给定阶次多项式上对数据进行最小二乘意思上的最优拟合。假设采用4阶多项式,拟合过程为: p=polyfit(cda

11、te,pop,4)Warning: Polynomial is badly conditioned. Remove repeated data pointsor try centering and scaling as described in HELP POLYFIT.p = 1.0e+005 *0.0000 -0.0000 0.0000 -0.0126 6.0020警告的产生是因为polyfit函数用很大的值cdate作为基本数据,用他来产生范德蒙矩阵(Vandermonde matrix),具体细节的可以在polyfit的m文件中看到。cdate的展开导致尺度标准问题,一个解决办法就是标

12、准化cdate数据。预处理:标准化数据标准化处理是为了提高后期数值计算精度而进行的尺度变化处理。一个处理办法是: sdate=(cdate-mean(cdate)./std(cdate);然后再以标准化后数据进行4阶多项式拟合: p=polyfit(sdate,pop,4)p = 0.7047 0.9210 23.4706 73.8598 62.2285通过图形我们来观察其拟合的好坏: pop4=polyval(p,sdate); plot(cdate,pop4,-,cdate,pop,+), grid on曲线拟合向导 Genial USTC 2004-4-18另外一个规范化数据的方法就是通

13、过结果与单位的知识进行转换。如,对于本数据集,选择1790作为0年也可以得到较为满意的解。3 残差分析一个评价拟合好坏的测度就是残差观测值与预测值的差异。对不同的拟合,利用残差进行比较。从拟合图形和残差上,我们显而易见,采用标准化数据比简单的多项式可能对数据有更好的拟合。利用如下命令,分别对数据进行1阶,2阶,4阶的拟合,作图,并比较其残差: load census sdate=(cdate-mean(cdate)./std(cdate); p1=polyfit(sdate,pop,1); pop1=polyval(p1,sdate); plot(cdate,pop1,b-,cdate,pop

14、,g+); res1=pop-pop1; figure,plot(cdate,res1,g+); p=polyfit(sdate,pop,2); pop2=polyval(p,sdate); figure,plot(cdate,pop2,b-,cdate,pop,g+) res2=pop-pop2; figure,plot(cdate,res2,g+); p=polyfit(sdate,pop,4); pop4=polyval(p,sdate); figure,plot(cdate,pop4,b-,cdate,pop,g+) res4=pop-pop4; figure,plot(cdate,res4,g+); max(abs(res1)ans = 41.3987 max(abs(res2)ans = 7.5361 max(abs(res4)ans = 6.3455曲线拟合向导 Genial USTC2004-4-184 指数拟合看前面的人口图形,发现人口数据曲线有些与指数曲线相似。利用这一点,我们试着对人口数据值的对数进行拟合,依然采用前面的标准化方法。 logp1=polyfit(sdate,log10(pop),1); logpred1=10.polyval(logp1,sdate); semilogy(cdate,logpred1,-,cdate,pop,+);

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号