Matlabcurvefittingtool的用法图文结合.docx
《Matlabcurvefittingtool的用法图文结合.docx》由会员分享,可在线阅读,更多相关《Matlabcurvefittingtool的用法图文结合.docx(11页珍藏版)》请在冰豆网上搜索。
Matlabcurvefittingtool的用法图文结合
Matlabcurvefittingtool的用法
MATLAB拟合工具箱可以方便地拟合一元函数。
我们先来构造一个带有误差的数据:
其中噪声Noise服从4倍标准正态分布:
,然后利用MATLAB拟合工具箱进行拟合。
在命令窗拷入以下代码
%产生模拟数据
x=-6:
0.2:
6;
y=7*sin(x)+x.^2-0.1*exp(x)+4*randn(size(x));
%画出模拟数据曲线,颜色:
黑,线宽:
2,标记大小:
8,形状:
圆圈
plot(x,y,'Color','k','LineW',2,'MarkerSize',8,'Marker','o')
%坐标字符大小16
set(gca,'FontS',16)
%在规定坐标位置加文字说明
text(-2,40,'y=7sin(x)+x^2-0.1e^x+Noise','FontS',16)
%坐标轴显示范围
axis([-66-1550])
fig1
拟合步骤如下:
1) 打开Curvefittingtool:
在命令窗中直接键入cftool,这时显示出拟合工具窗的GUI:
fig2
2) 选择Data,在XData和YData中选择数据,必要的话加上权数据,在Datasetname框中给你拟合的数据起名(例如xy),然后按Createdataset,则数据在拟合工具窗显现。
fig3
3) 按Fitting键,显示拟合编辑器:
fig4
我们从数据窗中看到了刚才保存的拟合数据xy。
在拟合曲线类型框(Typeoffit)中有很多类拟合函数形式,比如选中多项式后,下面的窗口会显示不同次数的多项式选项。
fig5
4) 如果Typeoffit中没有所需的拟合函数形式,就需要自己编写,这时,在Typeoffit中选择CustomEquation,顺序单击Newfit®New健,出现方程编辑框:
fig6
如果自编方程不是广义线性函数的形式,就选择GeneralEquation例如本题可写
给你的拟合函数起个名字,例如user1,以后遇到类似的函数形式拟合时,可以调用。
给定初值后按ok fig7
5) 在fitting窗中选择Apply 这时在图形窗显示拟合的结果的同时,results给出拟合结果:
fig8
这些结果包括:
Ø 拟合函数的形式;
Ø 参数的估计以及95%的置信区间。
其含义是:
如果拟合残差的分布是以0为期望值的正态分布,那么所给的区间有95%的可能性包含参数的真值。
Ø 拟合优度的判断。
关于拟合优度。
拟合窗的Fitoptions中可以对拟合算法、拟合区域、置信度以及参数初值等做出选择。
7) curvefittingtool->Analysis中可以根据给定的x值输出拟合值、一阶导数值、二阶导数值和积分的值,例如我们的拟合节点为从-6到6,间隔0.1,希望给出拟合值、一阶导数值和相应的图,则构选相应的功能,可得出下面的结果:
fig9
显然,以上数据可以单击界面上的Savetoworkspace键保存;fig10
fig1
fig2
fig3
fig4
fig5
fig6
fig7
fig8
fig9
fig10
在Matlab6.5以上的境况下,在左下方有一个"Start"按钮,好像Windows的最先菜单,点开它,在目次"Toolboxes"下有一个"CurveFitting",点开"CurveFittingTool",显露数据拟合东西界面,根基上全体的数据拟合和回归认识都可以在这边进行。
底下给你粗略先容一下它的使用方法。
首先在Matlab的夂箢行输入两个向量,一个向量是你要的x坐目标各个数据,其它一个是你要的y坐标的各个数据。
输入今后假如叫x向量与y向量,可以在workspace内里瞥见这两个向量,要保障这个向量的元素数类似,借使纷歧致的话是不行在工具箱里面进行拟合的。
比方在命令行里输入下列数据:
x=(0:
0.02:
0.98)';y=sin(4*pi*x+rand(size(x)));此时x-y之间的函数相似的为正弦干系,频率为2,但是生活一个偏差项。
可以通过作图看出它们的大致分布:
plot(x,y,'*','markersize',2);掀开曲线拟合共工具界面,点击最左边的"Data..."按钮,出现一个Data对话框,在DataSets页面里,在XData选项入选取x向量,YData选项中抉择y向量,如果两个向量的元素数相通,那么Createdataset按钮就激活了,此时点击它,天生一个数据组,映现鄙人方DataSets列表框中。
紧闭Data对话框。
此时CurveFittingTool窗口中显示出这一数据组的散点分布图。
点击Fitting...按钮,出现Fitting对话框,Fitting对话框分为两部门,上头为FitEditor,下面为TableofFits,有时刻窗口界面对比小,FitEditor部分会被收起来,只消把TableofFits上方的横条往下拉就可以看见FitEditor。
在FitEditor里面点击NewFit按钮,此时其下方的各个选框被激活,在DataSet选框中选中方才创办的x-y数据组,然后在Typeoffit选框中选取拟合或回归规范,各个类型的拟合或回归呼应的分别是:
CustomEquations用户自界说函数
Expotentiale指数函数
Fourier傅立叶函数,含有三角函数Gaussian正态分布函数,高斯函数Interpolant插值函数,含有线性函数,搬动均匀等类型的拟合Polynomial多项式函数Power幂函数Rational有理函数(不太了了,没有若何用过)SmoothSpline?
?
(润滑插值大概光滑拟合,不太清楚)Sumofsinfunctions正弦函数类Weibull威布尔函数(没用过)欠好兴趣,没有学过数理统计,以是许多器具都是用了才清楚,翻译也就不太正确。
不外在Typeoffit选框下方有一个列表框,基本上各个函数类里的函数都写成领会式列在下方以供选择,所以找符合的函数仍旧比较简单的。
在这个Typeoffit选框中选择好合适的类型,并选好合适的函数形式。
因而点击Apply按钮,就开始进行拟合或者回归了。
此时在CurveFittingTool窗口上就会出现一个拟合的曲线。
这即是所要的效率。
在上面的例子中,选择sumofsinfunctions中的第一个函数形式,点击Apply按钮,就可以看见拟合取得的正弦曲线。
在Fitting对话框中的Results文本框中显示有这回拟合的首要统计音信,主要有Generalmodelofsin1:
.......(函数形式)Coefficients(with95%conffidencerange)(95%致信区间内的拟合常数)a1=...(......)(等号后头是平均值,括号里是范畴)....Godnessoffit:
(统计结果)SSE:
...(方差)R-squared:
...(决计系数,不知道做什么的)AdjustedR-squared:
...(改良后的决定系数,如何校正的不得而知)RMSE:
...(模范差)上面的例子中颠末拟合得到的函数最终为y=0.9354*sin(12.36x+6.886)频率为1.98加减0.03,和向来创立的频率为2符合,相对误差为1.5%。
这曲直线拟合工具箱的一个最简单的使用方法,上面尚有很多效力,写是写不完的,本身参照这个基本的思绪,翻着英汉辞书,看着资助,然后一个按钮一个按钮的试吧。
另外要说的是,如果想把这个拟合的图像导出的话,在CurveFittingTool窗口的File菜单下选PrinttoFigure,此时弹出一个新的图像窗口,里面是你要导出的图像,在这个figure窗口的File菜单里再选Export,选择好合适的形式,寻常是jpeg,选择好途径,点击OK就可以了。
出来的图像可以在Word等编纂环境中使用,就未几说了。
要窜改图像的性子,如数据点的巨细、颜料等等的,只需求在东西上点右键,就差不多可以找到了。
”上面所说的X,Y向量就是样本点。
下面是转载的网址,期望有用途ilovematlab是个不错的论坛,我也是刚察觉,不过帮助很大,基本的题目在那城市有谜底。
谢谢了,我仍旧知道啦,通过图取样本点,X=[......],Y=[......]polyfit(X,Y,3)可以得到拟合函数进而得到概率分布函数,可以用newrb()或其他函数!
不久前我做过一个尝试,是y=√x的拟合,可以稍稍修改下即可以下为我的源代码,希望有所帮助%已知y=x^(-1/2),x分别取1:
9通过磨练拟合,猜想x=10和11时的y值clearall;P=1:
1:
9;T=P.^(1/2);P2=1:
1:
11;T2=P2.^(1/2);%神经元数逐渐加添,最多就是训练样本个数goal=1e-10;%训练误差的平方和(默以为0)spread=10;%此值越大,需要的神经元就越少(默许为1)MN=size(P,2);%最大神经元数(默认为训练样本个数)DF=1;%显示隔断(默认为25)t1=clock;%计时开始net=newrb(P,T,goal,spread,MN,DF);%trainingdatat=etime(clock,t1)%算计安排汇集所用的时候%----------------plot(P2,T2,'ro');%red'o'号显露确凿值holdonY=sim(net,P2);%mse=mean((T2-Y).^2)%均方误差plot(P2,Y);plot(P2,Y,'b*');%blue'*'号表示真实值x=10:
1:
11y=sim(net,x)holdoff