matlab数据拟合
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
习题:
体重约70kg的某人在短时间内喝下两瓶啤酒后,隔一段时间 测量他的血液中酒精含量(mg/100ml),得到如下数据,使用所
给数据用函数 (t)atbect 进行拟合,求出常数 a , b , c.
曲线拟合是根据实验获得的数据,建立自变量与因变量之 间的函数关系,为进一步的深入研究提供工具。
引例:浓度变化规律 在化学反应中,为研究某化合物的浓度随时间的变化规
律,测得一组数据如表1
表1
t 时间 y浓度
123 4
5
4 6.4 8.0 8.4 9.28
67
8
9.5 9.7 9.86
t时间 y浓度
9 10 11 12 13 14 15 16 10 10.2 10.32 10.42 10.5 10.55 10.58 10.6
1. 做曲线拟合前,必须通过物理规律或者实际建模给出其特定 的式子,式子中有待定的未知参量,只是通过拟合来求解未知参量;
2. 如果不能得到模型,如果通过其散点图形可以看出其规律, 也可以做拟合;
3. 拟合方法只适合自变量为一个的情况,且拟合结果的优劣一 般通过观察得到,没有数据分析,对于多个自变量的情况或者想得 到拟合的好坏,需要使用回归分析的方法。
这个式子为线性函数!(1次多项式)
作如下编程:
t=1:16; y=[4 6.4 8.0 8.4 9.28 9.5 9.7 9.86 10 10.2 10.32 10.42 10.5 10.55 10.58 10.6]; y1=1./y; x1=exp(-t); a=polyfit(x1,y1,1); plot(t,1./(a(2)+a(1)*exp(-t))); hold on; plot(t,y,’+’)
提示
根据散点图,可以认为y与t的函数关系符合Logistic模型
规律
y
,其1中a,b为待定,称为参数。参数的选择需要 a bet
科学的方法和实验修正。
函数形式确定以后,关键是要确定函数中含有的待定 参数a,b.
Biblioteka Baidu
二、曲线拟合的MATLAB实现
多项式函数拟合: a=polyfit(xdata,ydata,n)
1、编写M文件ex.m function y=ex(p, x) y=p(1)*exp(-p(2)*x)+p(3)*exp(-p(4)*x);
2、调用 p=lsqcurvefit('ex',[1 2 1 4],x,y); 拟合函数为
y= p(1)*exp(-p(2)*x)+p(3)*exp(-p(4)*x)
y=ae-bx+ce-dx
编写M文件ex.m
function y=ex(p, x) y= p(1)*exp( -p(2)*x)+ p(3)*exp( -p(4)*x);
输入形参为x , 在 lsqcurvefit 命令中xdata为实参。待定参 数写为
p(1) , p(2) , …,p(n) 此外,我们对待定参数应有一个大致的估计,体现在拟 合命令 lsqcurvefit 中的初始向量p0中。
3、评价拟合效果
plot(x,y, 'o') hlod on xi=0:0.01:1; yi=ex(p,xi); plot(x,y)
注:若要求算点x处的函数值可用程序f=ex(p,x)计算。 如 x=0:0.1:1;
y=ex(p,x); plot(x,y) 练习函数绘图
总结:
曲线拟合需要注意的事项:
例如: x=0:0.1:1; y= [ 4.0000 2.8297 2.0183 1.4524 1.0550 0.7739
0.5733 0.4290 0.3242 0.2473 0.1903]; 绘图认识观测数据体现的函数关系: plot(x,y)
选择了拟合函数的形式为 y=ae-bx+ce-dx
其中(xdata,ydata)为观测数据,n为你认定的适合观测数据 的多项式的次数。 输出为
a =[a1…,an,an+1]
即与多项式f(x)=a1xn+…+anx+an+1对应
y
a
1 bet
不是多项式形式,但可以将他转化为多项式!
令 y' 1 , x' et , 上式可以转化为: y y'abx'.
一、拟合的概念 在生产实践和科学实验中,经常会遇到大量的不同类型的
数据(data).这些数据提供了有用的信息,可以帮助我们认识 事物的内在规律等.
在一项工程实践中,通过观测,得到了一个的函数关系 (xi,yi) i=1,2,…,n。由于工程的需要,我们希望揭示出反映 这组离散数据的一个的函数关系。
再用几何术语来表达:根据平面上的观测点,要求确定一个 函数曲线y=f(x), 使曲线尽量接近这些点。实现这个愿望的 方法简称为曲线拟合(fitting a curve).
表1中的数据反映了浓度随时间变化的函数关系,它是一种离散 关系.若需要推断第20、40分钟的浓度值,就要用一个解析的函数 y=f(t)来拟合表5.1中的离散数据,然后再算浓度f(20),f(40)。
首先将这些离散数据描绘在直角坐标系下,得到散点图。然 后观察浓度与时间之间呈现什么规律。
图5.1,浓度 y 随时 间 t 呈“抛物线” (二次函数)状变化.
一般的曲线拟合:p=lsqcurvefit(’Fun’,p0,xdata,ydata) (xdata,ydata)是观测数据。对于这组观测数据我们
选择了自认为是拟合效果比较好的函数形式f(x),其中参 数以字母表示,取值待定 .我们把这个函数形式写入名 为Fun的M文件.
例如:对于观测数据所选择的拟合函数为