基于分数Talbot效应的阵列光学涡旋产生matlab模拟与仿真
1.程序功能描述
基于分数Talbot效应的阵列光学涡旋产生matlab模拟与仿真,分别测试正方形,旋转正方形以及六边形三种阵列形状下的光学涡旋。
2.测试软件版本以及运行结果展示
MATLAB2013b版本运行
测试正方形:
测试旋转正方形:
测试六边形:
(完整程序运行后无水印)
3.核心程序
%定义形状 Obj_AS = sum(sum(Lattices)); figure; imshow(Lattices); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%相位,幅度,阵列 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% if SEL == 1 R1 = Width; C1 = Width; [Phi,A,ZT] = func_square_para(Lamda,dx,Beta,R1,C1); end if SEL == 2 R1 = Width; C1 = Width; [Phi,A,ZT] = func_diamond_para(Lamda,dx,Beta,R1,C1); end if SEL == 3 R1 = floor(sqrt(3)*Width); C1 = floor(sqrt(3)*Width); [Phi,A,ZT] = func_hexagon_para(Lamda,dx,Beta,R1,C1); end L1 = floor(size(Lattices,1)/R1); L2 = floor(size(Lattices,2)/C1); XX = zeros(L1*R1,L2*C1); for i = 1:L1 for j = 1:L2 XX(R1*(i-1)+1:R1*i,C1*(j-1)+1:C1*j) = Phi.*A; end end %衍射 Repeat = 10; for nn=1:Repeat FrDiffract = FreeDiffract(Lattices,Lamda,dx,DDist,ZT); DDist = DDist+1000; end U = XX.*FrDiffract(1:L1*R1,1:L2*C1); figure; imshow(imresize(U,[1024,1024]),[]); figure; imshow(imresize(Lattices,[1024,1024]),[]); figure; imshow(imresize(angle(U),[1024,1024]),[]);
4.本算法原理
分数Talbot效应是一种特殊的光场传播现象,在光学领域有着广泛的应用,尤其是在阵列光学涡旋产生方面。分数Talbot效应可以用来生成复杂的光场分布,包括光学涡旋阵列。分数Talbot效应是经典Talbot效应的一个推广,它描述了衍射光场在自由空间中传播时出现周期性重现的现象。分数Talbot效应允许我们精确控制衍射光场在任意距离处的重现。
在经典的Talbot效应中,当平面波通过一个具有周期性结构的光栅时,其衍射光场会在光栅后方特定的距离处形成一系列重复的强度分布图案。这些图案与原始光栅的结构相似。具体而言,若光栅的周期为d,则在距离T=dm2λD处会出现第一个自像,其中m为整数,λ为波长,D为光栅的宽度。
分数Talbot效应则是指在介于两个整数倍Talbot距离之间的任意距离上,光场也会呈现出周期性的结构。这个距离可以用分数Talbot距离zα来表示,即:
利用分数Talbot效应可以有效地生成光学涡旋阵列。假设初始平面波的相位分布为ϕ(r,θ),那么经过分数阶菲涅尔变换后,可以得到特定距离处的光场分布,该分布包含了多个光学涡旋。