编辑: 黎文定 2019-09-19
曲线拟合工具箱 CFtool 使用简介

一、CFtool 简介 Matlab 有一个功能强大的曲线拟合工具箱 cftool,使用方便,能实现多种 类型的线性、非线性曲线拟合.

它的使用简介如下(Matlab R2011b 中). 假设我们要拟合的函数形式是 y=A*x*x + B*x, 且A>0, B>0 . 1.在命令行输入数据: x=[110.3323 148.7328 178.064 202.8258033 224.7105 244.5711 262.908 280.0447 296.204 311.5475];

y=[5

10 15

20 25

30 35

40 45 50];

2.启动曲线拟合工具箱: cftool 3.进入曲线拟合工具箱界面"Curve Fitting tool": 1)利用 X data 和Ydata 的下拉菜单读入数据 x,y,这时会自动画出数据 集的曲线图,注意右侧的 Auto fit 选项;

2)通过下拉菜单"Type of fit"选择拟合曲线的类型,工具箱提供的拟合 类型有: (1)Custom Equations:用户自定义的函数类型 (2)Exponential:指数逼近,有2种类型, a*exp(b*x) 、 a*exp(b*x) + c*exp(d*x) (3)Fourier:傅立叶逼近,有7种类型,基础型是 a0 + a1*cos(x*w) + b1*sin(x*w) (4) Gaussian: 高斯逼近, 有8种类型, 基础型是 a1*exp(-((x-b1)/c1)^2) (5)Interpolant:插值逼近,有4种类型,linear、nearest neighbor、 cubic spline、shape-preserving (6) Polynomial: 多形式逼近, 有9种类型, linear polynomial、 quadratic polynomial、cubic polynomial 以及 4-9th degree polynomial (7)Power:幂逼近,有2种类型,a*x^b 、a*x^b + c (8)Rational:有理数逼近,分子(Numerator)、分母(Denominator)共有 的类型是 linear rational、 quadratic rational、 cubic rational、 4-5th degree rational;

此外,分子(Numerator)还包括 constant 型(9)Smoothing Spline:平滑样条逼近 (10)Sum of Sin Functions:正弦曲线逼近,有8种类型,基础型是 a1*sin(b1*x + c1) (11)Weibull:只有一种,a*b*x^(b-1)*exp(-a*x^b) 3)选择好所需的拟合曲线类型及其子类型,并进行相关设置: ――如果是非自定义的类型,根据实际需要点击"Fit options"按钮,设 置拟合算法、修改待估计参数的上下限等参数;

――如果选 Custom Equations,点击"New"按钮,弹出自定义函数等式窗 口,有"Linear Equations 线性等式"和"General Equations 构造等式"两种 标签.

151 在本例中选 Custom Equations,点击"New"按钮,选择"General Equations" 标签,输入函数类型 y=a*x*x + b*x,设置参数 a、b 的上下限(注 意这里我们假设规定 a>0, b>0,实际不一定如此!),然后点击 OK. 4)类型设置完成后,点击"Apply"按钮,就可以在 Results 框中得到拟合 结果如下: General model: f(x) = a*x^2 + b*x Coefficients (with 95% confidence bounds): a = 0.0005064 (0.0004967, 0.000516) b = 1.549e-011 (fixed at bound) Goodness of fit: SSE: 6.146 R-square: 0.997 Adjusted R-square: 0.997 RMSE: 0.8263 同时,也会在工具箱窗口中显示拟合曲线:

120 140

160 180

200 220

240 260

280 300

5 10

15 20

25 30

35 40

45 50 y vs. x fit

1 这样,就完成一次曲线拟合,十分方便快捷.当然,如果你觉得拟合效果不 好,还可以在"Fitting"窗口点击"New fit"按钮,按照步骤 3)~4)进行一 次新的拟合. 不过,需要注意的是,cftool 工具箱只能进行单个变量的曲线拟合,即待 拟合的公式中,变量只能有一个.对于混合型的曲线,例如 y = a*x + b/x , 工具箱的拟合效果并不好.

二、CFtool 工具与 polyfit 函数的比较 还是上述数据,前面步骤不变,但本次使用拟合曲线的类型为

3 次多项式拟 合.

152 在本例中先选"polynomial",再选择"cubic polynomial",然后点击 OK.类型设置完成后,点击"Apply"按钮,就可以在 Results 框中得到拟合结 果如下: Linear model Poly3: f(x) = p1*x^3 + p2*x^2 + p3*x + p4 Coefficients (with 95% confidence bounds): p1 = -1.625e-007 (-1.653e-007, -1.598e-007) p2 = 0.0006669 (0.0006652, 0.0006686) p3 = -0.03436 (-0.03471, -0.03401) p4 = 0.8915 (0.8693, 0.9137) Goodness of fit: SSE: 2.825e-006 R-square:

1 Adjusted R-square:

1 RMSE: 0.0006862 同样,也会在工具箱窗口中显示拟合曲线:

120 140

160 180

200 220

240 260

280 300

5 10

15 20

25 30

35 40

45 50 y vs. x fit

1 作为比较,我们使用 polyfit 函数编程如下: x=[110.3323 148.7328 178.064 202.8258033 224.7105 ... 244.5711 262.908 280.0447 296.204 311.5475];

y=[5

10 15

20 25

30 35

40 45 50];

format long A=polyfit(x,y,3) format short z=polyval(A,x);

plot(x,y,'bd',x,z,'r');

153 A= -0.00000016254732 0.00066687828355 -0.03435832641962 0.89150077051770

100 150

200 250

300 350

5 10

15 20

25 30

35 40

45 50

55 通过对结果和图像的比较发现:两个过程的结果完全一致. 但非常显然:使用 cftool 工具更具一般性,可选择的拟合曲线的类型丰富, 使用范围广. 作为练习,读者可以利用上节的附录

1 的关于世博会官网的统计数据(8 月30 日前每日入 园的人数) ,选择拟合曲线的类型为

3 次多项式,利用 Matlab 对第 x 天和该天参观的人数 进行拟合.所得结果与利用 Excel 的结果应该是一致的. y 154

下载(注:源文件不在本站服务器,都将跳转到源网站下载)
备用下载
发帖评论
相关话题
发布一个新话题