MATLAB数据拟合例子
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
MATLAB数据拟合例子(一次函数、指数函数、双曲线)
(2010-06-03 01:44:30)转载▼
分类:数学工具
标签:杂
谈
一次函数:(a+bx = y)
%先求出拟合函数
format long;
x = [2001 2002 2003 2004 2005 2006 2007 2008 2009];
y = [32.2 31.3 29.7 28.6 27.5 26.1 25.3 23.7 22.7];
d = [1 1 1 1 1 1 1 1 1];
a=[d;x];
b = a*y';
a=a*a';
c=a\b
c =
1.0e+003 *
2.436797222221444
-0.001201666666666
%所以,拟合函数为 y = 1.0e+003 *(2.436797222221444 - 0.001201666666666*x %根据拟合函数求估测值
format short;
x = [2010, 2011, 2012, 2013, 2014]
1.0e+003 *(
2.436797222221444 - 0.001201666666666*x)
ans =
21.4472 20.2456 19.0439 17.8422 16.6406
指数函数:( y = exp(a + b*x))
>> x = [2001 2002 2003 2004 2005 2006 2007 2008 2009];
y = [21.5 15.9 11.8 8.7 6.5 4.8 3.5 2.6 2.0]; y=log(y');
d = [1 1 1 1 1 1 1 1 1];
a=[d;x];
b = a*y;
a=a*a';
c=a\b
c =
601.9448
-0.2993
%所以,拟合函数为 y = exp(601.9448 - 0.2993*x)
%根据拟合函数求估测值
>> x = [2010, 2011, 2012, 2013, 2014]
exp(601.9448 - 0.2993*x)
ans =
1.4216 1.0539 0.7813 0.5792 0.4294
双曲线:(1/y = a + b/x)
format long;
x = [2002 2003 2004 2005 2006 2007 2008 2009]; y = [46.2 32.6 26.7 23.0 20.0 18.9 17.5 16.3]; t=1./x;
u = 1./y';
d = [1 1 1 1 1 1 1 1];
a = [d; t];
b = a*u;
a=a*a';
c=a\b
c =
1.0e+004 *
0.001110403638151
-2.218020870743078
format short;
x = [2010, 2011, 2012, 2013, 2014]
x./(1.0e+004 * (0.001110403638151*x -2.218020870743078)) ans =
14.4704 13.4059 12.4882 11.6888 10.9862