MATLAB在数学建模中的应用 随手笔记(二)----- 数据拟合方法
9 g0 }1 u! {/ j一、多项式拟合5 ]3 R3 {2 L# p1 K) P7 E" R9 }
将数据点按多项式的形式进行拟合,使用最小二乘法,可以确定多项式的系数。多项式拟合有指令语句和图形窗口两种方法:4 S! X3 F' ^; r1 [$ w0 \% N* ~- x
1、多项式拟合指令
3 x1 U0 G+ K. u; N$ Wpolyfit(x,y,n) :多项式拟合,返回降幂排列的多项式系数。 q$ f/ g3 C% e* y
polyval(p,xi) :计算多项式的值。
% ~# P* k7 \" y; o: L( z其中,x,y是数据点的值;n是拟合的最高次幂;p是返回的多项式系数;xi是要求的点的横坐标。& b6 z- j* T" H( T6 D# B$ R" R
2、图像窗口的多项式拟合
' E/ T/ P' a" z* H5 H4 j在图形窗口中可以用菜单的方式对数据进行简单、快速、高效的拟合。, L$ d. b a+ a
具体步骤(2017b):
/ M( V/ Z9 w E% ] * L- D9 ~& r; d0 x, P
7 I7 q1 Y* [ m7 l6 z $ J1 r/ e7 V/ ]1 N
![]()
* j3 X; {8 e; d. V* Z2 [9 s3 n![]()
/ ~( u9 ?( g5 K$ S& s二、指定函数拟合; h5 c& f* u1 F, L# O. n
在MATLAB中也可以用用户自定义的函数进行拟合,通过下面的例子读者可以了解指定函数进行数据拟合的基本方法。
9 `2 ?5 `/ N+ @% _对该数据进行指定拟合:
* Y2 d. {3 D& z3 Ix=[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];%列向量2 u) G: }9 ~5 G3 S; a7 \
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];8 v! ?' j8 S: |
在MATLAB中可以用如下命令画出上述点的散点图2 l( a4 a, Z2 d1 l: ]
5 K# E N! p1 a- `6 e: h
![]()
9 T: O3 g7 ~/ g2 B知道其对应的函数形式为f(t)=acos(kt)e^wt,则可用MATLAB进行拟合。编写如下M文件:2 {* {- r2 j: L4 e, z
# E3 q; H. e" B. p3 N) T: k7 W8 h2 U
运行此程序,结果如下:& M% f0 z+ T R6 {& N7 c
) W% |3 R$ k& r8 _' `+ @2 T: S
![]()
3 G+ F9 F) Y) s: ^( E程序中,fittype函数是自定义拟合函数;cfun=fit(x,y,f)是根据自定义的拟合函数f来拟合数据x,y。注意:此处数据必须为列向量的形式。fittype函数和fit函数的用法和参数规则可参考Help" d& N& x+ j3 C
从结果可以看出,拟合的曲线为f(x)=0.9987cos(1.001t)e^-0.2066t。拟合曲线给出了数据的大致趋势,效果很好,并给出了各参数的置信区间。
0 @/ I# O- k9 M1 \注意:command window里给出了warning,是由a,k,w三个参数的初始值未给出导致的,因此如果拟合结果不理想,可以多运行几次。
; h' Z1 q; W/ H1 b' `$ V三、曲线拟合工具箱& ^5 H* e/ [. q8 B" V4 S
MATLAB的曲线拟合工具箱功能非常的强大,使用也很方便。 详细步骤:![]()
- k) [8 _- _; x* p ~7 a, N; h: p/ p. C
. I. e/ g2 ]+ |! V7 y9 q: o3 [界面中有五个按钮,功能是:
6 ^8 G9 Z/ B. F6 _! Q2 }Data:输出、查看和平滑数据;; k' s- t* p$ d$ O
Fitting:拟合数据、比较拟合曲线和数据集;
& G6 E. z; F5 }" g; @- GExclude:可从拟合曲线中排除特殊的数据点;
3 @6 W: [ X: d. P; {% EPlotting:选定区间后,单击按钮可选择原始数据和拟合数据作图;8 N4 U# M4 C* o
Analysis:对拟合进行满意度、偏差等分析。5 i. p+ X* I' [) |* W/ v d
曲线拟合工具箱中包含了各种常用的数据拟合方法,可以对各种函数进行拟合,具体的操作方法请参考Help。' Y& H& b+ P7 ^$ T' K: G8 z n
2 V$ p! _( r8 [& F$ d/ x9 `$ U+ y; }4 P! ]/ w7 ^, h
|