MATLAB曲线拟合(含实例) 下载本文

[matlab 曲线拟合(含实例)]

matlab曲线拟合 - 非常好非常全面的介绍M拟合的参考资料

Mathworks Tech-Note 1508 曲线拟合向导 1. 介绍

2. Mathworks 产品的曲线拟合特色

a. 曲线拟合工具箱(Curve Fitting Toolbox)

b. Matlab 内建函数与其他的带有曲线拟合能力的附加产品(工具箱) c. 线性曲线拟合 d. 非线性曲线拟合 3. 加权曲线拟合方法 a. 曲线拟合工具箱 b. 统计工具箱 c. 优化工具箱

4. 利用曲线拟合工具箱提高曲线拟合结果 5. 其他的相关资料

第1节: 简介

MATLAB即有内建的解决很多通常遇到的曲线拟合问题的能力,又具有附加这方面的产品。本技术手册描述了几种拟合给定数据集的曲线的方法,另外,本手册还解释了加权曲线拟合、针对复数集的曲线拟合以及其他一些相关问题的拟合技巧。在介绍各种曲线拟合方法中,采用了典型例子的结合介绍。

第2节: MathWorks产品的曲线拟合特色

MATLAB有可以用于曲线拟合的内建函数。MathWorks公式也提供了很多工具箱可以用于曲线拟合。这些方法可以用来做线性或者非线性曲线拟合。MATLAB也有一个开放的工具箱――曲线拟合工具箱(Curve Fitting Toolbox),她可以用于参数拟合,也可以用于非参数拟合。本节将介绍曲线拟合工具箱与其他工具箱、以及各种MATLAB可以用于曲线拟合的内建函数的详细特征。

a. 曲线拟合工具箱

曲线拟合工具箱是专门为数据集合进行曲线拟合而设计的。这个工具箱集成了用MATLAB建立的图形用户界面(GUIs)和M文件函数。

曲线拟合向导 Genial @ USTC 2004-4-18

? 利用工具箱的库方程(例如线性,二次,高阶多项式等)或者是用户自定义方程(局限于用户的想象力)可以进行参数拟合。当你想找出回归系数以及他们背后的物理意义的时候就可以采用参数拟合。

? 通过采用平滑样条或者其他各种插值方法,你就可以进行非参数拟合。当回归系数不具有物理意义并且不在意他们的时候,就采用非参数拟合方法。

曲线拟合工具箱提供了如下功能:

? 数据回归,譬如 截面(?sectioning)与平滑;

? 标准线性最小二乘拟合,非线性最小二乘拟合,加权最小二乘拟合,约束二乘(constrained least squares)拟合 以及 稳健(robust)拟合;

? 根据诸如 R2 以及 误差平方和(SSE)确定的拟合性能的统计特征。 请查阅曲线拟合工具箱提供的demos。

b. MATLAB内建函数与具有曲线拟合能力的其他工具箱

除了曲线拟合工具箱,MATALB与其他工具箱也提供了些可以用于解决线性 和非线性曲线拟合的功能。本节列举并解释了其中几个。 c. 利用MATLAB内建函数进行线性曲线拟合

函数 描 述

polyfit 用多项式进行数据拟合。polyfit(X,Y,N)对数据X,Y拟合N阶多项

式系数,P(X(I))~=Y(I), 在最小二乘意义上。

\\ 反斜线或者矩阵阵左除。如果A是一个方阵,A\\B 基本上与 inv(A)*B一致的,是采用的不同计算方式而已。 polyval 在给定点计算多项式的值

corrcoef 计算两个向量的相关系数。它可以与polyfit和polyval函数一

起用来

在实际数据和拟合输出之间计算R2 相关系数 下面给出一个利用corref计算R值的例子: load census

[p,s]=polyfit(cdate,pop,2); Output=polyval(p,cdate);

Corrolation=corroef(cate,Output);

cdate 与它自身很好的相关,同样的 Output也与它自身很好相关。反对角线上元素是 2

曲线拟合向导 Genial @ USTC 2004-4-18

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:多项式回归

基于图形,数据可能通过二次多项式建模如下: y = a0 +a1*t +a2*t

其中未知系数a0,a1,a2可以通过最小二乘(通过最小化通过模型计算 出来的数据的偏差的平方和)拟合计算。三个未知数6个方程如下:

用6x3的矩阵表示:

X = [ones(size(t)) t t.^2]; 则结果通过反斜线操作符得到: a=X\\y a = 0.5318 0.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,Y,'-'t,y

,'o'),grid on 方法2: 线性参数回归 建立模型:

X=[ones(size(t)) exp(-t) t.*exp(-t)];