编者按:此文件被选为Matlab Central本周精选
14年前的代码(为MATLAB 2.x编写于1991年)的复兴。
给定一组测量的x,y对,即重复驻留在圆圈上,但有一些增加的噪音。循环到这些点,即找到XC,YC,R,使得(X-XC)^ 2 +(Y-YC)^ 2 = R ^ 2
该方法使径向偏差的平方和最小化。
Izhak Bucher(2021)。圆适合(//www.tianjin-qmedu.com/matlabcentral/fileexchange/5557-circle-fit),Matlab中央文件兑换。检索到.
节省了我很多时间,谢谢!
抱歉,我还是弄错了,xe是一般圆方程的典型表达方式,不是R*cos(th)因此“xe-xc=Rcos(th)”和“ye-yc=Rsin(th)”。
tejas harish:现在回答你的问题可能太晚了;也许其他人想知道你问题的答案。x-y平面上圆的一般方程是“(x-xc)^2+(y-yc)^2=R^2”。在柱坐标系中,圆定义为x-xc=R*cos(th)和y-yc=R*sin(th)。因此th是角度,R是圆半径,xe和ye是移位的坐标,xe==x-xc和ye=y-yc,所以等价于(x-xc)^2+(y-yc)^2=R^2或者(xe)^2+(ye)^2=R^2。“sigma”只是一个缩放参数——注意“x”和“y”变量,它们是圆上点的坐标,添加了噪声——sigma只是缩放噪声。
我的道歉,我犯了一个小错误,我无法通过编辑我的原始帖子来弄清楚如何纠正。第2条等式应该说:该功能适合圆的等式,(X-XC)^ 2 +(Y-YC)^ 2 = R ^ 2。在圆柱形坐标中,圆形由“X-XC = R * COS(TH)”定义,“Y-YC = R * SIN(TH)”。
谁能告诉我,变量th,R,xe和的意义是什么?
你好,
有没有人知道如何计算与使用此代码的装有圆圈的测量点的圆形度的偏差?
我已经到了图像处理工具箱中的死亡结束,以评估灰度图像中的圆圈。
谁知道如何使用给定的代码来适应图像中的这些圆从而绘制出圆直径分布的直方图?
这个圈子在20世纪70年代,P.Delogne和I.Kasa首次发布。在统计数据中被称为“KASA方法”。当点覆盖圆的大部分时,它很好,但是当点限制在一个小弧时,很大偏见。普拉特和幼金提出了更好的配合。
工作就像一个符咒:-)
工作很好!
我不知道是怎么做到的,但确实管用!:D
你救了我一堆在那里。
非常感谢!
注意:此代码没有最小化径向偏差平方和——这是一个非线性最小二乘问题
这段代码使sum((x。^2 + y ^2 - R^2
只是…优秀的. .谢谢。
:-)
我发现它非常有效。
回复:Hedi Kawano
另请参阅
http://www.pitchup.com/matlab/print.aspx?article=168
高质量的代码,简单有效
非常有用,如果需要将测量点拟合到圆圈功能并将其比较以进一步参考值。
对不起,这是
http://www.math.niu.edu/~rusin/known-math/99/circlefit
(最后的“T”缺失)
http://www.math.niu.edu/~rusin/known-math/99/circlefi告诉你在circle_fit中使用的方程。“M”给出了近似解。
覆盖几乎完整圆圈的数据的好工具。但是,如果存在仅描述弧的数据,则CircFit失败识别假定的中心和半径。
我已经使用这个功能来验证一个功能在计量软件给出正确的前4位数字,所以它似乎OK
尤里,
它可能非常有用。例如,试图将奈奎斯特策略适合实验所获得的FRF ...理想情况下,Nyquist Plot应该是一个圆圈,但不是“噪音”
谁能告诉我,在什么地方可以用圆来拟合这样的分布?