基本信息
文件名称:MATLAB中如何直接曲线拟合而不使用cftool的GUI界面.pdf
文件大小:95.51 KB
总页数:3 页
更新时间:2025-02-20
总字数:约1.88千字
文档摘要

MATLAB中如何直接曲线拟合,而不使用cftool的GUI界面

(这里使用的版本是MATLAB2009a)

我们知道在MATLAB中有个很方便的曲线拟合工具:cftool

最基本的使用方法如下,假设我们需要拟合的点集存放在两个向量X

和Y中,分别储存着各离散点的横坐标和纵坐标,则在MATLAB中

直接键入命令cftool(X,Y)就会弹出CurveFittingTool的GUI界面,

点击界面上的fitting即可开始曲线拟合。

MATLAB提供了各种曲线拟合方法,例如:Exponential,Fourier,

Gaussing,Interpolant,Polynomial,Power,Rational,SmoothingSpline,

SumofFunctions,Weibull等,当然,也可以使用CustomEquations.

cftool不仅可以绘制拟合后的曲线、给出拟合参数,还能给出拟合好

坏的评价参数(Goodnessoffit)如SSE,R-square,RMSE等数据,非常

好用。但是如果我们已经确定了拟合的方法,只需要对数据进行计算,

那么这种GUI的操作方式就不太适合了,比如在m文件中就不方便

直接调用cftool。

MATLAB已经给出了解决办法,可以在cftool中根据情况生成特定

的m文件,让我们直接进行特定的曲线拟合并给出参数。具体方法

在帮助文件的如下文档中\CurveFittingToolbox\GeneratingM-files

FromCurveFittingTool,以下简单举例说明:

以双色球从第125期到第145期蓝球为Y值:

Y=[1215417115716161114212913101211];

X=1:1:21;

cftool(X,Y);

点击Fitting选择最常用的多项式拟合(Polynomial),选择3次多项式拟

合(cubic),然后就会出现如下拟合图形:

然后在CurveFittingTool窗口中点击\File\GenerateM-file即可

生成能直接曲线拟合的函数文件,其中使用的拟合方法就是刚才

使用的三次多项式拟合,文件中这条语句证明了这一点:

ft_=fittype(poly3);

保存该文件(默认叫做createFit.),调用方法和通常的文件一

样,使用不同的X和Y值就能拟合出不同的曲线。但是,这种调用

方法只能看到一个拟合出的图形窗口,拟合参数以及Goodnessoffit

参数都看不到了,因此需要在刚才的文件中稍作修改。

找到这句话:

cf_=fit(X(ok_),Y(ok_),ft_);

修改为:

[cf_,gof]=fit(X(ok_),Y(ok_),ft_);

然后将函数声明functioncreateFit(X,Y)修改为function[cf_,gof=

createFit(X,Y),这样我们再调用试试看:

Y=[1215417115716161114212913101211];

X=1:1:21;

[c,g]=createFit(X,Y);

这样就会弹出拟合图形的窗口,然后再键入c和g,就能查看多项式

拟合参数及拟合评价参数啦。

c和g分别是1×1cfit数据类型和1×1struct数据类型。本例中c包括

p1,p2,p3,p4四个成员,即三次曲线拟合的参数;g包括rmse等成员,

即拟合评价参数。如果要在程序中引用这些数据,用法和C/C++一

样:

a=c.p1;

b=g.rmse;

MATLAB中直接曲线拟合就讲到这里,相信大家用过一两次后就能

熟练使用了。