基于MATLAB:涡旋光束、高斯光束和平面波矩孔圆孔fresnel菲涅尔衍射仿真

喜欢的话给小编点个关注点个赞呀

菲涅尔衍射基本原理

菲涅尔衍射是波动光学中的一个概念,描述了光波在通过一个小孔或障碍物后的传播行为。它与夫琅禾费衍射(远场衍射)相对应,适用于光源和观察屏之间的距离不是无限远的情况。菲涅尔衍射考虑了光波的近场效应,即衍射图案在靠近障碍物的地方形成。菲涅尔衍射积分表达式为:

则我们可以得到菲涅尔衍射的振幅扩散函数和光学传递函数:

本章内容我们将讨论平面波、高斯光束、拉盖尔高斯涡旋光束经矩孔和圆孔菲涅尔衍射实例。平面波为振幅为1的光束,源平面高斯光束的表达式为:

其中,E0为光场振幅(一般取1),w0为光束的束腰半径,r为对应的极坐标。

拉盖尔高斯涡旋光束是携带螺旋相位因子可写成exp(ilφ)且具有拉盖尔高斯振幅的光束,这种涡旋光束可承载lh/2π的轨道角动量,其光场表达式为:

其中,E0为光场振幅(一般取1),w0为光束的束腰半径,l表示光束的拓扑荷数。如图1所示,我们分别展示了平面波经圆孔,高斯光束和l=2,3的拉盖尔-高斯光束的光分布。

图1:三种不同光束的光强分布图

圆孔和矩孔的表达式分别为:

平面波经圆孔和矩孔菲涅尔衍射

在图2中,我们展示了平面波经圆孔和矩孔菲涅尔传播的实例,圆孔直径和矩孔边长均设置为0.005m,我们发现在z=1m靠近圆孔处形成衍射图案,而在z=10m远距离处衍射图已经变为类似高斯形式的图案。而矩孔衍射在20米处中间位置也趋于高斯形式。

图2:平面波经圆孔和矩孔菲涅尔传播的实例

高斯光束经圆孔和矩孔菲涅尔衍射

在图3中,我们展示了高斯光束经圆孔和矩孔菲涅尔传播的实例,高斯光束束腰设置为0.005m,圆孔直径和矩孔边长分别设置为0.3w0和0.5w0。我们发现在z=0.5米的时候均产生衍射图样,随着距离增加,均趋于高斯形式。

图3:高斯光束经圆孔和矩孔菲涅尔传播的实例

拉盖尔高斯涡旋光束经圆孔和矩孔菲涅尔衍射

在图4中,我们展示了拉盖尔高斯涡旋光束经圆孔和矩孔菲涅尔传播的实例,拉盖尔高斯涡旋光束束腰设置为0.0005m,圆孔直径和矩孔边长均设置为一倍束腰。我们发现在传播距离逐步增加的时候,衍射图样会发生一定的转动,但转到一定角度便不再发生变化。此外,不同拓扑荷数对应的衍射图样也不相同。

图4:拉盖尔高斯涡旋光束经圆孔和矩孔菲涅尔传播的实例

MATLAB仿真代码:

%t店:博士生牛马赚点小钱
%平面波、高斯光、涡旋光矩孔圆孔菲涅尔衍射
clear;clc;close;
%% 设置输入面网格
N = 512; % 网格数
L = 1.8e-2; % 网格边长 [m]
d1 = L / N; % 网格间距 [m]
[x1,y1] = meshgrid((-N/2 : N/2-1)*d1);%创建网格
[phi,r1] = cart2pol(x1,y1);
%光束参数
wvl = 632.8e-9; % 波长 [m]
k = 2 * pi / wvl;
w = 5e-4; % 高斯光束束腰 [m]
l=3;%拓扑荷数
z =100; % 传播距离 [m]
%% 输入光强
%平面波经过圆孔矩孔
Uinc = circ(x1, y1, 1*w);
Uinr = rect(y1,1*w).* rect(x1,1*w);
%高斯光束经过圆孔矩孔
UinGc = circ(x1,y1,0.3*w).*exp(-(r1.^2)./(w.^2));
UinGr = rect(y1,0.5*w).* rect(x1,0.5*w).*exp(-(r1.^2)./(w.^2));
%涡旋光束经过圆孔矩孔
UinLc = circ(x1,y1,1*w).*(sqrt(r1.^2)./w).^abs(l).*exp(-(r1.^2)./(w.^2)).*exp(1i.*l.*phi);
UinLr = rect(y1,1*w).* rect(x1,1*w).*(sqrt(2).*r1./w).^abs(l).*exp(-(r1.^2)./(w.^2)).*exp(1i.*l.*phi);
%% 输出光强
[x2, y2, Uoutc]= Fresnel_one_prop(Uinc, wvl, d1, z);
[x2, y2, Uoutr]= Fresnel_one_prop(Uinr, wvl, d1, z);

[x2, y2, UoutGc]= Fresnel_one_prop(UinGc, wvl, d1, z);
[x2, y2, UoutGr]= Fresnel_one_prop(UinGr, wvl, d1, z);

[x2, y2, UoutLc]= Fresnel_one_prop(UinLc, wvl, d1, z);
[x2, y2, UoutLr]= Fresnel_one_prop(UinLr, wvl, d1, z);

Ic=Uoutc.*conj(Uoutc);
Ir=Uoutr.*conj(Uoutr);

IGc=UoutGc.*conj(UoutGc);
IGr=UoutGr.*conj(UoutGr);

ILc=UoutLc.*conj(UoutLc);
ILr=UoutLr.*conj(UoutLr);

I=UinGr.*conj(UinGr);
%% 填入相应光强即可画图
figure
imagesc(ILc);axis off ;colormap("parula");axis square

喜欢的话给小编点个关注点个赞

有任何问题可以在评论区留言更多完整代码进T店博士生牛马赚点小钱

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值