我被要求找到不同的方法在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?)
答案 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;