高斯光束的聚焦与准直MATLAB程序 根据《激光原理》有关内容,我们可以对高斯光束用透镜进行聚...
高斯光束的聚焦与准直MATLAB程序 根据《激光原理》有关内容我们可以对高斯光束用透镜进行聚焦与准直编写了MATLAB程序、Word报告讲解等如图资料包最近在折腾高斯光束的模拟发现用MATLAB搞透镜变换特别有意思。咱们今天要聊的就是怎么用薄透镜给高斯光束做聚焦和准直手把手教你写能直接跑的代码。先别急着翻《激光原理》看完这篇保你半小时内能自己调参数玩转光斑变化。先来点硬核的——直接上核心代码段。高斯光束经过透镜后的变换关键在q参数这个量包含了光斑尺寸和波前曲率的信息% 透镜变换函数 function q_out lens_transformation(q_in, f) q_out 1/(1/q_in - 1/f); end别看这短短三行它藏着几何光学和波动光学的跨界操作。这里q_in是入射光束的复参数f是透镜焦距。有意思的是当入射光束的腰斑位于透镜前焦点时出射光束会变成准直光束——这个特性咱们后面会实际验证。整套模拟需要三个模块参数设定、透镜变换、传播模拟。先看参数初始化部分lambda 632.8e-9; % 氦氖激光波长 w0 0.5e-3; % 初始腰斑半径 f 50e-3; % 透镜焦距 L 1.0; % 传播距离 % 计算瑞利长度 zR pi * w0^2 / lambda; q0 1i * zR; % 初始q参数腰斑处这里有个新手容易踩的坑量纲统一。波长用米作单位光斑半径也用米否则算出来的瑞利长度会错得离谱。曾经有个哥们把毫米当米输结果模拟出能绕地球三圈的光斑差点以为发现了新物理现象...传播模拟部分我们分两段到透镜前的传播和透镜后的传播。用了个自定义的beam_propagate函数具体实现后面给% 传播到透镜前 z1 0.3; % 到透镜的距离 q1 beam_propagate(q0, z1); % 经过透镜变换 q2 lens_transformation(q1, f); % 继续传播到观察面 z2 L - z1; q_final beam_propagate(q2, z2); % 提取最终光斑半径 w_final beam_radius(q_final, lambda);重点说说这个beam_propagate函数它实现了q参数的ABCD定律function q_out beam_propagate(q_in, distance) q_out q_in distance; end简单到怀疑人生对吧但这就是高斯光束传播的精华所在——在自由空间中传播distance米q参数直接线性相加。这可比解波动方程省事多了不过要注意这仅适用于傍轴近似。高斯光束的聚焦与准直MATLAB程序 根据《激光原理》有关内容我们可以对高斯光束用透镜进行聚焦与准直编写了MATLAB程序、Word报告讲解等如图资料包光斑半径的计算也有讲究function w beam_radius(q, lambda) zR imag(q); w0 sqrt(lambda*zR/pi); z real(q); w w0 * sqrt(1 (z/zR)^2); end这里用到了q参数的实部代表传播距离虚部对应瑞利长度。当我们在准直条件下即q参数的实部远小于虚部光斑尺寸几乎不变这就是准直的核心判断依据。做个实际案例当把初始腰斑放在透镜前焦点时看看输出情况z1 f; % 精确放置在焦点 q1 beam_propagate(q0, z1); q2 lens_transformation(q1, f);此时计算q2会发现其实部趋近于无穷大意味着输出光束的波前曲率近乎平面——完美准直不过现实中要考虑透镜像差但咱们的模型暂时忽略这些。最后来个可视化彩蛋——用contourf画光斑演化[x,y] meshgrid(linspace(-2e-3,2e-3,200)); I exp(-2*(x.^2 y.^2)/w_final^2); contourf(x*1e3, y*1e3, I); xlabel(x (mm)); ylabel(y (mm)); title(聚焦后的光斑强度分布);注意乘以1e3把单位转成毫米不然坐标轴显示会像蚂蚁爬过的痕迹。调色板用默认的就行真要发paper可以换成viridis色系但自己看着爽最重要。整套代码跑下来不到0.5秒却能直观看到高斯光束被透镜拿捏的过程。下次做光学实验前先用这个模拟保准不会被导师问你确定这个位置能准直时心里发虚。完整代码和参数调试技巧在资料包里记得重点看报告中关于像差影响的讨论部分——那才是从理论到实战的关键一跃。