Matlab中的特殊函数

Matlab中的特殊函数,matlab,Matlab,我正在尝试获得如下图片: 我做错了什么 [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将正确切换?以下是我认为等式有问题的几点: 等式中的某个地方缺少一个右括号,可能在第一个sqrt(x.^2+y.^2)之后?在等式中,似乎您正在将sqrt(x.^2+

我正在尝试获得如下图片:

我做错了什么

[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将正确切换?

以下是我认为等式有问题的几点:

  • 等式中的某个地方缺少一个右括号,可能在第一个
    sqrt(x.^2+y.^2)
    之后?在等式中,似乎您正在将
    sqrt(x.^2+y.^2)
    除以自身,这可能不是您想要做的,这就是为什么我认为您缺少括号的原因
  • 您可能希望使用
    /
    执行元素级除法,而不是使用
    /
    执行矩阵右除法(有关更多详细信息,请参阅)
此外,您还需要将曲面对象的边界更改为
“none”
,以便仅显示网格的边:

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

surf
行的括号不匹配,因此我不确定您想做什么。