2011-07-22 21 views
3

私はMATLABを初めて使い、基本的な問題を抱えています。 C = center +(radius * cos(theta))+(radius * sin(theta))という円の方程式があります。私はこのサークルを他のものにグラフで追加したいと思います。私はtheta = linspace(0,2 * pi)を使ってみましたが、円のための私の方程式を構築する際には、行列の大きさが一致しないと言いました!もしあなたが偉大な助けを提供できるならば!MATLABでパラメータ化された3D円をグラフ化する

答えて

0

私はあなたがやろうとしているのかわからないのですが、この例を考えてみます。ここでは

theta = linspace(0,2*pi,100); 
C = [0;0]; 
r = 1; 

p = bsxfun(@plus, r.*[cos(theta);sin(theta)], C); 
plot(p(1,:), p(2,:), '.-') 
axis equal 

enter image description here

1

は、与えられた半径と中心とした円をプロット(円を想定した例です

radius = 2;  %# Define your radius 
center = [1 2]; %# Define your circle center [Cx Cy] 
theta = linspace(0,2*pi);   %# Create an array of theta values 
X = center(1)+radius.*cos(theta); %# Create the X values for the circle 
Y = center(2)+radius.*sin(theta); %# Create the Y values for the circle 
Z = zeros(size(X));    %# Create the Z values for the circle (needed 
            %# for 3D plotting) 
hold on;  %# Add to the current existing plot 
plot3(X,Y,Z); %# Plot your circle in 3D 

そして、ここでは、オンラインリソースへのリンクをしているための良い出発点でなければなりません:平面z = 0)にあり、 MATLABでプロットの基本を学ぶ:

+0

ああ、そのデモが大きく添加のみが、それは、Z = 0に存在しないことで、助けました。どうすればz =/= 0のような3次元円のコードを修正するのですか?私はここでそれを掲示しています。 – sue

+0

@sue:円が 'z = N'平面にある場合、' Z = N. * ones(size(X)); 'しかし、あなたの円が傾斜している場合XY平面内で平らにならないように、あなたの方程式は上の方程式よりも複雑になります。 – gnovice

+0

ああ、そうです。どの点でも曲線の接する円をグラフ化しようとしています。その円はどのように傾けても構いません。私は円の公式が正しいと信じていますが、それをグラフにすることはかなり困難です。 – sue

1

円は2Dエンティティが基本的にあるので、あなたはよそれを表す点を3D空間に埋め込まれた既知の2D平面に生​​成する必要があります。それから、あなたは望むようにそれを回転、拡大縮小、翻訳することができます。

単純なデモコードがうまくいけば、それは明らかに:

n= 78; theta= linspace(0, 2* pi, n); c= [1 2 3]'; r= sqrt(2); 

points= r*[cos(theta); sin(theta); zeros(1, n)]+ repmat(c, 1, n); 
plot3(points(1,:), points(2,:), points(3,:), 's-') 
axis equal, hold on 

R= rref([rand(3) eye(3)]); R= R(:, 4: 6); 
points= R* points; 
plot3(points(1,:), points(2,:), points(3,:), 'ro') 
関連する問題