Matlab中的特殊功能

时间:2010-05-07 04:55:04

标签: 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会切换到右边吗?

1 个答案:

答案 0 :(得分: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');