MATLAB - 绘制当前在球面坐标中表示的函数

时间:2011-11-06 05:32:16

标签: matlab 3d plot

我有一个以球坐标表示的函数:

f(r,theta,phi) = 4*exp(-r)*cos(theta)*sin(phi)

我想以这些方式在MATLAB中绘制这个:

  1. R3
  2. R2轮廓图(x-y平面或x-z平面或y-z平面)
  3. 有直接的方法吗?

2 个答案:

答案 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))