2010-05-07 5 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 здесь мои иксы и значений у переключит правильно?

+0

Параметр 'surf' линия несовпадающие скобки, поэтому я «Не уверен, что ты пытаешься сделать. – mtrw

ответ

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'); 
Смежные вопросы