在 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,'*')
然而这只给我一片,我想要多片。我该怎么做呢?
谢谢!
您的代码有几个问题:
- 在您的代码中,
theta
和 phi
是 向量 。 phi
的每个值都与 theta
的值关联。这给出了一条线,而不是一个表面。要生成表面,您需要生成一个网格,其中包含 theta
、phi
值的所有组合,形式为 矩阵 。这可以通过 ndgrid
. 来完成
- 环面的方程似乎是错误的。我从 Wikipedia.
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,'*')
图:
所以我试图在 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,'*')
然而这只给我一片,我想要多片。我该怎么做呢? 谢谢!
您的代码有几个问题:
- 在您的代码中,
theta
和phi
是 向量 。phi
的每个值都与theta
的值关联。这给出了一条线,而不是一个表面。要生成表面,您需要生成一个网格,其中包含theta
、phi
值的所有组合,形式为 矩阵 。这可以通过ndgrid
. 来完成
- 环面的方程似乎是错误的。我从 Wikipedia.
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,'*')
图: