解决方案

MATLAB曲线拟合工具箱(cftool)介绍(完结)

seo靠我 2023-09-24 03:53:51

本文通过实例对MATLAB曲线拟合工具箱进行详细讲解,帮助大家更容易理解曲线拟合工具箱(cftool)。

目录

1.实例介绍2. 进入曲线拟合工具箱界面3. 加载数据4. 加载数据5. 选择拟合曲线的类型SEO靠我6. 进行曲线拟合7. 拟合结果分析8.其他常用拟合方法9.输出拟合参数10.结论

1.实例介绍

已知

x = [0 0.2 0.50.8 0.9 1.3 1.4 1.9 2.1 2.2 2.5 2.6 2SEO靠我.9 3.0];

y = [1.27792.1596 2.7311 2.5974 2.4068 1.6215 1.4178 0.9955 0.9666 0.8837 0.9639 1.00311.123SEO靠我3 1.1583];

并且根据某种物理或数学关系确定y=f(x)的表达形式,并求出拟合结果对应的系数。

2. 进入曲线拟合工具箱界面

两种方法,第一种:

打开app栏的曲线拟合工具箱(Curve FittinSEO靠我g),

第二种,直接在命令行窗口输入“cftool”:

进入界面后,弹出如下窗口:

3. 加载数据

新建一个.m文件,并写入如下代码:

clc;clear; x = [0 0.2 0.5 0.8SEO靠我 0.9 1.3 1.4 1.9 2.1 2.2 2.5 2.6 2.9 3.0]; y = [1.2779 2.1596 2.7311 2.5974 2.4068 1.6215 1.SEO靠我4178 0.9955 0.9666 0.8837 0.9639 1.0031 1.1233 1.1583];

作为要拟合曲线所需要的数据。

4. 加载数据

在上述窗口中选中相应数据和拟合选项:

5. 选择拟SEO靠我合曲线的类型

通过下拉菜单选择拟合曲线的类型,

工具箱提供的拟合类型有: Custom Equations:用户自定义的函数类型;Exponential:指数逼近,有2种类型, a ∗ e x p ( b SEO靠我∗ x ) a*exp(b*x) a∗exp(b∗x) 、 a ∗ e x p ( b ∗ x ) + c ∗ e x p ( d ∗ x ) a*exp(b*x) + c*exp(d*x) a∗exSEO靠我p(b∗x)+c∗exp(d∗x);Fourier:傅立叶逼近,有7种类型,基础型是 a 0 + a 1 ∗ c o s ( x ∗ w ) + b 1 ∗ s i n ( x ∗ w ) a0 + SEO靠我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 SEO靠我− b 1 ) / c 1 ) 2 ) a1*exp(-((x-b1)/c1)^2) a1∗exp(−((x−b1)/c1)2);Interpolant:插值逼近,有4种类型,Nearest neigSEO靠我hbor、Linear、Cubic、Shape-preserving(PCHIP);Linear Fitting:线性拟合;Polynomial:多形式逼近;Power:幂逼近,有2种类型, a ∗ SEO靠我x b a*x^b a∗xb 、 a ∗ x b + c a*x^b + c a∗xb+c;Rational:有理数逼近;Smoothing Spline:平滑逼近;Sum of Sin FunctiSEO靠我ons:正弦曲线逼近,有8种类型,基础型是 a 1 ∗ s i n ( b 1 ∗ x + c 1 ) a1*sin(b1*x + c1) a1∗sin(b1∗x+c1);Weibull:只有一种, SEO靠我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. 进行曲线拟合

假设我SEO靠我们以 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的表达SEO靠我形式进行拟合,则选择”Custom Equation”,在方框中输入相应的函数表达式,拟合过程及结果图像如下图所示:

可以发现,曲线和拟合程度较差。这是因为,对同一问题的拟合情况,每次可能都不一样,这取SEO靠我决对于参数a,b,c,d的StartPoint的选取。解决方法是在拟合过程中,将a,b,c和d也作为约束拟合的条件,例子中已知a,b,c,d的的取值范围(正负范围),可以进行如下操作,点击[Fit OSEO靠我ptions]按钮,弹出的窗口如下:

可以调整a,b,c,d参数的StartPoint,Lower,Upper三个选项来是拟合更加准确,比如说,将a,b,d的Lower选项设为0(a,b,d>0),将cSEO靠我的Upper选项设为0(c<0),设置如下图所示:

设置完毕之后,就会自动出现重新拟合之后的图像,如下图所示。

可以看到,拟合程度较之前有了很大的提高.因此,可以预见的是,在拟合过程中,设置好待拟合函数的SEO靠我参数的StartPoint,Lower和Upper三者的值可以使拟合更加准确。

7. 拟合结果分析

在左侧的Result中显示拟合模型参数以及拟合效果

拟合效果评测:

SSE:拟合误差平方和,接近0,表示SEO靠我与数据拟合的好,但是要小心过拟合;R-Square:实测数据与推理数据之间的相关系数平方值,趋近于1较好;RMSE:均方差;

8.其他常用拟合方法

当然,除了上面提到的拟合方法之外,还有两种常用的拟合方法SEO靠我

Interpolant

插值逼近,该方法的优势在于会连接所有点,而使其SSE为0,R-square为1,如下图所示:

Smoothing Spline

平滑逼近,该方法的会尽可能逼近所有点,使其SSE尽可SEO靠我能逼近0,R-square尽可能逼近1,如下图所示:

9.输出拟合参数

如果希望只显示拟合图像

,可以点击“文件”——>“Print to figure”

这样就可以只显示拟合图像了,如下图所示。

如果希望导出SEO靠我拟合后的曲线数据,可以点击“文件”——>“Generate Code”

生成代码后,默认函数名为createFit,可以自行修改,直接保存,就可以调用了。比如说,我要导出五次多项式Polynomial逼SEO靠我近结果,按照上述方式导出后,可以查看生成代码的信息:

其中,fitresult是函数的输出,是一个结构体,可以用fitresult.p1得到p1的系数,同理其它系数也可得。

如果想导出拟合后的曲线数据,只SEO靠我需要把横坐标传给fitresult就可以了: y = fitresult(x);

10.结论

本文主要讨论了MATLAB曲线拟合工具箱(cftool)的拟合过程。通过工具箱模块可以非常方便地对曲线进行拟合,SEO靠我不需要太多的编程,曲线拟合方法多样,效果较好。

ok,以上便是曲线拟合工具箱的全部内容了,如果对你有所帮助,记得点个赞哟~

“SEO靠我”的新闻页面文章、图片、音频、视频等稿件均为自媒体人、第三方机构发布或转载。如稿件涉及版权等问题,请与 我们联系删除或处理,客服邮箱:html5sh@163.com,稿件内容仅为传递更多信息之目的,不代表本网观点,亦不代表本网站赞同 其观点或证实其内容的真实性。

网站备案号:浙ICP备17034767号-2