clear all;
clc;
% -----参数设定-----
M=512;
N=512;
Lamda=0.6328;
dx=2.0;
dy=dx;
HDiameter=32*dx;
Zd=20.0e+3;
%-----输入形成泊松亮斑所需的圆孔函数-----
[x,y]=meshgrid(-dx*(M/2-1):dx:dx*M/2,-dy*(N/2-1):dy:dy*N/2);
Object=1-cyl(x,y,HDiameter);
figure(1);
imshow(Object);
%-----进行衍射------
SphFunct=(1/(i*Lamda*Zd))*exp(i*2.0*pi*Zd/Lamda)*exp(i*pi*(x.^2+y.^2)/(Lamda*Zd));
Object_F=fftshift(fft2(fftshift(Object)));
SphFunct_F=fftshift(fft2(fftshift(SphFunct)));
FrDiffract=(dx*dy)*fftshift(ifft2(fftshift(Object_F.*SphFunct_F)));
%-------显示衍射图样------
FrDiffract_I=abs(FrDiffract).^2.0; %计算衍射光场的强度分布
FrDiffract_IN=FrDiffract_I/max(max(FrDiffract_I)); %归一化
FrDiffract_P=(angle(FrDiffract)+pi)/(2*pi); %计算衍射光场的相位分布。
figure(2);
colormap(gray)
imshow(FrDiffract_IN,[0.1 0.1]); % 显示衍射图样的强度分布。
% text_buffer =strcat('Diffraction patern at distance z=',num2str(Zd*1.0e-3),'mm ');%显示衍射距离。
% title(text_buffer);
% figure(3);
% imshow(FrDiffract_P); % 显示衍射图样的相位分布。
% title('Phase distribution of the diffraction field');
%------保存衍射图样的强度分布-----
imwrite(FrDiffract_IN,'Diffract_In.bmp');
- 1
- 2
- 3
前往页