我有几个圆圈经过,我想找到最佳拟合圆的半径,中心固定在原点。
CircFit不允许明确指定中心,我需要将其固定在原点。
答案 0 :(得分:1)
从评论中发布我的答案。
圆上距离点到最近点的距离为sqrt((x-xc).^2 + (y-yc).^2) - r).^2
。最小二乘最优的误差函数是err = sum((sqrt((x-xc).^2 + (y-yc).^2) - r).^2)
。
将err
的导数与r
相对应并将其设置为零,然后求解r
会为您提供解决方案r = mean(sqrt((x - xc).^2 + (y - yc).^2))
。
作为MATLAB函数,可以写成
function r = circfitFixedC(x,y,xc,xy)
r = mean(sqrt((x - xc).^2 + (y - xy).^2));