今天帮同学做了一个非线性函数的曲线拟合,以前没做过,所以是摸着石头过河。费了一下午时间,终于把曲线拟合出来了,顺道也学习了使用Matlab进行曲线拟合的方法,把学习所得记录下来,和大家共享。

一、   单一变量的曲线逼近
Matlab有一个功能强大的曲线拟合工具箱 cftool ,使用方便,能实现多种类型的线性、非线性曲线拟合。下面结合我使用的Matlab R2007b 来简单介绍如何使用这个工具箱。

假设我们要拟合的函数形式是 y=A*x*x + B*x, 且A>0,B>0。

1、在命令行输入数据:
》x=[110.3323 148.7328 178.064 202.8258033 224.7105 244.5711 262.908280.0447 296.204 311.5475];
》y=[5 10 15 20 25 30 35 40 45 50];

2、启动曲线拟合工具箱
》cftool

3、进入曲线拟合工具箱界面“Curve Fitting tool”
(1)点击“Data”按钮,弹出“Data”窗口;
(2)利用X data和Y data的下拉菜单读入数据x,y,可修改数据集名“Data set name”,然后点击“Createdata set”按钮,退出“Data”窗口,返回工具箱界面,这时会自动画出数据集的曲线图;
(3)点击“Fitting”按钮,弹出“Fitting”窗口;
(4)点击“New fit”按钮,可修改拟合项目名称“Fit name”,通过“Dataset”下拉菜单选择数据集,然后通过下拉菜单“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(-((x-b1)/c1)^2)
  • Interpolant:插值逼近,有4种类型,linear、nearest neighbor、cubicspline、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)

选择好所需的拟合曲线类型及其子类型,并进行相关设置:
——如果是非自定义的类型,根据实际需要点击“Fit options”按钮,设置拟合算法、修改待估计参数的上下限等参数;
——如果选Custom Equations,点击“New”按钮,弹出自定义函数等式窗口,有“LinearEquations线性等式”和“General Equations构造等式”两种标签。

在本例中选Custom Equations,点击“New”按钮,选择“GeneralEquations”标签,输入函数类型y=a*x*x + b*x,设置参数a、b的上下限,然后点击OK。

(5)类型设置完成后,点击“Apply”按钮,就可以在Results框中得到拟合结果,如下例:
general model:
f(x) = a*x*x+b*x

Coefficients (with 95% confidence bounds):
a = 0.009194 (0.009019, 0.00937)
b = 1.78e-011 (fixed at bound)

Goodness of fit:
SSE: 6.146
R-square: 0.997
Adjusted R-square: 0.997
RMSE: 0.8263

同时,也会在工具箱窗口中显示拟合曲线。

这样,就完成一次曲线拟合啦,十分方便快捷。当然,如果你觉得拟合效果不好,还可以在“Fitting”窗口点击“Newfit”按钮,按照步骤(4)~(5)进行一次新的拟合。

不过,需要注意的是,cftool 工具箱只能进行单个变量的曲线拟合,即待拟合的公式中,变量只能有一个。对于混合型的曲线,例如 y =a*x + b/x ,工具箱的拟合效果并不好。下一篇文章我介绍帮同学做的一个非线性函数的曲线拟合。

转自:http://hi.baidu.com/snowlxm/item/bd0f6706f7a615de73e676a8

以下为一些补充内容

在Matlab6.5以上的环境下,在左下方有一个"Start"按钮,如同Windows的开始菜单,点开它,在目录"Toolboxes"下有一个"CurveFitting",点开"Curve FittingTool",出现数据拟合工具界面,基本上所有的数据拟合和回归分析都可以在这里进行。
下面给你简单介绍一下它的使用方法。
首先在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对话框,在Data Sets页面里,在XData选项中选取x向量,Y Data选项中选取y向量,如果两个向量的元素数相同,那么Create dataset按钮就激活了,此时点击它,生成一个数据组,显示在下方Data Sets列表框中。关闭Data对话框。此时CurveFitting Tool窗口中显示出这一数据组的散点分布图。
点击Fitting...按钮,出现Fitting对话框,Fitting对话框分为两部分,上面为Fit Editor,下面为Tableof Fits,有时候窗口界面比较小,Fit Editor部分会被收起来,只要把Table ofFits上方的横条往下拉就可以看见Fit Editor。在Fit Editor里面点击NewFit按钮,此时其下方的各个选框被激活,在Data Set选框中选中刚才建立的x-y数据组,然后在Type offit选框中选取拟合或回归类型,各个类型的拟合或回归相应的分别是:
Custom Equations 用户自定义函数
Expotential e指数函数
Fourier 傅立叶函数,含有三角函数
Gaussian 正态分布函数,高斯函数
Interpolant 插值函数,含有线性函数,移动平均等类型的拟合
Polynomial 多项式函数
Power 幂函数
Rational 有理函数(不太清楚,没有怎么用过)
Smooth Spline ??(光滑插值或者光滑拟合,不太清楚)
Sum of sin functions正弦函数类
Weibull 威布尔函数(没用过)
不好意思,没有学过数理统计,所以很多东西都是用了才知道,翻译也就不太准确。不过在Type offit选框下方有一个列表框,基本上各个函数类里的函数都写成解析式列在下方以供选择,所以找合适的函数还是比较容易的。
在这个Type offit选框中选择好合适的类型,并选好合适的函数形式。于是点击Apply按钮,就开始进行拟合或者回归了。此时在Curve FittingTool窗口上就会出现一个拟合的曲线。这就是所要的结果。
在上面的例子中,选择sum of sinfunctions中的第一个函数形式,点击Apply按钮,就可以看见拟合得到的正弦曲线。
在Fitting对话框中的Results文本框中显示有此次拟合的主要统计信息,主要有
General model of sin1:
....... (函数形式)
Coefficients (with 95% conffidence range)(95%致信区间内的拟合常数)
a1=... ( ... ...) (等号后面是平均值,括号里是范围)
....
Godness of fit: (统计结果)
SSE: ... (方差)
R-squared: ... (决定系数,不知道做什么的)
Adjusted R-squared: ... (校正后的决定系数,如何校正的不得而知)
RMSE: ... (标准差)
上面的例子中经过拟合得到的函数最后为
y=0.9354*sin(12.36x+6.886)
频率为1.98加减0.03,和原来设置的频率为2符合,相对误差为1.5%。
这是曲线拟合工具箱的一个最简单的使用方法,上面还有很多功能,写是写不完的,自己参照这个基本的思路,翻着英汉词典,看着帮助,然后一个按钮一个按钮的试吧。
另外要说的是,如果想把这个拟合的图像导出的话,在Curve Fitting Tool窗口的File菜单下选Print toFigure,此时弹出一个新的图像窗口,里面是你要导出的图像,在这个figure窗口的File菜单里再选Export,选择好合适的格式,一般是jpeg,选择好路径,点击OK就可以了。出来的图像可以在Word等编辑环境中使用,就不多说了。
要修改图像的性质,如数据点的大小、颜色等等的,只需要在对象上点右键,就差不多可以找到了。

转自:http://www.ilovematlab.cn/thread-28854-1-1.html

Matlab的曲线拟合工具箱CFtool的使用相关推荐

  1. Matlab的曲线拟合工具箱CFtool使用简介

    Matlab有一个功能强大的曲线拟合工具箱 cftool ,使用方便,能实现多种类型的线性.非线性曲线拟合.下面结合我使用的Matlab R2011b 来简单介绍如何使用这个工具箱. 假设我们要拟合的 ...

  2. matlab曲线拟合工具箱cftool

    今天意外发现matlab的曲线拟合工具箱cftool,转自http://blog.csdn.net/chenyusiyuan/article/details/1942605,希望以后能用到 一. 单一 ...

  3. matlab曲线拟合工具箱 cftool

    Matlab有一个功能强大的曲线拟合工具箱 cftool ,使用方便,能实现多种类型的线性.非线性曲线拟合.下面结合我使用的Matlab R2011b 来简单介绍如何使用这个工具箱. 假设我们要拟合的 ...

  4. matlab曲线拟合工具箱cftool,Matlab曲线拟合工具箱CFtool使用

    Matlab曲线拟合工具箱CFtool使用 CFtool是Matlab中的曲线拟合工具箱,能够实现很多基本的曲线拟合算法,使用非常方便,现将其使用方法简介如下: 步骤1:在命令行输入数据x.y x=[ ...

  5. Matlab非线性拟合工具箱cftool

    一. 单一变量的曲线逼近 Matlab有一个功能强大的曲线拟合工具箱 cftool ,使用方便,能实现多种类型的线性.非线性曲线拟合.下面结合我使用的 Matlab R2007b 来简单介绍如何使用这 ...

  6. matlab拟合工具箱cftool

    matlab拟合工具箱cftool %拟合数据曲线:线性最小二乘法是解决曲线拟合的最常用的方法, %1.多项式拟合函数:p=polyfit(x,y,n);求p拟合函数在xi处的近似值pi=polyva ...

  7. 数据拟合---使用自定义函数进行非线性拟合 -在Origin。matlab拟合工具箱cftool

    在Origin中使用自定义函数进行非线性拟合 http://blog.163.com/wuhen211@126/blog/static/7474635020105233269949/ matlab拟合 ...

  8. MATLAB中曲线拟合方法总结(包括对数正态分布函数)

    鉴于最近遇到非线性函数拟合问题,本人对网上有关matlab多种类型的线性.非线性曲线拟合的方法进行了总结,希望对各位朋友有所帮助. 1. Matlab有一个功能强大的曲线拟合工具箱 cftool ,使 ...

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

    本文通过实例对MATLAB曲线拟合工具箱进行详细讲解,帮助大家更容易理解曲线拟合工具箱(cftool). 目录 1.实例介绍 2. 进入曲线拟合工具箱界面 3. 加载数据 4. 加载数据 5. 选择拟 ...

最新文章

  1. matplotlib可视化时间序列数据、并高亮时间序列中的指定区域(Highlight a Region of Time-Series Plot with Matplotlib)
  2. 通过Scroller.js制作上拉加载和下拉刷新
  3. 关于 oracle secure backup
  4. TensorFlow模型保存和加载方法
  5. linux 短信功能,Android调用系统短信功能发送短信
  6. nginx 端口转发
  7. 2.1 maven配置多镜像地址
  8. vue组件transition的使用(demo演示) - 教程篇
  9. python并发编程之多进程、多线程、异步和协程
  10. ProtoBuf协议详解
  11. Gradle学习之使用java plugin
  12. 【JSTL】<c:if test=“”>没有else的解决方法
  13. Python入门--流程控制语句continue
  14. 基于yolo的口罩识别(开源代码和数据集)
  15. Python支持向量机(SVM)实例
  16. 内部收益率计算公式用计算机,内部收益率计算器
  17. uniapp链接生成二维码
  18. 硕士毕业论文模板(专业硕士)
  19. elipse如何退出调试模式
  20. 经济学硕士毕业论文题目【282个】

热门文章

  1. APM飞控添加自定义飞行模式
  2. Javascript判断Maxthon浏览器
  3. Soildwork 制作简易玫瑰
  4. Serv-U 15 在 IE 8+ 中兼容性视图下显示不正常的解决方案
  5. ENC数据解密(续1)
  6. wifi android 指令,求大神解答,安卓按键精灵开启关闭手机wifi的指令
  7. A - Wizards' Duel
  8. 华云数据携手麒麟软件、哲林软件联合打造无纸化智慧管理办公云解决方案
  9. 盘点,RPA即将迎来大变局
  10. 模型过拟合原因及解决办法