登录论坛

查看完整版本 : 谁能帮我看看这个程序有什么问题?


zhaofeilifei
2008-09-23, 15:43
x=[38.8490, 37.7060, 31.1880, 20.2380, 6.86600, -6.59400, -18.0560, -26.1350, -30.3280, -30.8140, -28.0350, -22.5420, -14.7820, -5.25900, 5.47500, 16.5870, 26.8930, 34.8520];
y=[ 0., 13.7240, 26.1070, 35.0530, 38.9340, 37.4020, 31.2760, 21.9310, 11.0390, .1000e-2, -10.2040, -18.9150, -25.6030, -29.8250, -31.0490, -28.7290, -22.5650, -12.6840];
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));

meteora1005
2008-09-24, 22:23
首先我不知道你学过matlab没有,得弄清楚几个问题:m文件,函数文件,主函数和子函数的意义和关系。
如果你想在一个文件内调用circfit的话可以写成这样,把circfit当成一个子函数:
function [xc,yc,R,a] =shiyan

x=[38.8490, 37.7060, 31.1880, 20.2380, 6.86600, -6.59400, -18.0560, -26.1350,...
-30.3280, -30.8140, -28.0350, -22.5420, -14.7820, -5.25900, 5.47500, 16.5870, 26.8930, 34.8520];
y=[ 0., 13.7240, 26.1070, 35.0530, 38.9340, 37.4020, 31.2760, 21.9310, 11.0390,...
.1000e-2, -10.2040, -18.9150, -25.6030, -29.8250, -31.0490, -28.7290, -22.5650, -12.6840];
[xc,yc,R,a] = circfit(x,y);

function [xc,yc,R,a] = circfit(x,y)

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