本文通过实例详细介绍了MATLAB曲线拟合工具箱,便于理解曲线拟合工具箱(cftool )。
目录1 .实例介绍2 .进入曲线拟合工具箱界面3 .加载数据4 .加载数据5 .选择拟合曲线类型6 .进行曲线拟合7 .拟合结果分析8 .其
我知道
x=[0. 20.50.80.91.31.41.92.12.52.62.93.0 ];
y=[1. 27792.15962.73112.59742.40681.62151.41780.99550.9660.8837.9639 (00311.1233.1583 ) ];
然后,基于某一物理或数学关系来确定y=f(x )的表示形式,求出与拟合结果对应的系数。
2 .进入曲线拟合工具箱界面的两种方法,第一种:
打开APP栏中的“曲线拟合工具箱”(Curve Fitting ),
第二,直接在命令行窗口中键入cftool。
进入界面后,将显示以下窗口:
3 .加载数据以创建新的. m文件,然后写入以下代码:
clc; clear x=[0.20.50.80.9、1.3、1.4、1.9、2.1、2.2、2.6、2.9、3.0]; y=[1. 27792.15962.73112.59742.40681.62151.41780.99560.88370.96391.0031.12331.1583 ]; 作为拟合曲线所需的数据。
4 .加载数据在上述窗口中选择相应的数据和匹配选项。
5 .从“选择拟合曲线类型”下拉菜单中选择拟合曲线类型。
工具箱具有以下拟合类型:
Custom Equations:用户定义的函数类型;Exponential:有指数近似、aexp(bx ) aexp(bx ) aexp(bx ) aexp(bx ) aexp(bx ) c*两种
w ) + b 1 ∗ s i n ( x ∗ w ) a0 + a1*cos(x*w) + b1*sin(x*w) a0+a1∗cos(x∗w)+b1∗sin(x∗w);Gaussian:刻苦的天空逼近,有8种类型,基础型是 a 1 ∗ e x p ( − ( ( x − b 1 ) / c 1 ) 2 ) a1*exp(-((x-b1)/c1)^2) a1∗exp(−((x−b1)/c1)2);Interpolant:插值逼近,有4种类型,Nearest neighbor、Linear、Cubic、Shape-preserving(PCHIP);Linear Fitting:线性拟合;Polynomial:多形式逼近;Power:幂逼近,有2种类型, a ∗ x b a*x^b a∗xb 、 a ∗ x b + c a*x^b + c a∗xb+c;Rational:有理数逼近;Smoothing Spline:平滑逼近;Sum of Sin Functions:正弦曲线逼近,有8种类型,基础型是 a 1 ∗ s i n ( b 1 ∗ x + c 1 ) a1*sin(b1*x + c1) a1∗sin(b1∗x+c1);Weibull:只有一种, a ∗ b ∗ x ( b − 1 ) ∗ e x p ( − a ∗ x b ) a*b*x^(b-1)*exp(-a*x^b) a∗b∗x(b−1)∗exp(−a∗xb); 6. 进行曲线拟合假设我们以 y = a ∗ s i n ( b ∗ x ) ∗ e x p ( c ∗ x ) + d y =a*sin(b*x)*exp(c*x)+d y=a∗sin(b∗x)∗exp(c∗x)+d的表达形式进行拟合,则选择”Custom Equation”,在方框中输入相应的函数表达式,拟合过程及结果图像如下图所示:
可以发现,曲线和拟合程度较差。这是因为,对同一问题的拟合情况,每次可能都不一样,这取决对于参数a,b,c,d的StartPoint的选取。解决方法是在拟合过程中,将a,b,c和d也作为约束拟合的条件,例子中已知a,b,c,d的的取值范围(正负范围),可以进行如下操作,点击[Fit Options]按钮,弹出的窗口如下:
可以调整a,b,c,d参数的StartPoint,Lower,Upper三个选项来是拟合更加准确,比如说,将a,b,d的Lower选项设为0(a,b,d>0),将c的Upper选项设为0(c<0),设置如下图所示:
设置完毕之后,就会自动出现重新拟合之后的图像,如下图所示。
可以看到,拟合程度较之前有了很大的提高.因此,可以预见的是,在拟合过程中,设置好待拟合函数的参数的StartPoint,Lower和Upper三者的值可以使拟合更加准确。
在左侧的Result中显示拟合模型、参数以及拟合效果:
拟合效果评测:
当然,除了上面提到的拟合方法之外,还有两种常用的拟合方法:
Interpolant插值逼近,该方法的优势在于会连接所有点,而使其SSE为0,R-square为1,如下图所示:
Smoothing Spline
平滑逼近,该方法的会尽可能逼近所有点,使其SSE尽可能逼近0,R-square尽可能逼近1,如下图所示:
9.输出拟合参数
如果希望只显示拟合图像,可以点击“文件”——>“Print to figure”
这样就可以只显示拟合图像了,如下图所示。
如果希望导出拟合后的曲线数据,可以点击“文件”——>“Generate Code”
生成代码后,默认函数名为createFit,可以自行修改,直接保存,就可以调用了。比如说,我要导出五次多项式Polynomial逼近结果,按照上述方式导出后,可以查看生成代码的信息:
其中,fitresult是函数的输出,是一个结构体,可以用fitresult.p1得到p1的系数,同理其它系数也可得。
如果想导出拟合后的曲线数据,只需要把横坐标传给fitresult就可以了:
本文主要讨论了MATLAB曲线拟合工具箱(cftool)的拟合过程。通过工具箱模块可以非常方便地对曲线进行拟合,不需要太多的编程,曲线拟合方法多样,效果较好。
ok,以上便是曲线拟合工具箱的全部内容了,如果对你有所帮助,记得点个赞哟~