2010-05-07 78 views
0

我試圖得到像下面這樣一個畫面:在Matlab特殊功能

http://upload.wikimedia.org/wikipedia/en/e/e6/Airy-3d.svg

我在做什麼錯?

[x,y]=meshgrid(-1:.1:1,-1:.1:1); 
surf(x,y,(2*besselj(1,2*pi*sqrt(x.^2+ y.^2)/sqrt(x.^2+ y.^2)).^2) 

另外...一種旁註,但如果我在這裏使用ndgrid而不是meshgrid,我的x和y會切換正確嗎?

+0

的'surf'線不匹配的括號,所以我我不確定你在做什麼。 – mtrw 2010-05-07 05:27:44

回答

1

這裏有一對夫婦的事情,我看到錯誤的公式:

  • 有一個缺少結束括號在某處你的方程式,也許是第一個sqrt(x.^2+y.^2)後?在這個等式中,似乎你自己劃分了sqrt(x.^2+y.^2),這可能不是你想要做的,也是爲什麼我認爲你錯過了那裏的括號。
  • 您可能需要使用./而不是使用/(請參閱this link瞭解更多詳細信息)的矩陣右分區來執行基於元素的劃分。

此外,你將要在表面物體的'FaceColor' property更改爲'none',使網格的只有邊緣顯示:

[x,y] = meshgrid(-1:.1:1,-1:.1:1); 
z = ... %# Compute your z in some way 
surf(x,y,z,'FaceColor','none');