1 cftool
又到了一年一度的西大建模,又想到大一的时候傻乎乎的想着自己什么也不会而什么也不参加。不会是可以学的,来大学的目的就是学会自己喜欢的自己不会的东西,说明那个时候还小呀。岁月沉淀过后留给我的经验就是我当初单纯的错了。现在已非专业的形式来记录点关于matlab cftool的用法。
cftool是matlab一个强大的曲线拟合工具箱。能实现多种线性、非线性的曲线拟合。
我的matlab版本: MATLAB 7.9.0 (R2009b)
2 从matlab命令窗口到cftool
可以直接在matlab命令行输入cftool命令即可进入cftool窗口。
输入命令回车后就得到一下界面
进行曲线拟合的时候,最基本的操作包括点击“data...”按钮和“fitting...”按钮。
2.1 data...按钮
首先,到命令窗口中为点击"data..."做好准备:
>> x=[8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0, 20];
>> y=[0.6,0.62,0.64, 0.65, 0.66, 0.67, 0.68, 0.68, 0.69, 0.66, 0.65, 0.65,0.64];
>>
然后,点击“data...”按钮,选x横坐标和选y纵坐标变量:
1)在弹出的Data窗口中,在X Data选项中选择x,在Y Data中选择y。其中X, Y都是刚刚在命令行所准备的数据变量名。
2)经过此步骤后点击“Create data set”按钮。这个时候Data对话框背后的对话框中已经有散点图了。
不要害怕没有出结果,请果断的点击Data中的close按钮吧。
2.2 fitting...按钮
在正确设置Data对话框之后,在关闭Data对话框之后,就可以点击fitting...按钮了。会弹出这么一个对话框:
1)在Fitting对话框中点击New fit后在Fit name为此次曲线取名字:“cftool 曲线拟合”,当有多条曲线需要同时绘制时,每次都需要点击New fit,然后选择对应的Data set值即对应相应的数据变量就可以绘制多条曲线了。即同时拟合多条曲线。选择data set。
2)选择相应类型的曲线拟合(到其它地方粘贴过来的),点击Type of fit 下拉菜单:
Custom Equations:用户自定义的函数类型
· Exponential:指数逼近,有2种类型, a*exp(b*x) 、 a*exp(b*x) + c*exp(d*x)
· Fourier:傅立叶逼近,有7种类型,基础型是 a0 + a1*cos(x*w) + b1*sin(x*w)
· Gaussian:高斯逼近,有8种类型,基础型是 a1*exp(c1-((x-b1)/c1)^2)
· Interpolant:插值逼近,有4种类型,linear、nearest neighbor、cubic spline、shape-preserving
· Polynomial:多形式逼近,有9种类型,linear ~、quadratic ~、cubic ~、4-9th degree ~
· Power:幂逼近,有2种类型,a*x^b 、a*x^b + c
· Rational:有理数逼近,分子、分母共有的类型是linear ~、quadratic ~、cubic ~、4-5th degree ~;此外,分子还包括constant型
· Smoothing Spline:平滑逼近(翻译的不大恰当,不好意思)
· Sum of Sin Functions:正弦曲线逼近,有8种类型,基础型是 a1*sin(b1*x + c1)
· Weibull:只有一种,a*b*x^(b-1)*exp(-a*x^b)
3)最后再选择一种曲线拟合下的具体类型,点击Apply按钮就可以看见所拟合的曲线了。
如果发现曲线和数据点不是很“磨合”就需要重新选择曲线类型了。
上图是点击了应用按钮之后的状态,在Results中得来的就是拟合数据的曲线函数关系式。
点击Appy后的运行结果为:
2.3 CFTOOL菜单使用
在上面显示的曲线拟合结果中,可以明显的看见横坐标和纵坐标都不是从原点(0,0)开始设置的坐标。那么我们可以使用
Curve Fitting Tool 对话框中Tools菜单中的
然后Tools中的各个选项都有什么特殊的功能呢,呵呵,亲,你随便点点用用就知道了:
1)New Cunstom Equation:表示使用自定义的函数来模拟图中显示的散点数据的函数式子。
2)Legend:就是图中显示着“y vs.x cftool 曲线拟合”的那个框。
3)Grid:跟指令grid一样的功能,是曲线背景充满虚线框。
4)Axis Limit Control:设置横轴、纵轴坐标的范围,这个按钮就可以使横纵坐标从你想要的初值到终值了。
3 总结
看了一下,突然发现MATLAB中的小工具太多了,关键时候还是看看help吧。
此次笔记记录完毕。