我有一个以球坐标表示的函数:
f(r,theta,phi) = 4*exp(-r)*cos(theta)*sin(phi)
我想以这些方式在MATLAB中绘制这个:
有直接的方法吗?
答案 0 :(得分:1)
您可以使用sph2cart()
转换坐标,然后使用plot()
/ plot3()
绘制函数。
答案 1 :(得分:1)
只需在笛卡尔坐标中进行转换和绘图:
f = @(r, theta, phi) 4*exp(-r).*cos(theta).*sin(phi)
[XX YY ZZ] = meshgrid(x_range, y_range, z_range)
% R = sqrt(XX.^2 + YY.^2 + ZZ.^2)
% Th = acos(XX./YY)
% Phi = acos(ZZ./R)
% This is faster. . . and significantly more correct. See the comments below.
[Th,Phi,R] = cart2sph(XX,YY,ZZ)
fvals = f(R, Th, Phi)
我喜欢isosurface
这样可视化3D数据。对于通过Z = 0的2D切片,您可以使用imagesc(fvals(:,:,N))
或contour(fvals(:,:,N))