2010-05-07 52 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');