涡旋光束是一种相位呈螺旋状分布的结构光束,由于相位奇点的存在,其光强分布在空间中为形似“甜甜圈”的圆环。这种光束因其优异的空间分布特性,在光通信、光学操控、显微成像方面有着非常广泛的应用。
涡旋光束特性的研究从1992年到现在,已经经历了30年之久,相关的产生和检测方法也都十分完备和全面,这里仅简单展示用柱透镜检测涡旋光束的拓扑荷数的Matlab仿真及相关的分析。
代码如下:
% ********柱透镜检测涡旋光束的拓扑荷数仿真*********
% 说明:函数生成涡旋光并经过柱透镜相位衍射
%% **********代码运行********************
clear,clc,close all;
f_VBs = f_Vortex_beams; %自定义函数声明
f_trans = f_Lightfield_transmission;
%输入光源参数设定******************
P = 0; %拓扑荷数
L = 1;
lambda = 1550e-9; %光波长
w0 = 1.3e-3; %束腰半径
z = 0; %光场传输距离
x_length = 1e-2; %屏大小
y_length = 1e-2;
Nx = 1000; %分辨率1000×1000
Ny = 1000;
E0 = f_VBs.LGs(P,L,lambda,w0,z,x_length,y_length,Nx,Ny);
figure;
subplot(1,2,1),imagesc(abs(E0).^2),colormap(subplot(1,2,1),hot),title('入射光场'),axis square,axis off;
subplot(1,2,2),imagesc(angle(E0)),colormap(subplot(1,2,2),gray),title('相位'),axis square,axis off;
[x,y] = meshgrid(linspace(-x_length/2,x_length/2,Nx),linspace(-y_length/2,y_length/2,Ny));
% *******添加柱透镜相位(有动画显示)*************
f_c = 200e-3; %柱透镜焦距
phi_c = 2*pi*(f_c-sqrt(abs(f_c).^2+abs(y).^2))./lambda; %柱透镜相位
figure;imagesc(phi_c),colormap gray,title('柱透镜相位'),axis square,axis off;
E1 = E0.*exp(1i*phi_c);
p = 20;
f_sq = linspace(0.5*f_c,20*f_c,p);
for q = 1:p
z_trans = f_sq(q);
E2 = f_trans.matrix_multiplication(lambda,E1,x_length,y_length,20*x_length,20*y_length,Nx,Ny,z_trans);
figure;imagesc(abs(E2).^2),colormap gray,title('柱透镜解'),axis square,axis off;
drawnow;
I = frame2im(getframe(gcf));
[I,map] = rgb2ind(I,256);
if q == 1
imwrite(I,map,'Clens_test.gif','gif','Loopcount',inf,'DelayTime',0.1);
else
imwrite(I,map,'Clens_test.gif','gif','WriteMode','append','DelayTime',0.1);
end
end
当柱透镜焦距设定为50cm,接收屏的位置从0.5倍焦距处慢慢移动到20倍焦距位置时,仿真观察到的现象如下面的动画所示:
而当柱透镜焦距较小时,例如10cm,接收屏的位置同样由0.5倍焦距处移动到20倍焦距处,那么条纹的变化则如下面的动画所示:
可以观察到当柱透镜焦距变小时,接收到的条纹会相对变的更为细长,这说明柱透镜焦距是一个影响比较大的变量,而如果是在实验中,细长的条纹观察起来会比较困难。
另外,束腰半径也同样会产生一定的影响。当柱透镜焦距同样为10cm,其他条件不变且束腰半径由1.3mm改为1.0mm时,可以从下面的动画中看到,条纹比之前分离的更开,观察的更为清晰。所以在实验中如果遇到条纹不清晰的情况,可以适当缩小入射光束的束腰半径。
尚存在的一个问题:实验中如果用柱透镜去解涡旋光时,会发现整个过程是光斑先由圆环变为条纹,继续衍射后再由条纹变回圆环,这个现象在仿真中并未观察到,这一问题尚待进一步探索。