《量化投资:以MATLAB为工具》

MATLAB技术论坛

 找回密码
 注册账号
查看: 14704|回复: 69
收起左侧

[样章] 第四章 数据拟合 part2

    [复制链接]
发表于 2011-4-3 22:11:26 | 显示全部楼层 |阅读模式
第四章 数据拟合 part2

4.3 圆拟合的例子讲解

4.3.1圆拟合概述
4.3.2 圆拟合问题描述(使用最小二乘方法)
4.3.3 圆拟合代码
……

调用fit_ls_circle 做整圆数据拟合举例

  1. % call_fit_ls_circle_1.m
  2. r=3;
  3. theta=0:0.1:2*pi;
  4. x=r*sin(theta)+1;
  5. y=r*cos(theta)+10;
  6. xr=rand(1,length(x));
  7. yr=rand(1,length(y));
  8. x=x+xr;
  9. y=y+yr;
  10. figure
  11. plot(x,y,'*')
  12. axis square
  13. [radius xc yc]= fit_ls_circle(x',y')
  14. theta = 0:0.01:2*pi;
  15. % 使用拟合获得的参数画拟合得到的圆
  16. Xfit = radius*cos(theta) + xc ;
  17. Yfit = radius*sin(theta) + yc;
  18. hold on
  19. plot(Xfit, Yfit,'r');
  20. axis square
  21. plot(xc,yc)
  22. hold off
  23. legend('圆试验数据','拟合得到的圆')
  24. title(' 整圆数据拟合')
复制代码


拟合的效果如图 4-6所示.

图 4-6 整圆数据拟合


调用fit_ls_circle 做非完整圆数据拟合举例

4.4 cftool自定义拟合

cftool是MATLAB用于曲线拟合的图形交互工具. 拟合工具箱使用的基本思路是,准备拟合数据,选择拟合类型(拟合模型的定义),进行数据拟合,后处理与分析.使用这个工具箱可以进行4.2.3节表 4-1和表 4-2的预定义的模型的曲线拟合.更为强大的是可以使用cftool的模型函数自定义功能进行其他非预定义类型的曲线拟合. 下面介绍采用自定义模型函数功能进行曲线拟合.

1 使用cftool命令打开拟合工具箱
2 构造随机数据用于拟合,如图 4-10所示.

  1. a=10,b=4,c=3
  2. x = -2:0.1:2;
  3. y=a*b.^x+c*x.^2; %指数函数和多项式的和
  4. yy = y + (rand(size(x))-0.5)*6; %加随机数据项
  5. plot(x,y,'r')
  6. hold on
  7. plot(x,yy,'*')
复制代码


图 4-10 构造的用于拟合的数据

3 在cftool中创建数据集
4 cftool中创建自定义拟合类型
5 进行拟合
关掉上面的对话框,回到图 4-12的Fitting 对话框,单击“Apply”按钮.在Fitting对话框的Results中可以看到拟合结果.

  1. Coefficients (with 95% confidence bounds):
  2.        a =        9.95  (9.379, 10.52)
  3.        b =       3.993  (3.865, 4.121)
  4.        c =       3.148  (2.706, 3.59)
复制代码


对比构造的时候的值a=10,b=4,c=3,得到了比较好的结果.需要注意的是方程y = a*b.^x+c*x.^2,同时含有指数和多项式,在预先定义的“Type of fit”里面没有这样的函数模型,所以必须采用自定义函数模型.

4.5 cftool代码自动生成与修改


图 4-14 生成代码


第四章代码


第四章结果

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册账号

x
发表于 2017-9-23 09:09:49 | 显示全部楼层

参与/回复主题
关闭
RE: 第四章 数据拟合 part2 [修改]
回复 支持 反对

使用道具 举报

发表于 2017-6-21 05:53:50 来自手机 | 显示全部楼层
好资源,有价值,有容养,谢楼主。
回复 支持 反对

使用道具 举报

发表于 2017-4-3 18:53:46 | 显示全部楼层
很想好好学习一下数据拟合
回复 支持 反对

使用道具 举报

发表于 2011-11-28 18:23:54 | 显示全部楼层
谢谢楼主   先看看了
发表于 2011-12-9 12:58:53 | 显示全部楼层
发表于 2011-12-11 14:29:21 | 显示全部楼层
hanxiyiming 发表于 2011-11-28 18:23
谢谢楼主   先看看了

欢迎购买该书,并就书中具体内容进行交流讨论。
发表于 2011-12-11 14:29:35 | 显示全部楼层
hkyhust 发表于 2011-12-9 12:58
数据拟合正的对我有用处 谢谢啦

欢迎购买该书,并就书中具体内容进行交流讨论。
发表于 2011-12-21 14:37:07 | 显示全部楼层
发表于 2012-3-8 08:39:52 | 显示全部楼层
发表于 2012-3-10 00:51:55 | 显示全部楼层

谢谢楼主!!
发表于 2012-3-27 09:34:22 | 显示全部楼层
好帖  不错
发表于 2012-4-9 13:12:55 | 显示全部楼层
新手入学,谢谢各位前辈的热心分享
您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

QQ|网站地图|MATLAB技术论坛|Simulink仿真论坛 ( 蜀ICP备19014457号 

GMT+8, 2019-12-10 08:31 , Processed in 0.088376 second(s), 15 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表