如何在matlab根据已知三点画一个弧~~有代码最好!

如何在matlab根据已知三点画一个弧~~有代码最好!

首先过三点拟合圆 在再画出圆弧

过三点拟合圆的程序参见http://www.matlabsky.com/thread-290-1-1.html

下面举个例子吧,比如给出三点A(1,2) B(5,6) C(3,5)

%by dynamic
%see also http://www.matlabsky.com
%2009.2.19
%
%根据三点逆时针绘制圆弧
A=[1 2];
B=[5 6];
C=[3 5];
[c,r]=calcCircle(A,B,C); %这里需要用到上面的那个函数http://www.matlabsky.com/thread-290-1-1.html
a=c(1);
b=c(2);
th=[A;B;C];
th2=[th(:,1)-a th(:,2)-b];
theta=atan2(th2(:,2),th2(:,1));
[theta_max,num_max]=max(theta);
[theta_min,num_min]=min(theta);
t=linspace(theta_min,theta_max,100);
%t=0:0.1:2*pi;
a=c(1);
b=c(2);
x=r*cos(t)+a;
y=r*sin(t)+b;
plot(x,y,'r-',th(:,1),th(:,2),'o')
axis equal
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-02-20
x=0:2;
y=sin(x)+cos(x)+rand(1,length(x))/3;
n=2;
p=polyfit(x,y,n); %计算n次多项式系数p
xi=linspace(0,2,100);
yi=polyval(p,xi); %计算多项式的值
plot(x,y,'o',xi,yi);
xlabel('x'),ylabel('f(x)')
title('最小二乘法拟合')
第2个回答  2009-02-20
以上几位都可以你答案了。

提醒一下,圆的方程,最好用非线性抑合,polyfit不太适合。

可以使用lsqcurvefit函数