【问题标题】:Best fit circle with fix center in MATLABMATLAB中具有固定中心的最佳拟合圆
【发布时间】:2016-12-27 15:40:21
【问题描述】:

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

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

【问题讨论】:

  • 我只是尝试使用 CircFit,但它不允许我修复中心。 MATLAB 中是否还有其他可用的函数可以让我这样做?
  • 一个简单的解决方案是从中心到每个点的平均距离来近似圆的半径。你说的最合适是什么意思?
  • 有一个误差函数,它是给定点与圆上相应最近点之间距离的平方。我需要最小化错误并获得它的半径。
  • 最小二乘优化的解决方案是每个点的平均距离。
  • 如果相对于r 最小化函数err = sum((sqrt((x-xc).^2 + (y-yc).^2) - r).^2)。你取errr 的导数并将其设置为零,然后求解r。最小化的解决方案是r = mean(sqrt((x - xc).^2 + (y - yc).^2))。不需要梯度下降或类似的东西。

标签: matlab machine-learning regression linear-regression


【解决方案1】:

从 cmets 发布我的答案。

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

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

【讨论】:

    猜你喜欢
    • 2013-08-24
    • 1970-01-01
    • 1970-01-01
    • 2018-02-05
    • 2015-08-14
    • 1970-01-01
    • 2013-02-10
    • 2014-01-02
    • 2023-03-06
    相关资源
    最近更新 更多