所以我试图在Matlab上绘图,这是我迄今为止的源代码:
phi=linspace(0,pi,100);
theta=linspace(0,pi,100);
r=phi.^2+theta.^2;
x=r.*sin(phi).*cos(theta);
y=r.*sin(phi).*sin(theta);
z=r.*cos(phi);
plot3(x,y,z,'*')
然而,这只给了我一片,我想要多片。我该怎么做呢? 谢谢!
答案 0 :(得分:4)
您的代码存在一些问题:
theta
和phi
是向量。 phi
的每个值都与theta
的值相关联。这给出了一条线,而不是表面。要生成曲面,您需要生成一个网格,其中包含矩阵形式的theta
,phi
值的所有组合。这可以使用ndgrid
完成。theta
,phi
应该从0
到2*pi
(不是从0
到pi
)。代码:
phi = linspace(0,2*pi,100);
theta = linspace(0,2*pi,100);
[pp, tt] = ndgrid(phi,theta);
R = 1;
r = 1;
x = (R+r.*cos(tt)).*cos(pp);
y = (R+r.*cos(tt)).*sin(pp);;
z = r.*sin(tt);
plot3(x,y,z,'*')
图: