2011-11-06 2 views
1

구면 표현 된 함수 I 함수 구면 좌표로 표현 가지고MATLAB - 플롯 현재 좌표

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

가 I이 방법 MATLAB이 플롯 싶습니다

  1. R3
  2. R2 등고선 플롯 (XZ 평면 또는 XY 평면 또는 YZ 평면)

간단한 있는가 이 일을하는 방법?

답변

1

그냥 직교 coordiantes의 변환 및 플롯을 수행

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) 

는이 같은 3D 데이터를 시각화 isosurface을 좋아합니다. 2D 슬라이스의 경우 Z = 0을 사용하면 imagesc(fvals(:,:,N)) 또는 contour(fvals(:,:,N))

+1

변환이 약간 씩 틀리므로 'Th = atan2 (YY, XX); Phi = asin (ZZ./R);', 그러나 바람직하게는 수치 문제를 피하기 위해 CART2SPH를 사용하십시오 – Amro

+0

덜보기 흉한 방법이 있습니까? –

+0

@Amro : sph2cart()를 사용하려면 어떻게 위 코드를 수정할 수 있습니까? –

1

sph2cart()을 사용하여 좌표를 변환 한 다음 plot()/plot3()을 사용하여 기능을 그릴 수 있습니다.