声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 5123|回复: 5

[共享资源] 圆最小二乘拟合函数

[复制链接]
发表于 2007-10-28 00:25 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
一个比较老,但管用的圆最小二乘拟合函数
function [xc,yc,R,a] = circfit(x,y)
%CIRCFIT Fits a circle in x,y plane
%
% [XC, YC, R, A] = CIRCFIT(X,Y)
% Result is center point (yc,xc) and radius R.A is an
% optional output describing the circle's equation:
%
% x^2+y^2+a(1)*x+a(2)*y+a(3)=0

% by Bucher izhak 25/oct/1991

n=length(x); xx=x.*x; yy=y.*y; xy=x.*y;
A=[sum(x) sum(y) n;sum(xy) sum(yy)...
sum(y);sum(xx) sum(xy) sum(x)];
B=[-sum(xx+yy) ; -sum(xx.*y+yy.*y) ; -sum(xx.*x+xy.*y)];
a=A\B;
xc = -.5*a(1);
yc = -.5*a(2);
R = sqrt((a(1)^2+a(2)^2)/4-a(3));

评分

1

查看全部评分

回复
分享到:

使用道具 举报

 楼主| 发表于 2007-10-28 00:35 | 显示全部楼层
例:
xd = rand(1,10);
yd = rand(1,10);
[xc,yc,R,a]=circfit(xd,yd);
plot(xd,yd,'r*');hold on;
t=linspace(0,pi*2,100);
z=xc+yc*i+R*exp(i*t);
plot(z); axis equal;

circfit

circfit
发表于 2007-10-29 10:36 | 显示全部楼层
这个好象matlab的help or demo里面已有.
发表于 2007-10-29 11:09 | 显示全部楼层
发表于 2008-12-4 09:08 | 显示全部楼层
这个很好
很值得学习,谢谢楼主
发表于 2012-4-13 14:29 | 显示全部楼层
多谢楼主分享
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-17 23:35 , Processed in 0.066589 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表