MATLAB实现高斯光束到平顶光束的转变 基于GS算法或者直接计算SLM相位分布。

一、引言

在光学工程、激光技术等领域,光束整形是一项关键技术,其核心目标是将一种光束的振幅、相位分布转换为目标分布,以满足特定应用场景的需求。本文所介绍的代码基于GS(Gerchberg-Saxton)算法与角谱传输理论,实现了从高斯光束到超高斯(平顶)光束的整形功能。该套代码经过多次迭代优化,具备模块化程度高、参数可配置性强、适配多种应用场景等特点,可广泛应用于激光加工、光学成像、光通信等领域。

二、代码整体框架与流程图

(一)整体架构

代码系统采用模块化设计,主要分为三大核心模块:光束生成模块角谱传输模块GS算法迭代优化模块,同时包含参数配置、结果可视化等辅助模块。各模块相互独立且通过接口灵活调用,整体架构如下:

光束整形系统代码架构
├── 参数配置模块:定义波长、距离、尺寸等核心参数
├── 光束生成模块(gussian.m):生成初始高斯光束与目标超高斯光束
├── 角谱传输模块(free_space.m):计算自由空间角谱传输函数
├── GS算法迭代模块(主程序untitled系列.m):核心迭代优化与相位调制
└── 结果可视化模块:输出光束分布、相位图、迭代误差曲线

(二)核心流程流程图

graph TD
    A[参数初始化] --> B[生成初始高斯光束E0与目标超高斯光束E1]
    B --> C[归一化振幅分布:Amplitude0、Amplitude1]
    C --> D[设置初始相位,构建初始复振幅U1=Amplitude0·exp(1i·phase)]
    D --> E[调用角谱传输模块,计算传输函数H0、H1]
    E --> F[开始GS迭代循环]
    F --> G[U1经H0传输至接收面:U2=ifft2(fft2(U1)·H0)]
    G --> H[固定目标振幅,更新相位:U2_new=Amplitude1·(U2/|U2|)]
    H --> I[U2_new经H1逆传输回SLM面:U1_new=ifft2(fft2(U2_new)·H1)]
    I --> J[计算迭代误差RMS,更新初始相位]
    J --> K{迭代次数达到阈值?}
    K -- 否 --> F
    K -- 是 --> L[输出整形后光束、相位图、误差曲线]

三、核心模块详细说明

(一)参数配置模块

所有主程序(untitled.m、untitled2.m等)的起始部分均为参数配置,核心参数及含义如下表所示:

参数名 含义 典型值 说明
lambda 激光波长 1.064e-6 m 需根据实际激光光源调整
L SLM到接收屏的距离 0.5 m / 1 m 决定传输路径长度
a1/a2 初始/目标光束束腰 10e-3 m / 2e-3 m 影响光束尺寸
D 计算区域尺寸 1e-2 m 需覆盖完整光束分布
N 采样点数 1024 影响计算精度与速度,通常取2的幂次
nn 超高斯光束阶数 5 阶数越高,光束平顶特性越明显
itera 迭代次数 120/200/500 平衡整形效果与计算效率
step_size 步长因子 0.2 仅部分版本支持,用于稳定迭代

参数配置的灵活性是本代码的核心优势之一,通过修改上述参数,可适配不同波长的激光、不同距离的传输场景以及不同要求的平顶光束特性。

(二)光束生成模块(gussian.m)

1. 功能描述

该模块负责生成初始高斯光束(E0)和目标超高斯光束(E1),基于极坐标转换实现光束的径向对称分布计算。

2. 核心代码分析
x=linspace(-D/2,D/2-D/N,N);
y=linspace(-D/2,D/2-D/N,N);
[X,Y]=meshgrid(x,y);
[~,r]=cart2pol(X,Y);    % 笛卡尔坐标转极坐标,获取径向距离r
%% 拉盖尔高斯光束公式
E0=exp(-(r.^2./w0^2));  % 初始高斯光束(二次衰减)
E1=exp(-(r.^nn./w1^nn));% 目标超高斯光束(nn阶衰减)
  • 采用linspace生成均匀分布的坐标网格,确保光束分布计算的均匀性;
  • cart2pol函数将笛卡尔坐标转换为极坐标,简化径向对称光束的计算;
  • 高斯光束(E0)遵循二次指数衰减规律,超高斯光束(E1)通过调整阶数nn控制光束平顶区域的平坦度,nn越大,光束边缘越陡峭,平顶特性越显著。
3. 模块特点
  • 支持任意阶数的超高斯光束生成,适配不同平顶精度需求;
  • 坐标计算考虑了采样点间隔,避免边界截断误差;
  • 输出光束振幅分布直接用于后续归一化处理,接口简洁。

(三)角谱传输模块(free_space.m)

1. 功能描述

基于角谱传输理论,计算光束在自由空间中传输的频域传输函数,提供正、逆两个方向的传输函数(H0、H1),为GS算法的迭代过程提供传输模型支持。

2. 核心原理与代码分析

角谱传输函数的核心公式为:

$$H(fx,fy)=\exp\left(\pm i k0 dz \sqrt{1-(\lambda fx)^2-(\lambda f_y)^2}\right)$$

MATLAB实现高斯光束到平顶光束的转变 基于GS算法或者直接计算SLM相位分布。

其中,$fx,fy$为空间频率,$k0=2\pi/\lambda0$为真空中的波数,$dz$为传输距离。

代码实现:

dfx=1/D; dfy=1/D;  % 空间频率间隔
k0=2*pi/wvl0;
fx=(-N/2:N/2-1)*dfx;
fy=(-N/2:N/2-1)*dfy; 
[fx,fy]=meshgrid(fx,fy);
H=exp(-1i*k0*dz*sqrt(1-(wvl*fx).^2-(wvl*fy).^2));
H0=fftshift(H);  % 正传输函数(SLM→接收屏)
H=exp(1i*k0*dz*sqrt(1-(wvl*fx).^2-(wvl*fy).^2));
H1=fftshift(H);  % 逆传输函数(接收屏→SLM)
  • 通过meshgrid生成空间频率网格,覆盖完整的频域范围;
  • fftshift函数调整频域数据的顺序,确保传输函数的正确性;
  • 传输函数分为正、逆两种,分别对应光束从SLM到接收屏和从接收屏到SLM的传输过程,为GS算法的双向迭代提供基础。
3. 模块优势
  • 严格遵循角谱传输理论,传输精度高,适用于中短距离传输场景;
  • 代码简洁高效,无冗余计算,与FFT(快速傅里叶变换)结合,计算速度快;
  • 支持任意传输距离dz和采样点数N,适配不同系统参数。

(四)GS算法迭代优化模块(主程序)

1. 功能描述

GS算法是光束整形的核心,通过在SLM面和接收面之间交替迭代,优化SLM的相位调制函数,使得经过传输后的光束振幅分布逼近目标超高斯光束。主程序包含多个版本(untitled.m、untitled2.m等),适配不同的应用需求。

2. 核心迭代流程(以优化版untitled2.m为例)
for n = 1:itera    % 迭代循环
    % 正传输:SLM面→接收面
    U2=ifft2(fft2(U1).*H0);
    % 固定接收面目标振幅,更新相位
    Phase2 = U2./abs(U2); 
    U2_new=Amplitude1.*Phase2;
    % 逆传输:接收面→SLM面
    U1_new=ifft2(fft2(U2_new).*H1);
    % 计算迭代误差
    g_er = abs(Amplitude0) - abs(U1_new)/max(abs(U1_new(:)));
    RMS_GS(n)=sqrt(mean2((g_er.^2)));
    % 更新SLM面相位与复振幅
    Phase0=U1_new./abs(U1_new);
    U1=(Amplitude0+g_er*step_size).*Phase0;
end
  • 正传输过程:通过FFT将SLM面的复振幅转换到频域,与传输函数H0相乘后,再通过IFFT转换回空域,得到接收面的复振幅U2;
  • 相位更新:固定接收面的目标振幅Amplitude1,保留U2的相位信息,构建新的接收面复振幅U2_new;
  • 逆传输过程:将U2new通过逆传输函数H1传回SLM面,得到更新后的复振幅U1new;
  • 误差计算与优化:通过均方根误差(RMS)评估当前迭代效果,引入步长因子step_size调整更新幅度,避免迭代震荡,提升收敛稳定性。
3. 不同版本主程序对比
程序版本 核心差异 适用场景 优势
untitled.m 未使用角谱传输函数,直接FFT传输 短距离近似传输场景 计算速度快,代码简洁
untitled2.m(基础版) 使用角谱传输函数,迭代次数200/500 高精度光束整形需求 传输精度高,整形效果好
untitled2.m(优化版,平顶光束文件夹) 增加步长因子、误差计算与可视化 需监控迭代过程与误差收敛 稳定性强,结果可追溯

(五)结果可视化模块

所有主程序均包含结果可视化功能,输出关键数据与图像,便于用户评估整形效果:

  1. 光束分布可视化:通过meshimagesc函数输出整形后的光束振幅分布(如平顶光束的三维形貌);
  2. 相位图可视化:展示SLM所需加载的相位调制分布,为实际光学系统搭建提供依据;
  3. 迭代误差可视化:通过plot函数绘制RMS误差随迭代次数的变化曲线,直观反映算法收敛速度与整形精度。

四、代码优势分析

(一)模块化设计,可扩展性强

各功能模块独立封装(如光束生成、角谱传输),模块间通过清晰的接口交互。用户可根据需求替换模块,例如将“高斯光束生成”替换为“平顶光束生成”,或新增“相位调制约束模块”,无需修改核心迭代逻辑。

(二)参数配置灵活,适配多种场景

核心参数(波长、传输距离、光束尺寸、迭代次数等)均支持用户自定义,可适配不同波长的激光(如1064nm、532nm)、不同传输距离(如0.5m、1m)以及不同阶数的超高斯光束(如3阶、5阶、7阶)。

(三)迭代算法稳定,整形精度高

优化版主程序引入步长因子step_size,有效避免迭代过程中的震荡问题;同时通过RMS误差实时监控收敛情况,确保最终光束振幅分布与目标分布的偏差最小。

(四)计算效率高,支持大规模采样

采用FFT/IFFT进行频域与空域的转换,相较于时域传输计算,计算复杂度从$O(N^3)$降低至$O(N^2\log N)$,支持1024×1024等大规模采样点数的计算,兼顾精度与速度。

(五)结果可视化丰富,便于调试与评估

提供光束分布、相位图、误差曲线等多维度可视化结果,用户可快速判断整形效果是否满足需求,同时便于调试参数(如迭代次数、步长因子)。

五、注意事项

(一)参数配置合理性

  1. 采样点数N建议取2的幂次(如512、1024、2048),以提高FFT/IFFT的计算效率;
  2. 计算区域尺寸D需大于光束的实际尺寸,避免光束被截断,影响整形效果;
  3. 迭代次数itera需根据实际情况调整:迭代次数过少,整形精度不足;迭代次数过多,计算耗时增加且收敛效果提升有限(通常100-500次为宜);
  4. 步长因子step_size建议取值范围为0.1-0.5,过大易导致迭代震荡,过小则收敛速度过慢。

(二)物理模型适用性

角谱传输理论适用于中短距离传输场景,若传输距离L远大于光束尺寸,建议采用菲涅尔近似或远场近似模型,需修改free_space.m中的传输函数公式。

(三)数值计算精度

  1. 波长lambda、束腰a1/a2等参数的单位需统一(建议均采用米),避免单位不一致导致计算错误;
  2. 初始相位的设置需合理,建议采用随机相位(2pirand(N,N))或零相位(2pizeros(N,N)),避免初始相位分布不合理导致迭代不收敛。

(四)硬件适配问题

SLM(空间光调制器)的相位调制范围需与代码输出的相位图匹配(通常SLM的相位调制范围为0-2π),若相位超出该范围,需在代码中增加相位归一化处理。

六、使用说明

(一)环境准备

运行环境:MATLAB R2018b及以上版本(需支持FFT、mesh、imagesc等基础函数),无需额外安装工具箱。

(二)文件组织结构

代码文件结构
├── free_space.m  % 角谱传输模块
├── gussian.m     % 光束生成模块
├── untitled2.m   % 主程序(优化版,推荐使用)
└── 其他版本主程序(可选)

使用时需确保所有文件在同一目录下,避免路径错误。

(三)操作步骤

  1. 打开MATLAB,切换至代码所在目录;
  2. 编辑主程序(如untitled2.m)中的参数配置部分,根据实际需求修改lambdaLa1a2itera等参数;
  3. 运行主程序,等待迭代完成;
  4. 查看输出的可视化结果:
    - 图1:整形后的光束振幅分布(如平顶光束的三维形貌);
    - 图2:SLM所需加载的相位调制分布;
    - 图3:迭代误差曲线,若误差趋于稳定,说明整形效果收敛。

(四)示例配置与结果

1. 示例参数
lambda=1.064e-6;  % 1064nm激光
L=1;              % 传输距离1m
a1=2e-3;          % 初始高斯束腰2mm
a2=5e-3;          % 目标超高斯束腰5mm
D=1e-2;           % 计算区域10mm×10mm
N=1024;           % 1024×1024采样点
nn=5;             % 5阶超高斯光束
itera=120;        % 120次迭代
step_size=0.2;    % 步长因子0.2
2. 预期结果
  • 图1:生成的光束呈现明显的平顶特性,中心区域振幅均匀,边缘陡峭;
  • 图2:相位图呈现周期性分布,为SLM的相位加载提供直接依据;
  • 图3:迭代误差曲线随迭代次数增加逐渐下降并趋于稳定,最终RMS误差小于0.05。

七、总结

本套代码基于GS算法与角谱传输理论,实现了高效、高精度的光束整形功能,核心优势在于模块化设计、参数灵活配置、迭代稳定收敛以及丰富的结果可视化。通过调整相关参数,可适配不同的激光光源、传输场景和目标光束需求,适用于科研实验与工程应用。使用时需注意参数配置的合理性、物理模型的适用性以及硬件的适配问题,以确保整形效果满足预期。

未来可进一步优化的方向:

  1. 新增相位调制约束(如平滑约束、带宽约束),提升相位图的可实现性;
  2. 引入并行计算,提高大规模采样点数下的计算效率;
  3. 支持更多类型的初始光束与目标光束(如拉盖尔-高斯光束、贝塞尔光束)。
Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐