2014-11-02 14 views
7

Zostałem poproszony o znalezienie różnych sposobów na wykreślenie koła w MATLAB,Krąg wydruku w MATLAB

Wydaje się nudne. Jednak mogę wymyślić kilka pomysłów (niektóre mogą być nieskuteczne!),

Metoda 1

ezpolar(@(x)1); 

Metoda 2

t = linspace(0,2*pi,100); 
plot(sin(t),cos(t)); 

Metoda 3

[X,Y,~] = cylinder(1,100); 
plot(X(1,:),Y(1,:)); 

Metoda 4

ezplot('x^2 + y^2 - 1'); 

Metoda 5

theta = linspace(0,2*pi,100); 
ro = ones(1,100); 
[X,Y] = pol2cart(theta,ro); 
plot(X,Y); 

i zrobiło się ciekawie.

Jestem ciekawy, czy masz inne pomysły.

Dzięki.

Edit

Metoda 11

azimuth = linspace(-pi,pi,100); 
r = ones(1,100); 
elevation = zeros(1,100); 
[X,Y,Z] = sph2cart(azimuth,elevation,r); 
patch(X,Y,Z) 
%% (not sure how it works! any improvement suggestions?) 

Odpowiedz

4

Jeśli masz zamiar udać się do współrzędnych biegunowych, to istnieje również

Metoda 6

theta = linspace(0,2*pi,100); 
rho = ones(1,100); 
polar(theta, rho) 

Metoda 7

ezpolar('1') % Shortest? 


Można również skorzystać liczbę zespoloną i how they're handled przez plot:

Metoda 8

theta = linspace(0,2*pi,100); 
rho = ones(1,100); 
z = rho.*exp(1i*theta); 
plot(z) 

Powyższy można zrobić na jednym linia.Może to również być wykreślone jako:

plot(real(z),imag(z)) 

Metoda 9

plot(0,0,'o','MarkerSize',100) 

Metoda 10

text(0,0,'\circ','FontSize',200) 

Wiele other unicodecharacters mogą być wykorzystywane do produkcji kręgów.


może wydłużyć to koła generujących równań różniczkowych, np circular orbits kołową limit cycles (Hopf oscylatora).

2

Metoda 12

rectangle('Position', [-0.5, -0.5, 1, 1], 'Curvature', [1 1]); 

Uogólnione:

circle = @(x, y, r) rectangle('Position', [x-r, y-r, 2*r, 2*r], ... 
    'Curvature', [1 1]); 

circle(0, 0, 1); 
circle(10, 20, 5); 
axis equal; 
+0

Dzięki za odpowiedź, – Rashid