我想要绘制三个球面坐标函数。它们是r,theta,phi的函数,我想在x-y,y-z,x-z平面中查看它们。我已经尝试了8个小时完成这个。我试过的每一种方法都没有成功。
我怎样才能完成这个非常简单的任务?
F1 = (r.^2).*abs((1/(8*sqrt(pi))).*r.*exp(-r/2).*sin(theta).*cos(phi)).^2;
F2 = (r.^2).*abs((1/(8*sqrt(pi))).*r.*exp(-r/2).*sin(theta).*sin(phi)).^2;
F3 = (r.^2).*abs((1/(4*sqrt(2*pi))).*r.*exp(-r/2).*cos(theta)).^2;
如您所见,所有三个函数都是F(r,theta,phi)。这意味着有四个维度:F,r,theta,phi。
答案 0 :(得分:2)
如果你的函数不能表示为r = f(theta,phi),也许你可以计算网格上f(theta,phi,r)的值,然后绘制一个等值面,其中你的体积数据等于你的值2Px
我尝试了这个小例子,你可以从中扩展,但我不知道形状是否正确,因为我不知道会发生什么:
n=20;
rmax=5;
twoPx=0;
%%%%%%%%%%
[theta phi r]=ndgrid(linspace(0,2*pi,n),linspace(-pi/2,pi/2,n),linspace(0,rmax,n));
%%%%%%%%%%
value=(r.^2).*abs((1/(8*sqrt(pi))).*r.*exp(-r/2).*sin(theta).*cos(phi)).^2;
%%%%%%%%%%
[x y z]=sph2cart(theta,phi,r);
%%%%%%%%%%
p=patch(isosurface(x,y,z,value,twoPx));
%%%%%%%%%%
set(p,'FaceColor','b','EdgeColor','k','FaceAlpha',0.5);
daspect([1 1 1])
axis square;
grid on;
camlight;
view([0 0]);
对此代码段的作用的一点解释:
ndgrid
)sph2cart
)patch
和isosurface
)最后,您可能希望使用Matlab函数view
来指定要查看的平面。