MATLAB在数学建模中的应用 随手笔记(二)----- 数据拟合方法
: i. L4 d+ }; ^1 K一、多项式拟合8 n3 D7 v2 d2 q) D# T& t
将数据点按多项式的形式进行拟合,使用最小二乘法,可以确定多项式的系数。多项式拟合有指令语句和图形窗口两种方法:
0 X5 c" _- P" h ]8 p3 R' x1、多项式拟合指令
* G) D. c2 L8 m+ O# Rpolyfit(x,y,n) :多项式拟合,返回降幂排列的多项式系数。& Q6 Y, e+ a6 g2 ~9 L0 h: I! H
polyval(p,xi) :计算多项式的值。! P% A) l! a7 S- Z4 y: y
其中,x,y是数据点的值;n是拟合的最高次幂;p是返回的多项式系数;xi是要求的点的横坐标。
7 D8 E! l& X( n5 R/ p' f7 }5 S2、图像窗口的多项式拟合: b4 B/ Q& y! ]4 l, `: T$ ^
在图形窗口中可以用菜单的方式对数据进行简单、快速、高效的拟合。
( ^! b! j: D2 Q: n6 A具体步骤(2017b):
4 I& s9 _7 s3 N6 h/ P 9 h" s% @, C. n
: J ?; S" k- n6 p$ z; {8 o" B
![]()
9 D4 }% L- i) s9 C6 s0 j7 x![]()
3 q4 K1 c* E2 O' i* k: c# Z. R![]()
+ Y" ]6 z& c* O8 B+ G0 Z二、指定函数拟合
, [+ s8 ~! A! F/ |* K2 ~在MATLAB中也可以用用户自定义的函数进行拟合,通过下面的例子读者可以了解指定函数进行数据拟合的基本方法。6 f1 ?5 s! M$ H2 `3 R
对该数据进行指定拟合:
9 ^: \6 ]' @; y# Ax=[0;0.4;1.2;2;2.8;3.6;4.4;5.2;6;7.2;8;9.2;10.4;11.6;12.4;13.6;14.4;15];%列向量
6 ]# X, i! ^( W% |y=[1;0.85;0.29;-0.27;-0.53;-0.4;-0.12;0.17;0.28;0.15;-0.03;-0.15;-0.071;0.059;0.08;0.032;-0.015;-0.02];
2 X% B) r& Q0 B+ }: {) ^" |在MATLAB中可以用如下命令画出上述点的散点图
6 C7 B/ l4 |" B# n
$ m+ `9 `8 N, N2 x: Z! w; J 4 L+ h9 `2 g4 b
知道其对应的函数形式为f(t)=acos(kt)e^wt,则可用MATLAB进行拟合。编写如下M文件:
1 f4 E P! P0 E
; K( v( ]; |$ ~. I9 c2 v6 O
运行此程序,结果如下:
, k' W( q* `7 q; W( c s1 g T/ D
6 L/ _% p. @. p5 Y( u* m, t9 j* p
![]()
' }4 [8 V7 `" s4 h8 _程序中,fittype函数是自定义拟合函数;cfun=fit(x,y,f)是根据自定义的拟合函数f来拟合数据x,y。注意:此处数据必须为列向量的形式。fittype函数和fit函数的用法和参数规则可参考Help
: |3 _" _( h9 d从结果可以看出,拟合的曲线为f(x)=0.9987cos(1.001t)e^-0.2066t。拟合曲线给出了数据的大致趋势,效果很好,并给出了各参数的置信区间。
5 \% v' o" M5 B; g注意:command window里给出了warning,是由a,k,w三个参数的初始值未给出导致的,因此如果拟合结果不理想,可以多运行几次。
- Z+ W( H" x5 c' x( O7 V三、曲线拟合工具箱9 j: J* w: A4 R% f+ G8 w
MATLAB的曲线拟合工具箱功能非常的强大,使用也很方便。 详细步骤:![]()
; d" P# Z6 O) T8 I+ x' O3 a 8 a2 `2 T/ C; o0 R; X
2 f' N/ P# V/ ~
界面中有五个按钮,功能是:4 r: E7 p" e& D3 ~& |
Data:输出、查看和平滑数据;
7 C: ?, W+ q. F& z7 X2 W. lFitting:拟合数据、比较拟合曲线和数据集;, o" B9 g* l$ P c5 v5 `8 f
Exclude:可从拟合曲线中排除特殊的数据点;
( a$ V$ ?9 x1 ~9 GPlotting:选定区间后,单击按钮可选择原始数据和拟合数据作图;
8 L6 ]3 b! e$ R/ W6 ~4 L7 E2 XAnalysis:对拟合进行满意度、偏差等分析。
: `+ O- y0 Y/ @8 `- Z! p曲线拟合工具箱中包含了各种常用的数据拟合方法,可以对各种函数进行拟合,具体的操作方法请参考Help。
2 Q8 w# Z1 z) a6 t
. n. |5 p$ J) \, _) i! n9 w
' N- u% q- v: E' L% i! I4 K2 U, d |