MATLAB 中具有固定中心的最佳拟合圆

Best fit circle with fix center in MATLAB

我有几个点圆通过,我想找到圆心固定在原点的最佳拟合圆的半径。

CircFit 不允许明确指定中心,我需要它固定在原点。

转post我在评论中的回答。

圆上一点到最近点的距离是sqrt((x-xc).^2 + (y-yc).^2) - r).^2。最小二乘最优的误差函数是 err = sum((sqrt((x-xc).^2 + (y-yc).^2) - r).^2).

rerr 的导数并将其设置为零,然后求解 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));