補上Matlab Code
clear all
wvl=632.8e-9; delta2=2e-7;f=1;Dz=1.002;N=2^10; pinr=10.1e-7;
L=wvl/delta2*Dz ;
k=2*pi/wvl; delta1= L/N;
[x1 y1] = meshgrid((-N/2 : N/2-1) * delta1);
x1_0 = (-N/2 : N/2-1) * delta1 ; y1_0 = x1_0 ;
%建立Lens
r1 = sqrt(x1.^2 + y1.^2);
pupil = r1 <= (0.1)* ones(N,N);
E0=1;
E1 = E0.*pupil.* exp(-1i*k/(2*f)*r1.^2) ;
[x2 y2] = meshgrid((-N/2 : N/2-1) / (N*d1)*wvl*Dz);
ft2(g, delta)=fftshift(fft2(fftshift(g))) * delta^2;
% evaluate the Fresnel-Kirchhoff integral
Uout = 1 / (i*wvl*Dz) .* exp(i * k/(2*Dz) * (x2.^2 + y2.^2)) .* ft2(Uin .* exp(i * k/(2*Dz) ...
* (x1.^2 + y1.^2)), d1);
x2_0=x2(1,;y2_0=x2_0;
%加上pinhole
[E3,I3,II3, x2,y2 ] = addpinhole(E2,x2,y2,pinr);
%傳播
Dz2=100e-6;
[E4, x3, y3] =one_step_prop(E3, wvl, delta2, Dz2); (同 Fresnel-Kirchhoff integral)
x3_0=x3(1,;y3_0=x3_0;
I4= abs(E4).^2;,