MATLAB中的绘图圆

时间:2014-11-02 19:03:55

标签: matlab plot graph geometry

我被要求找到不同的方法在MATLAB中绘制圆圈,

看起来很无聊。但是我可以提出一些想法(有些可能效率低下!),

方法1

ezpolar(@(x)1);

方法2

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

方法3

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

方法4

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

方法5

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

它很有趣。

如果你有其他想法,我很好奇。

感谢。

Edit

方法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?)

2 个答案:

答案 0 :(得分:4)

如果您要去极坐标,那么还有

方法6

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

方法7

ezpolar('1') % Shortest?


您还可以使用复数和plot theta = linspace(0,2*pi,100); rho = ones(1,100); z = rho.*exp(1i*theta); plot(z)

方法8

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

以上可以在一行上完成。它也可以绘制为:

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

方法9

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

方法10

{{1}}

许多how they're handled other unicode可用于制作圈子。


您可以将其扩展为使用微分方程生成圆,例如characters和圆circular orbits(Hopf振荡器)。

答案 1 :(得分:2)

方法12

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

广义:

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;