完美涡旋光束及其代码实现

一、完美涡旋光束

1、完美涡旋光束概念

传统方法产生的涡旋光其光束半径会随拓扑荷数的增加而增加。为了满足涡旋光在传输、耦合时光束半径不宜过大的条件,迫切需要研究一种光束半径与拓扑荷数无关的涡旋光束。

美涡旋光场具有光束横截面半径不随拓扑荷值改变而改变的优点,在量子物理、量子操控、光学超分辨成像及量子通信等领域具有深远影响和重要地位。

目前,最常用的完美涡旋产生方法是利用锥透镜产生完美涡旋光场。2014年,Ostrovsky等人在此之前的研究基础上,利用了Bessel函数截断法,提出了一种既可以保证高质量又简化实验装置的实验方法。

2、完美涡旋光束原理

产生完美涡旋光是基本原理如下。贝塞尔-高斯光束是由贝塞尔方程和高斯光束组合而来,贝塞尔高斯光束在束腰半径处的光强表达式可写为:

式中r和\phi分别表示两个极坐标,J_{l}表示l阶贝塞尔函数的第一类函数,k_{r}表示光束的径向波矢量,l表示光束界面一周内相位变化2\pi的次数。对上式进行傅里叶变换可得:

式中w_{z}表示光斑圆环的宽度,r_{r}表示完美涡旋光的半径。在近似条件下,r_{r}的大小可由r_{r}=\lambda*f/d来表示。

要实现以上傅里叶变换,在光学中可以通过一个傅里叶变化透镜来实现。

从以上的分析中可以看出,完美涡旋光的半径是由光波长、透镜焦距和锥透镜参数决定的,与涡旋光的拓扑荷数没有关系,其半径也可以通过相应参数来调控。

二、matlab实现

1、源代码

clc
clear all;

% Definitions
Nx = 1280; % # of pixels in x-dimension of Cambridge SLM
Ny = 1024;  % # of pixels in y-dimension of Cambridge SLM

C = ones(Ny,Nx);  %初始化

w0 = 100;  % Gaussian beam wist
w = 25;  % width of the annular ring
lamda = 633*10^-6; % wavelength
f = 10^5; %focal length
d = 0.45; % axicon parameter
l=30; % Topological charge 
A0 = 1; % Amplitude coefficient
nx = 200;
s = nx/Nx; % This parameter defines the fringe density.
phaseblaze = true;
imName='SLMpat'; % This is the name of the file that has the pattern
inName='SLMpatin';
s2s=num2str(s);

for x=1:Nx
    for y=1:Ny
        x0 = Nx/2; % coordinates of the center of the image
        y0 = Ny/2;
        xr=x-x0;
        yr=y-y0;
        r=sqrt(xr^2+yr^2); % radial coordinate
        theta=atan2(yr,xr);% + n*(pi/9) ;  % angular coordinate 可调相位角
  
        g1(y,x) = A0*(1i^(l-1))*(w0/w)*exp(1i*d*r+1i*l*theta)*exp(-(r-(lamda*f/d))^2/w^2);
        g2(y,x) = A0*(1i^(l-1))*(w0/w)*exp(1i*d*r+1i*-l*theta)*exp(-(r-(lamda*f/d))^2/w^2);
        g(y,x) = g1(y,x);%+ g2(y,x);
        
            Pg1 = g(y,x);
            % 添加闪耀光栅
            Pg2 = angle(Pg1) + 2*pi*s*xr;
            if phaseblaze % Phase blaze
                pgf = mod(Pg2,2*pi)/(2*pi); %phase mod 2 pi in units of 2pi
            else % to do binary grating
                pgf = mod(Pg2,2*pi)/(2*pi); %phase mod 2 pi in units of 2pi
                if pgf >=0.5
                    pgf=0;
                else
                    pgf=1;
                end
            end
            
         C(y,x) = pgf*118/225;                                  
    end
end

intensity=abs(g);
figure();imshow(intensity,[],'border','tight');  colormap winter;

phase=angle(g);
figure();imshow(phase,[],'border','tight');   %colormap jet;

2、运行效果

拓扑荷数为30的完美涡旋光。

光强

相位

### 使用Matlab生成完美涡旋光束 为了生成完美涡旋光束,可以基于已有的理论模型和算法来编写Matlab代码。下面是一个具体的例子,该代码展示了如何创建一个具有特定参数的完美涡旋光束。 #### 参数定义 首先设定一些基本参数,比如波长`lambda`、腰斑半径`w0`以及拓扑荷数`l`等: ```matlab % 物理常量设置 lambda = 632.8e-9; % 波长 (m),这里取氦氖激光器的标准值 k = 2*pi / lambda; % 波矢量大小 w0 = 1e-3; % 腰斑半径 (m) % 涡旋特性参数 p = 0; % 径向指数 p=0 表示基模 l = 1; % 拓扑荷数 l=1 对应于单圈螺旋相位因子 ``` #### 计算瑞利长度和其他辅助变量 接着计算瑞利长度以及其他用于描述光强分布所需的中间变量: ```matlab zR = pi * w0^2 / lambda; % 瑞利长度 z_R [x, y] = meshgrid(linspace(-5*w0, 5*w0, 500)); % 创建空间网格 r = sqrt(x.^2 + y.^2); % 极坐标下的 r 值 theta = atan2(y,x); % 极角 θ ``` #### 构造广义拉盖尔多项式并形成最终表达式 利用上述准备好的数据构造出广义拉盖尔多项式的具体形式,并据此构建完整的电场强度表达式E(r): ```matlab L = laguerreL(p, abs(l), 2*r.^2/w0^2); % 广义拉盖尔多项式 L_p^|l|(ξ) E = (sqrt(2)*r./w0).^abs(l) .* L .* exp(-r.^2/w0^2) .* exp(1i*l*theta); % LG模式电场 E(r) I = abs(E).^2; % 光强 |E|^2 ``` #### 可视化结果 最后一步是对得到的结果进行可视化处理,以便直观观察到所生成的完美涡旋光束形态: ```matlab figure; imagesc(x*1e3, y*1e3, I); axis image; xlabel('x (mm)'); ylabel('y (mm)'); title(['Perfect Vortex Beam Intensity Distribution with Topological Charge ', num2str(l)]); colormap jet; colorbar; ``` 以上就是使用Matlab实现完美涡旋光束的一个简单实例[^3]。此程序能够模拟不同条件下理想化的涡旋光束,并展示其二维平面上的能量密度分布情况。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

NeverComplacent

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值