Графические специальные функции в Matlab (2D Bessel) - PullRequest
0 голосов
/ 07 мая 2010

Я пытаюсь по существу получить что-то вроде этого, где я вижу четкую рябь на базе, но в остальном это похоже на гауссиан: alt text

Это неудовлетворительно, потому что рябь не очень заметна, она имеет очень грубое качество, которое немного затеняет изображение, и если вы перемещаете график так, чтобы он был только в 2D (чтобы он выглядел как круг) Я даже не уверен, если это так, как это должно быть (концентрические круги кажутся более равномерно распределенными в реальной вещи). Итак, есть ли лучший способ сделать это?

a = 2*pi;
[X Y] = meshgrid(-1:0.01:1,-1:0.01:1);
R = sqrt(X.^2+Y.^2);
f = (2*besselj(1,a*R(:))./R(:)).^2;
mesh(X,Y,reshape(f,size(X)));
axis vis3d;

Ответы [ 2 ]

1 голос
/ 07 мая 2010

Это то, что вы хотите?

Surf

alt text

Код

a = 2*pi;
[X Y] = meshgrid(-1:0.1:1,-1:0.1:1);
R = sqrt(X.^2+Y.^2);
f = (2*besselj(1,a*R(:))./R(:)).^2;
h=surf(X,Y,reshape(f,size(X)));
axis vis3d;
set(h,'FaceAlpha',0)
1 голос
/ 07 мая 2010

Вам нужно изменить цветовую карту или изменить свойства поверхности и показать форму с отражениями.Посмотрите документацию , чтобы увидеть все, что вы можете сделать.Например:

a = 2*pi;
[X Y] = meshgrid(-1:0.01:1,-1:0.01:1);
R = sqrt(X.^2+Y.^2);
f = (2*besselj(1,a*R(:))./R(:)).^2;
h=mesh(X,Y,reshape(f,size(X)));
axis vis3d;
%# change from mesh to solid surface with no lines
set(h,'FaceColor','interp','edgeColor','none','facelighting','phong');
%# set reflectance
material shiny
%# add light. Change the position to see different reflections
light('Position',[10 0 10],'Style','local');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...