2011-11-22 6 views
0

나는 f(x,y)= Exp(-x^2-y^-2)(x^2+y^2) 함수를 가지고 있습니다. MATLAB에서이 함수의 x 축으로의 투영을보고 싶습니다.Matlab : 3D 함수의 2D 투영

가장 좋은 방법은 무엇입니까? 이 같은

+0

관련 질문 : (: [MATLAB 줄거리에 메쉬 기능의 플로팅/저장 XY보기] http://stackoverflow.com/questions/7960059/matlab-plotting-saving -xy-views-of-mesh-function-in-subplots) – Amro

답변

3

뭔가 : 모두 X를 따라 (10)와 y의 범위 -10에 그것을 않지만 그에 따라 그것을 변경할 수 있습니다

xs = []; 
ys = []; 
zs = []; 
for x = -10:0.1:10 
    for y = -10:0.1:10 
     xs = [xs x]; 
     ys = [ys y]; 
     z = f(x,y); 
     zs = [zs z]; 
    end 
end 
figure; plot3(xs,ys,zs); %plots the full function over both dimensions 
figure; plot(xs,zs,'rx'); %plots the projection onto the x axis 
figure; plot(ys,zs,'rx'); %plots the projection onto the y axis 

.

1

당신은 x 축에 차원 프로젝션을 볼 수 view을 조작 할 수 있습니다 :

f = @(x,y) exp(-x.^2 -y.^(-2)).*(x.^2+y.^2); 
[X,Y] = meshgrid(-10:0.5:10,-10:0.5:10); 
surf(X,Y,f(X,Y)) 
view(90,0), shading interp 
xlabel X, ylabel Y, zlabel Z 

screenshot

+0

그림에서 'YZ보기로 이동'을 선택하면 회전 버튼을 클릭해도 동일한 결과가 발생하지 않습니까? – clarkson

+0

@clarkson : 예, 프로그래밍 방식으로 처리하고 있습니다. X-Y view는'view (0,90)'에 대응하고, X-Z는'view (0,0)'이고, Y-Z는'view (90,0)'이다. – Amro

3

@Amro은 훌륭한 솔루션을 가지고 있지만, 당신은 또한 스콧 허쉬의 한 번 봐 걸릴 수 있습니다 MATLAB Central File Exchange의 최고 shadowplot. 그것을 체크 아웃 :

>> f = @(x,y) exp(-x.^2 -y.^(-2)).*(x.^2+y.^2); 
>> [X,Y] = meshgrid(-10:0.5:10,-10:0.5:10); 
>> surf(X,Y,f(X,Y)) 
>> xlim([-11,11]) 
>> ylim([-11,11]) 
>> shadowplot x 
>> shadowplot y 

enter image description here