这两天也简单地用了matlab去拟合离散数据,感觉还是非常方便的。这里记录一下自己使用matlab拟合的流程,也希望你太清楚matlab拟合用法的小伙伴能有所收获。

Curve Fitting工具

  • 1 打开工具
  • 2 用函数表达式拟合数据
  • 3 拟合设置
  • 4 自定义函数拟合
  • 5 无函数表达式的插值拟合
  • 6 导出拟合函数(拟合关系)

1 打开工具

打开matlab,点击左上角的APP,找到Curve Fitting工作(当然打开它的方式有很多,不做展开)。

打开以后的窗口如图

这个窗口里有的选项也是超级多,但我会得不多,只是去摸索了一些够自己用的东西。

2 用函数表达式拟合数据

拟合数据前,肯定是要先有数据,因此咱们先做点数据。

x = 1:0.2:4;
y = x.^2 + rand(1,size(x,2));
plot(x,y,'+');

(x,y)就是我们创建的离散数据,数据的分布如下图:

因为加入了噪声,所以数据点的形状存在一些波动。那么现在用Curve Fitting工具来对这些离散数据做拟合。打开Curve Fitting工具,看到窗口的左边有【Fit name】、【X data】、【Y data】、【Z data】等等东西(我没有写的东西不是我忘写了,是我也不知道是干啥的)。

主要来看【X data】和【Y data】,这里是要输入要拟合的离散数据,那么【X data】就选刚刚创建的x序列,【Y data】就选刚刚船舰的y序列,画面上就会出现这些数据的分布了,如下图

然后看到窗口的中上部分,这里可以选择拟合的方式,关于拟合方式的详细介绍,大家可以看这篇文章,因为是人家整理的东西,我也不好直接复制过来。

各种拟合方式说明

这里,我们希望它能拟合成一个二次函数,所以选择【Polynomail(多项式拟合)】,【Degree(阶数)】选择为2,然后点击窗口右边的【fit】,就得到拟合的函数曲线和拟合的参数了。

拟合完以后,窗口上会显示的东西有,1)拟合的曲线;2)拟合后的参数;3)拟合误差的评估,如下图

可以看到(可能看不到,我图片都是复制的,不是导入的,应该巨糊……),给出的拟合结果是
f(x) = p1x^2 + p2x + p3,
p1 =0.8882 ,p2 =0.6097 ,p3 = -0.8021

这个拟合结果很垃圾,我们希望的结果应该是p1接近1,而p2和p3接近0。那么为什么会这样呢?首先第一个原因当然是因为加入了噪声的干扰,使得数据有偏差。其次,数据点太少了。

既然如此,那么就增多数据点,将x=1:0.2:4;改为x=1:0.01:4;数据一下增加了好多倍,而得到的拟合结果如下:

拟合的结果是
f(x) = p1x^2 + p2x + p3,
p1 = 1.035,p2 = -0.2087,p3 =0.261

这个结果虽然还有不足,但比起第一次的结果又好很多了。那还有什么问题造成拟合效果不好呢?就是x的范围太小了,只有[1,4],如果增加x的取值范围,那么拟合效果又会进一步提升。

上述只是一个很简单的例子,除了多项式拟合,这个工具还有很多其他的拟合方式,大家都可以尝试一下。

3 拟合设置

在窗口的中上位置,有一个【Fit Options】的按钮,点击它,就可以对拟合过程进行一些设置。

我们上个例子是一个很简答的拟合过程,因此这里的拟合设置,可以控制的量也比较少,只有拟合参数的Lower(上限)和Upper(下限)设置。有些拟合方式还有又拟合参数的初值设置。有时候,设置一个好的处置和上下限,可以让拟合的结果收敛得更好。

这里只是和大家提一下有这个【Fit Options】设置,详细内容我知道也不多,就不展开了。

4 自定义函数拟合

在窗口得中上位置,选择拟合方式这里,可以选择【Custom Equation】,这个表示得是用户自定义一个函数进行拟合。

我们先生成一些离散样本,这里,我们生成得样本y是一个Curve Fitting工具里面没有得一个拟合函数,离散样本的分布如下图。

x = 1:0.1:8;
y = sin(x)+log(x)+rand(1,71)-0.5;
plot(x,y,'+');


我透,加了这个噪声以后,这啥也不是。不过好在我们知道我们要拟合的函数时什么样的。

选择【Custom Equation】的拟合方式,自定义一个拟合函数,如下图:

我们定义的拟合函数是f(x)=asinx+blogx,这里的a与b就是拟合工具要给我们拟合出来的参数。

点击右侧的【Fit】,就可以得到拟合的曲线和拟合的参数了,如下图:

拟合的结果为:
f(x) = asin(x)+blog(x)
a=1.061,b=1.029。

哦哟,拟合的效果竟然这么好?

5 无函数表达式的插值拟合

有些时候我们并不是需要一个准确的函数表达式,只是想由这些离散的数据,得到一个平滑的连续的曲线,那这时候可以用”插值“的方式来实现。

比如一个温度曲线,它是没有准确的函数表达式的,就是很多零散的观测点,而通过插值,我们可以得到哪些出在观测时间点中间时候的温度情况。

自行拟定一个温度的序列

x = 1:10;
y = [4,5,5,6,7,9,10,9.5,9,8.7];
plot(x,y,'+');


这是一个温度变化的曲线,没有很准确的函数表达式,我们现在就是想通过插值拟合的方式,推测不是整点时间点的温度。

选择拟合方式为【Interpolant】

在下栏的【Method】还可以选择插值的方式,这个我具体就不做展开了。这里我们选择【Shape-preserving(PCHIP】。

点击右侧的【Fit】,就得到了拟合的曲线。这种拟合方式是没有函数表达式的,因此没有拟合的参数。

6 导出拟合函数(拟合关系)

前面讲了3个例子,1)用一个二次多项式拟合;2)设置一个自定义函数去拟合;3)用插值的方式拟合了一条连续的曲线。

对于前两个,由于拟合的是有确定表达式的函数,在我们获得拟合参数以后,我们可以把这些参数套到函数里面去,就想怎么用就怎么用了。但对于第三种,它没有函数表达式,我们虽然拟合出来一个很好看的曲线,但用不上,怎么办呢?

其实,不管有没有函数表达式,拟合出来的拟合关系都是可以导出使用的。

当我们拟合出了一条曲线以后,点击Curve Fitting窗口右上角的【Fit】-【Sava to Workspace】


上图的三个选项种,第一个表示导出拟合函数(拟合关系),剩下两个我没去研究过,就不做展开了。点击确定以后,拟合函数(拟合关系)就保存到工作区了。

主要cfit格式的数据,就是我们保存下来的拟合关系,双击它可以查看详情。我这里保存的是拟合温度变化的拟合关系,是插值拟合,所以没有函数关系,只写明了是PCHIP插值。

那要怎么用这个拟合关系呢?它既然是一个关系,就需要自变量与因变量才能体现。如代码所演示:

% 设置自变量
xm=1:0.1:10;
% 将自变量套入刚刚保存的拟合关系里
ym=fittedmodel(xm);
plot(xm,ym,'+');


欸,这就是我们刚刚保存下来的拟合关系了,就是自变量与因变量的关系了,这种关系虽然没有准确的表达式,但也是一种映射关系,所以也能称之为函数吧。

其实,这个工具就是用可视化操作的方式来进行拟合工作,而写代码,用函数,写参数,也是可以完成拟合工作,而且可以设置的选项还会更多一些。时间所限,今天就先记录一下这个Curve Fitting工具的使用,等后面有空,再补充一下fittype函数的使用,也是用来拟合数据的。

Matlab拟合——Curve Fitting工具相关推荐

  1. MATLAB之Curve Fitting Tool的使用及说明

    文章目录 MATLAB之Curve Fitting Tool的使用及说明 Curve Fitting Tool的使用 Curve Fitting Tool中表示拟合好坏程度的参数说明 MATLAB之C ...

  2. Matlab 之 Curve Fitting APP 使用笔记

    文章目录 Part.I Introduction Part.II 使用笔记 Chap.I 拟合函数 Chap.II 注意事项 Part.I Introduction 曲线或曲面拟合获取拟合参数.本篇博 ...

  3. MATLAB的Curve Fitting Tool 生成代码并被调用

    以MATLAB2014b为例: 打开Curve Fitting:应用程序>>Curve Fitting: 拟合:选择数据源>>X/Y/Z data(没有的话运行下你想曲面拟合的 ...

  4. MATLAB曲线拟合灵敏度,用Matlab曲线拟合工具箱curve fitting曲线拟合,原来是这样的...

    在使用Matlab软件时,对于曲线拟合来说,有两种方式,其一是编写程序代码,其二是利用Curve fitting工具箱进行.本例通过一个多项式拟合的小试验,向您介绍利用curve fitting工具箱 ...

  5. matlab curve fitting工具箱,[matlab工具箱] 曲线拟合Curve Fitting

    --转载网络 我的matlab版本是 2016a 首先,工具箱如何打开呢? 在 apps 这个菜单项中,可以找到很多很多的应用,点击就可以打开具体的工具窗口 本文介绍的工具有以下这些: curve F ...

  6. [matlab工具箱] 曲线拟合Curve Fitting

    --转载网络 我的matlab版本是 2016a 首先,工具箱如何打开呢? 在 apps 这个菜单项中,可以找到很多很多的应用,点击就可以打开具体的工具窗口 本文介绍的工具有以下这些: curve F ...

  7. 数据拟合:多项式拟合polynomial curve fitting

    http://blog.csdn.net/pipisorry/article/details/49804441 常见的曲线拟合方法 1.使偏差绝对值之和最小 2.使偏差绝对值最大的最小       3 ...

  8. Curve fitting之matlab

    工具箱 Curve Fitting Toolbox文档 适用按钮 理论参考 拟合界面选择说明: 生成代码: 最上菜单栏 >> CURVE FITTING TOOL >> 文件 ...

  9. Matlab拟合工具箱的使用

    1.打开 CFTOOL 工具箱.g",点开"Curve Fitting Tool",出现数据拟合工具界面,基本上所有的数据拟合和回归分析都可以在这里进行.也可以在命令窗口 ...

最新文章

  1. Git的使用---版本控制
  2. ENSP USG6000V登录WEB教程
  3. python中的split()方法的使用
  4. Python-练习7
  5. ENSP配置 实例九 动态Nat配置
  6. 波士顿学院计算机科学专业,波士顿学院专业有哪些?
  7. 【hdu 6396】Swordsman
  8. vue打开二级或者三级页面传输对象,再刷新浏览器数据丢失问题解决(vue使用router传递数据)
  9. cad相对坐标快捷键_CAD入门必记的15个命令,只要熟悉这15个命令几乎就可以走遍天下...
  10. win10插入耳机还是外放
  11. 腾讯校招20道选择题含答案
  12. 【 java.sql.SQLException: Illegal mix of collations (utf8mb4_0900_ai_ci,IMPLICIT) and (utf8mb4_unico】
  13. HTML中温度符号的输入
  14. P2504 聪明的猴子
  15. 【技术文档】jeecg3.8-maven 开发环境搭建入门
  16. alert promt confirm js 用法
  17. 一文看懂ArrayList的自动扩容
  18. 从IO谈论编程的基础
  19. import()函数和import语句
  20. 埃林哲一面面试经历(记录第一次面试)

热门文章

  1. 微信小程序的奇淫巧技
  2. win10 设置webDav网络硬盘
  3. Virtualbox+Vagrant搭建linux虚拟机并搭建easySwoole框架
  4. 三相直流无刷电器驱动器(BLDC)
  5. 如何借助ChatGPT,自动批量产出短视频爆款文案
  6. 【Kubernetes】——开启Aggregator Apiserver
  7. ARM加载Realtek-8188CUS USB无线网卡(一)_驱动编译与加载
  8. AB PLC 报错Compact I/O end cap missing
  9. React基础学习--新旧生命周期对比(二)
  10. iOS QQ分享sdk文档以及sdk下载地址