最小二乘法圆拟合.doc

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
最小二乘法圆拟合

最小二乘法拟合圆公式推导及vc实现[r] ???????? 最小二乘法(least squares analysis)是一种 数学 优化 技术,它通过 最小化 误差 的平方和找到一组数据的最佳 函数 匹配。 最小二乘法是用最简的方法求得一些绝对不可知的真值,而令误差平方之和为最小。 最小二乘法通常用于 曲线拟合 (least squares fitting) 。这里有 拟合圆曲线 的公式推导过程 和 vc实现。 此处使用平方差与最小二乘法差的平方不一样,但是仍然具有实用估计价值,并且可以化简公式。 VC实现的代码: void?CViewActionImageTool::LeastSquaresFitting() { ????if?(m_nNum3) ????{ ????????return; ????} ????int?i=0; ????double?X1=0; ????double?Y1=0; ????double?X2=0; ????double?Y2=0; ????double?X3=0; ????double?Y3=0; ????double?X1Y1=0; ????double?X1Y2=0; ????double?X2Y1=0; ????for?(i=0;im_nNum;i++) ????{ ????????X1?=?X1?+?m_points[i].x;//使用对象数组 ????????Y1?=?Y1?+?m_points[i].y; ????????X2?=?X2?+?m_points[i].x*m_points[i].x; ????????Y2?=?Y2?+?m_points[i].y*m_points[i].y; ????????X3?=?X3?+?m_points[i].x*m_points[i].x*m_points[i].x; ????????Y3?=?Y3?+?m_points[i].y*m_points[i].y*m_points[i].y; ????????X1Y1?=?X1Y1?+?m_points[i].x*m_points[i].y; ????????X1Y2?=?X1Y2?+?m_points[i].x*m_points[i].y*m_points[i].y; ????????X2Y1?=?X2Y1?+?m_points[i].x*m_points[i].x*m_points[i].y; ????} ????double?C,D,E,G,H,N; ????double?a,b,c; ????N?=?m_nNum; ????C?=?N*X2?-?X1*X1; ????D?=?N*X1Y1?-?X1*Y1; ????E?=?N*X3?+?N*X1Y2?-?(X2+Y2)*X1; ????G?=?N*Y2?-?Y1*Y1; ????H?=?N*X2Y1?+?N*Y3?-?(X2+Y2)*Y1; ????a?=?(H*D-E*G)/(C*G-D*D); ????b?=?(H*C-E*D)/(D*D-G*C); ????c?=?-(a*X1?+?b*Y1?+?X2?+?Y2)/N; ????double?A,B,R; ????A?=?a/(-2); ????B?=?b/(-2); ????R?=?sqrt(a*a+b*b-4*c)/2; ????m_fCenterX?=?A; ????m_fCenterY?=?B; ????m_fRadius?=?R; ????return; }

文档评论(0)

zilaiye + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档