在 matlab 上画图

Graphing something on matlab

所以我试图在 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,'*')

然而这只给我一片,我想要多片。我该怎么做呢? 谢谢!

您的代码有几个问题:

  • 在您的代码中,thetaphi 向量 phi 的每个值都与 theta 的值关联。这给出了一条线,而不是一个表面。要生成表面,您需要生成一个网格,其中包含 thetaphi 值的所有组合,形式为 矩阵 。这可以通过 ndgrid.
  • 来完成
  • 环面的方程似乎是错误的。我从 Wikipedia.
  • thetaphi 应从 02*pi(而不是从 0pi)。

代码:

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,'*')

图: