MATLAB - построить функцию, которая в настоящее время выражена в сферических координатах - PullRequest
1 голос
/ 06 ноября 2011

У меня есть функция, выраженная в сферических координатах:

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

Я бы хотел построить это в MATLAB следующим образом:

  1. R3
  2. График контура R2 (плоскость xy, плоскость xz или плоскость yz)

Существует ли прямой способ сделать это?

Ответы [ 2 ]

1 голос
/ 06 ноября 2011

Просто выполните преобразование и нанесите на график в декартовых координатах:

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 для визуализации трехмерных данных, подобных этой.Для 2D среза через Z = 0 вы можете использовать imagesc(fvals(:,:,N)) или contour(fvals(:,:,N))

1 голос
/ 06 ноября 2011

Вы можете использовать sph2cart() для преобразования координат, затем используйте plot() / plot3() для построения функции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...