2011-11-22 397 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

是這樣的:

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 

,做它交給10沿x和y的範圍爲-10,但你可以相應地改變。

1

可以操縱view看到x軸的2D投影:

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(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