我正在尝试根据以下给出的振幅透射率函数制作衍射光栅图案:
tA=1/2(1-cos(2*pi*x/P))*rect(x/D1)*rect(y/D1).
我从 David G.Voelz 的《计算傅立叶光学:MATLAB 教程》中学到了这种方法(这本书可以在线获取:https://www.spiedigitallibrary.org/ebooks/TT/Computational-Fourier-Optics-A- MATLAB-教程/eISBN-9780819482051/10.1117/3.858456?SSO=1#_=_ )。书中提到“当受到单位振幅平面波照射时,源场为
U1(x1,y1) = tA(x1,y1)
”。我想知道如果入射光是高斯光束,那么我是否也可以认为该入射光束是平面波?或者我应该对源字段 U1 进行任何更改吗?
这是我从书上学到的代码:
首先,我创建了一个远场近似函数:
function[u2,L2]=propFF(u1,L1,lambda,z)
%propagation - Fraunhofer pattern
%assumes uniform sampling
%u1 - source plane field
%L1 - source plane side lenght
%lambda - wavelength
%z - propagation distance
%L2 - observation plane side length
%u2 - observation plane field
[M,N]=size(u1); %get input filed array size
dx1 = L1/M; %source sample interval
k=2*pi/lambda;
L2=lambda*z/dx1; %obs sidelength
dx2=lambda*z/L1; %obs sample interval
x2=-L2/2:dx2:L2/2-dx2; %obs coords
[X2,Y2]=meshgrid(x2,x2);
c=1/(1i*lambda*z)*exp(1i*k/(2*z)*(X2.^2+Y2.^2));
u2=c.*ifftshift(fft2(fftshift(u1)))*dx1^2;
end
然后我使用这个近似来绘制衍射光栅图案:
lambda= 0.5e-6; %wavelength
f=0.5; %propagation distance
P=1e-4; %grating period
D1=1.02e-3; %grating side length
L1=1e-2; %array side length
M=500; %number of samples
dx1=L1/M;
x1=-L1/2:dx1:L1/2-dx1; %source coordinates
[X1,Y1]=meshgrid(x1,x1);
% Grating field and irradiance
u1=1/2*(1-cos(2*pi*X1/P)).*rect(X1/D1).*rect(Y1/D1);
% Fraunhofer pattern
[u2,L2]=propFF(u1,L1,lambda,f);
dx2=L2/M;
x2=-L2/2:dx2:L2/2-dx2;
y2=x2;
I2=abs(u2).^2;
figure(1)
plot(x2,I2(M/2+1,:));
xlabel('x(m)');
ylabel('Irradiance');
希望有人能帮忙。一百万谢谢!
传播方式不依赖于光源是等幅平面波还是高斯光束。 它仍然会正确传播到远场。 它只是不完全符合均匀平面波照明的理论方程。