【光学】基于拉盖尔-高斯束、部分傅里叶变换和菲涅尔传播实现的光学涡旋场三面相位恢复Matlab仿真
2026/7/1 23:45:23 网站建设 项目流程

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、算法改进、程序设计科研仿真。

🍎 往期回顾关注个人主页:完整代码获取 定制创新 论文复现私信

🍊个人信条:做科研,博学之、审问之、慎思之、明辨之、笃行之,是为:博学慎思,明辨笃行。

🔥 内容介绍

光学涡旋作为一种特殊的光场,具有螺旋状的波前和携带轨道角动量等独特性质,在光通信、光学操控、量子信息等领域展现出巨大的应用潜力。准确恢复光学涡旋场的相位信息对于深入理解其特性和拓展应用至关重要。本文将探讨如何基于拉盖尔 - 高斯束、部分傅里叶变换和菲涅尔传播来实现光学涡旋场的三面相位恢复。

光学涡旋场与拉盖尔 - 高斯束

光学涡旋场特性

光学涡旋场的波前呈现出螺旋状扭曲,其相位分布可表示为 exp(ilφ),其中 l 为拓扑荷数,决定了涡旋的旋转特性,φ 是方位角。这种独特的相位结构使得光学涡旋携带轨道角动量,其大小与拓扑荷数成正比。在光学涡旋的中心位置,光强为零,形成相位奇点。

拉盖尔 - 高斯束

拉盖尔 - 高斯(LG)束是描述光学涡旋场的常用模式。其电场分布在柱坐标系下可表示为:

在光学涡旋场相位恢复中的应用

在光学涡旋场相位恢复中,部分傅里叶变换有助于提取光场的空间频率信息,特别是与涡旋相位结构相关的信息。由于光学涡旋场的螺旋相位结构在空间频率域具有特定的分布特征,通过部分傅里叶变换可以将这些特征凸显出来,为后续的相位恢复提供关键数据。例如,在对含有光学涡旋的光场进行 x 方向的部分傅里叶变换后,涡旋的拓扑荷数等信息会在 kx 方向的频率分布上有所体现,有助于确定涡旋的特性。

菲涅尔传播

菲涅尔传播理论

对光学涡旋场相位恢复的作用

在光学涡旋场相位恢复中,利用菲涅尔传播可以模拟光场在不同距离处的分布。通过测量或计算光场在多个不同距离平面上的强度分布,结合菲涅尔传播公式,可以反推光场的相位信息。由于光学涡旋场在传播过程中,其相位结构会导致光强分布的特定变化,通过分析这些变化并利用菲涅尔传播进行迭代计算,可以逐步恢复出光学涡旋场的相位。

三面相位恢复方法

基本思路

基于拉盖尔 - 高斯束、部分傅里叶变换和菲涅尔传播实现光学涡旋场三面相位恢复的基本思路是:首先,利用拉盖尔 - 高斯束的特性来表征光学涡旋场,确定涡旋的基本参数。然后,通过部分傅里叶变换提取光场在特定方向上的空间频率信息,进一步分析涡旋的相位特征。最后,借助菲涅尔传播,结合在多个不同距离平面上测量或计算得到的光强分布,通过迭代算法恢复光场的相位。

具体实现步骤

  1. 数据采集

    :获取光学涡旋场在多个不同距离平面上的光强分布数据。这些数据可以通过实验测量,如使用电荷耦合器件(CCD)相机记录光强,也可以通过数值模拟得到。

  2. 基于拉盖尔 - 高斯束的初步分析

    :根据拉盖尔 - 高斯束的理论模型,对采集到的光场数据进行初步拟合,确定光学涡旋的拓扑荷数 l、径向模式数 p 等基本参数。这一步可以通过比较光场的强度分布与拉盖尔 - 高斯束的理论强度分布来实现。

  3. 部分傅里叶变换处理

    :对光场数据在特定方向(如 x 方向)进行部分傅里叶变换,得到光场在部分空间 - 频率域的分布。分析该分布中与涡旋相位结构相关的特征,如频率分布的峰值位置、形状等,进一步确认涡旋的特性,并为后续相位恢复提供更多信息。

  4. 基于菲涅尔传播的相位恢复迭代

    :以某一初始相位估计为起点,利用菲涅尔传播公式计算光场在不同距离平面上的复振幅分布,进而得到光强分布。将计算得到的光强分布与实际采集到的光强分布进行比较,通过优化算法(如梯度下降法)调整相位估计,使两者的差异最小化。重复这一迭代过程,直到满足一定的收敛条件,从而恢复出光学涡旋场的相位。

⛳️ 运行结果

📣 部分代码

function [U1, meta] = random_lg_superposition(X, Y, dx, lambda, sup, Lin, Pin)

% RANDOM_LG_SUPERPOSITION Random normalised superposition of LG modes.

%

% [U1, meta] = random_lg_superposition(X, Y, dx, lambda, sup, Lin, Pin)

%

% Inputs

% X, Y : N x N coordinate matrices (from make_grid)

% dx : grid spacing (m)

% lambda : wavelength (m)

% sup : number of LG modes in the superposition

% Lin : 1 x M vector of available azimuthal indices l

% Pin : 1 x M vector of corresponding radial indices p

%

% Outputs

% U1 : N x N normalised complex superposition field

% meta : struct with fields

% .l_indices – chosen azimuthal indices (1 x sup)

% .p_indices – chosen radial indices (1 x sup)

% .coefficients – complex superposition coefficients (1 x sup)

% .shifts – transverse offsets in pixels (1 x 2*sup)

% .w0 – beam waist (m)

N = size(X, 1);

num0 = numel(Lin);

%% Random beam waist (Rayleigh range between 1e-4 and 3e-4 m)

w0 = 1e-4 + 2e-4*rand(1);

zR = pi*w0^2/lambda;

z_beam = 0.001;

w1 = w0*sqrt(1+(z_beam/zR)^2);

R1 = z_beam*(1+(zR/z_beam)^2);

%% Random transverse offsets (up to 1% of N pixels per mode)

shift = floor(0.01*N);

rand_no = floor(1 + (2*shift-1)*rand(1, 2*sup));

%% Randomly pick sup distinct LG modes

available = 1:num0;

Lind = zeros(1, sup);

Pind = zeros(1, sup);

for n = 1:sup

idx = floor(1 + (numel(available)-1)*rand(1));

pick = available(idx);

Lind(n) = Lin(pick);

Pind(n) = Pin(pick);

available(available==pick) = [];

end

%% Generate each LG mode on its offset grid

LaF = zeros(N, N, sup);

for n = 1:sup

Xs = X - rand_no(n)*dx;

Ys = Y - rand_no(n+sup)*dx;

rs = sqrt(Xs.^2 + Ys.^2);

phis = atan2(Ys, Xs);

LaF(:,:,n) = LG_beam(rs, phis, Lind(n), Pind(n), w1, z_beam, zR, R1, lambda);

LaF(:,:,n) = LaF(:,:,n) / sqrt(sum(sum(conj(LaF(:,:,n)).*LaF(:,:,n))));

end

%% Random complex superposition coefficients (unit sphere construction)

rc = rand(1, sup-1)*pi;

rd = exp(1i*rand(1, sup-1)*2*pi);

rd1 = [1, rd];

coeff = ones(sup-1, sup);

for va1 = 1:sup-1

for va2 = 1:sup

if va1==va2, coeff(va1,va2) = cos(rc(va1)); end

if va1< va2, coeff(va1,va2) = sin(rc(va1)); end

end

end

vect = ones(1, sup);

for va2 = 1:sup

for va1 = 1:sup-1

vect(va2) = vect(va2)*coeff(va1,va2);

end

end

vect = vect.*rd1;

%% Form superposition

U1 = zeros(N);

for n = 1:sup

U1 = U1 + LaF(:,:,n)*vect(n);

end

U1 = U1 / sqrt(sum(sum(conj(U1).*U1)));

%% Pack metadata

meta.l_indices = Lind;

meta.p_indices = Pind;

meta.coefficients = vect;

meta.shifts = rand_no;

meta.w0 = w0;

end

🔗 参考文献

[1]柯熙政,石欣雨.高阶径向拉盖尔-高斯光束叠加态的实验研究[J].红外与激光工程, 2018, 47(12):7.DOI:10.3788/IRLA201847.1207002.

🍅更多免费数学建模和仿真教程关注领取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询