没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
曲线拟合向导 Genial @ USTC 2004-4-18
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)拟合;
• 根据诸如 R
2
以及 误差平方和(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 函数一起用来
在实际数据和拟合输出之间计算
R
2
相关系数
下面给出一个利用 corref 计算 R
2
值的例子:
load census
[p,s]=polyfit(cdate,pop,2);
Output=polyval(p,cdate);
Corrolation=corroef(cate,Output);
cdate 与它自身很好的相关,同样的 Output 也与它自身很好相关。反对角线上元素是
曲线拟合向导 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*t
2
曲线拟合向导 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)];
a = X\y;
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 1.1 1.4]';
y = [.17 .26 .28 .23 .27 .24]';
本数据的一个多元模型是:
多元回归解决的是通过最小二乘拟合求未知系数 a0,a1,a2。通过构造回归矩阵 X
构造和解决同步方程,依然采用反斜线操作符。
X=[ones(size(x1)) x1 x2];
a=X\y;
为了评价模型,求取绝对误差的最大值:
Y = X *a;
MaxErr = max(abs(Y-y));
实例分析:曲线拟合(本节来自 matlab 的在线帮助文档)
本节提供了以实际数据分析形式的在 MATLAB 中的数据分析基本能力的概貌。下面
的例子是以收集的人口普查数据为基础,采用 MATLAB 函数对数据进行实验拟合:
••••• 多 项 式拟合
• 残差分析
• 指数拟合
• 误差界限
1. 导入数据
load census (census.mat 包含了美国 1790 年到 1990 年的人口数据)
其中包括两个变量:cdate 与 pop
cdate 是从 1790 以 10 递增到 1990 的一个列向量,是年份数;
pop 是 cdate 中年份相应的人口数据向量
剩余39页未读,继续阅读
资源评论
lumirous1
- 粉丝: 16
- 资源: 20
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功