在MATLAB中使用修复中心的最佳拟合圆

时间:2016-08-20 16:56:24

标签: matlab machine-learning regression linear-regression

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

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

1 个答案:

答案 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));