本节Jungle尝试用最小二乘法来拟合圆,并用MATLAB和C++实现。
1.理论知识
根据圆心(A,B)和半径R可确定平面上一个圆。平面上圆方程的通式为

其中

第一个圆的通式是关于a、b和c的线性方程。利用最小二乘法建立圆拟合的数学模型,求得参数a、b和c的值,再根据第二个方程组求出圆的实际参数A、B和R。
在原始测得的N(N≥3)组数据(xi,yi),(i=1,2,3,…,N)中,根据式通式和最小二乘法原理,需求目标函数

的最小值。将F(a,b,c)对a、b、c求偏导,令偏导等于零,得到极值点,得到

求解上述方程可得到a、b、c,结合式第二个方程组可得到圆的参数。
2.MATLAB实现
function [ p ] = Circle_Fitting( XZ )
N = size(XZ,1);
x = XZ(:,1);
z = XZ(:,2);
sum_X_Raw = 0;
sum_

本文介绍了如何利用最小二乘法拟合圆,分别在MATLAB和Qt-C++环境中实现。首先,阐述了理论知识,包括圆的数学模型和最小二乘法原理。接着,提供了MATLAB函数`Circle_Fitting`的详细代码,通过计算一系列数据点的统计量来求解圆的参数。最后,展示了在C++中使用Qt实现相同功能的类`CircleFitting`,该类包含数据结构、拟合方法和结果获取。
最低0.47元/天 解锁文章


被折叠的 条评论
为什么被折叠?



