高斯光束Matlab仿真:从参数设计到可视化的完整实践指南
简介面向激光原理课程学习者与Matlab初学者的实验仿真文档围绕高斯光束在谐振腔中的归一化强度分布及传播特性展开。文档先建立高斯光束数学模型随后演示用imread读取CCD采集的实际光斑照片提取光斑直径方向强度数据绘制二维分布并与理论高斯曲线对比同时通过mesh命令生成三维强度分布图并对白边干扰给出处理建议。后续还提供完整M文件仿真高斯光束在不同传播距离下光斑尺寸与峰值强度的变化将数值结果与理论公式对照帮助理解瑞利长度、束腰等核心概念。资源仅含1个docx文件压缩包大小432KB内容紧凑适合课程作业、实验报告或期末复习参考已有461人学习。1. 高斯光束的matlab仿真从表达式到可视化的最短路径做激光光学、超表面设计或自由空间光通信时最常碰到的第一个仿真对象就是高斯光束。很多人一开始直接套菲涅尔衍射积分写上两层循环跑出来却是一堆噪点换一个网格尺寸结果又不一样。问题往往不在衍射算法本身而在于没把波长、束腰和采样间隔这几个基本参数理清楚。高斯光束的matlab仿真绝大多数场景用解析表达式就能覆盖需要的只是复振幅、传播距离和可视化三板斧。这篇文章按“数学建模→传播计算→画图→结果自检”的顺序给出一套可直接复用的代码和参数表适合刚接触光束仿真的学生也适合做系统联调时确认透镜前光场分布的工程师。2. 高斯光束的数学表达与matlab仿真参数设计2.1 为什么先定波长、束腰和传播距离高斯光束不是普通平面波它的横截面强度按高斯函数分布在束腰处最细向前向后逐渐扩展。仿真之前必须先确定三个物理量波长、束腰半径 w0 和传播距离 z。这三个值共同决定瑞利距离而瑞利距离又决定了你观察的是近场还是远场也决定了网格尺寸和采样点数怎么选。我一般先把波长定下来可见光常取 632.8nm红外通信大多取 1550nm因为短波长的瑞利距离更长同样的束腰可以传播得更远而不明显发散。接着设束腰半径最后按瑞利距离的倍数选传播距离。这样后面用解析公式对比时每个位置的光斑尺寸、相位曲率都有理论值可查仿真结果出了问题也能快速定位是公式写错还是采样不够。2.2 复振幅场怎么在matlab里构建常见做法是直接使用基模高斯光束的解析解不写衍射积分。设光沿 z 轴传播束腰位于 z0则任意位置 (x,y,z) 的复振幅为lambda 632.8e-9; % 波长单位米 w0 0.5e-3; % 束腰半径单位米 z 0.2; % 传播距离单位米 L 5e-3; % 仿真区域边长单位米 N 512; % 网格点数取2的整数次幂 x linspace(-L/2, L/2, N); y x; [X, Y] meshgrid(x, y); r2 X.^2 Y.^2; zR pi * w0^2 / lambda; % 瑞利距离 wz w0 * sqrt(1 (z / zR)^2); % z处的束宽 Rz z * (1 (zR / z)^2); % 等相位面曲率半径 k 2 * pi / lambda; E (w0 / wz) .* exp(-r2 / wz^2) ... .* exp(-1i * (k * z - atan(z / zR) k * r2 / (2 * Rz)));逻辑说明第一项(w0/wz)是中心振幅衰减系数随传播距离增大逐渐变小第二个指数项控制横向强度包络半径等于 wz 的时候振幅降到中心值的exp(-1)光强对应降到exp(-2)第三个指数项是相位信息包含平面波传播相位k*z、古伊相位-atan(z/zR)和横向波前弯曲项k*r2/(2*Rz)。这里相位符号用的是工程惯例计算angle(E)时看到的跳变不影响强度仿真。参数说明lambda越小则zR越大高斯光束准直距离越长w0越小则发散越厉害z0.2m处束宽变化就越明显L要至少覆盖最远传播距离处束宽的 4 到 5 倍否则能量被截断N决定了相位分辨率一般取 512 或 1024N 太小会导致提取束宽时出现量化误差。2.3 仿真参数表与常见设错点下面这张参数表是我每次开始仿真前都会过一遍的检查清单参数符号单位推荐起点对结果的影响波长lambdam632.8e-9决定瑞利距离和远场发散角束腰半径w0m0.5e-3束腰越小发散越快光斑变化越明显传播距离zm0.2控制光斑尺寸和相位弯曲程度仿真区域边长Lm5 * wz太小会截断光场能量明显损耗网格点数N1512限制最小分辨率和计算速度网格间距dxmL / N需要小于 0.1 * w0否则束腰细节丢失常见错误是直接把 L 设成入射面的大小而忘了在传播后光斑会扩展到原来的几倍。另一个坑是Rz在 z 很小时接近无穷此时横向相位项趋于 0如果直接用Rz z*(1(zR/z)^2)会得到很大的数matlab 里数值上没问题但如果你对 z0 做仿真就需要单独处理这一项。最稳妥的办法是在 z 接近 0 时直接用平面波前的表达式将k*r2/(2*Rz)置为 0。3. 用matlab仿真高斯光束传播与发散角的两种算法3.1 解析束宽公式怎么算高斯光束在自由空间里的发散遵循一条双曲线。远场条件下半发散角可以写成zR pi * w0^2 / lambda; theta lambda / (pi * w0); % 半发散角弧度 fprintf(瑞利距离: %.2f m\n, zR); fprintf(半发散角: %.4f mrad\n, theta * 1e3);逻辑说明theta是远场半夹角等于波长除以 π 和束腰的乘积。这意味着束腰压得越细发散角就越大。比如 w00.5mm、波长 632.8nm 时theta 约为 0.403mrad如果 w0 缩小到 0.1mm发散角会增加到 2.015mrad。激光测距和自由空间光通信里发射端总是先用望远镜把光束扩束目的就是增大 w0 以减少发散角。这个公式的价值在于它能快速估算任意传播距离上的光斑半径当 z 远大于 zR 时wz 近似等于 theta 乘以 z。我经常先算 zR如果整个仿真路径长度不到 zR 的十分之一就可以近似当作准直光处理否则必须保留完整的传播相位。3.2 扫描传播距离并对比仿真束宽实际的matlab仿真需要验证数值结果是否与理论一致。常见做法是扫描一组 z 值在每个位置计算光场然后从强度分布中提取 1/e^2 半径和理论束宽对比zList linspace(0.05, 2, 20); centerIdx round(N / 2); wSim zeros(size(zList)); for ii 1:numel(zList) zz zList(ii); wzPred_ii w0 * sqrt(1 (zz / zR)^2); E_ii (w0 / wzPred_ii) .* exp(-r2 / wzPred_ii^2); I abs(E_ii).^2; profile I(centerIdx, centerIdx:end); % 沿中心行的右半剖面 peak max(I(:)); idx find(profile peak * exp(-2), 1, first); if isempty(idx) wSim(ii) NaN; else wSim(ii) abs(x(centerIdx idx - 1)); end end figure; plot(zList, w0 * sqrt(1 (zList / zR).^2) * 1e3, r-, LineWidth, 1.5); hold on; plot(zList, wSim * 1e3, b--o); xlabel(传播距离 z (m)); ylabel(束宽 w(z) (mm)); legend(理论值, 仿真提取值); grid on;逻辑说明代码先计算理论束宽wzPred_ii用其来构建仅包含振幅项的光场再取中心横截面的强度剖面。根据高斯分布性质强度从峰值下降到peak*exp(-2)处对应半径就是束宽。profile(centerIdx:end)从中心开始取右半段找到第一个低于阈值的点其 x 坐标即是仿真束宽。参数说明zList的起点不要取 0因为 z0 时束腰处光斑极小提取过程容易受网格分辨率限制zList的终点按实际系统距离取我通常取到 5 到 10 倍瑞利距离。如果最终绘制出的仿真曲线明显偏离红色理论曲线优先检查仿真区域L是否足够大以及N是否小到无法分辨束腰尺寸。3.3 瑞利距离到底什么时候用瑞利距离不只是理论概念它也直接影响仿真参数选择。当 z 远小于 zR 时光斑半径变化很小可以把网格尺寸缩小用更多点数观察近场细节当 z 接近或超过 zR 时光斑迅速扩大网格边长L必须按目标距离处的 wz 重新缩放否则提取出的束宽会被人为截断。拿 2.1 节的参数举例lambda632.8e-9、w00.5e-3 时zR 约等于 1.24m。那么 z0.2m 仍属于近场到过渡区束宽只增加了 1.3% 左右而 z2m 时束宽已经接近 0.95mm比束腰大了近一倍。设计仿真区域时我会直接设 L 为最大传播距离处束宽的 6 倍保证能量占比超过 99%。4. 高斯光束的matlab可视化强度、相位和三维轮廓4.1 强度图与相位图的实际画法看仿真结果先看强度和相位但很多人一上来就画imagesc(abs(E))这会把强度动态范围压缩掉边缘看起来不干净。正确画法是用场强的平方figure; imagesc(x * 1e3, y * 1e3, abs(E).^2); axis image; colormap(parula); colorbar; xlabel(x (mm)); ylabel(y (mm)); title(高斯光束强度分布); set(gca, YDir, normal);逻辑说明abs(E).^2才对应光强axis image保证 x 轴和 y 轴的物理比例一致YDir设成 normal 是因为 imagesc 默认 y 轴向下但在光学空间坐标系里 y 轴向上更符合直觉。相位图不能直接用pcolor(angle(E))因为 angle 返回的是 -π 到 π 的包裹相位横向相位从中心向外单调变化时会突然出现一条红色到蓝色的跳变线。如果想看波前形状我一般画沿 x 轴的相位剖面figure; plot(x * 1e3, angle(E(centerIdx, :)), b-); xlabel(x (mm)); ylabel(相位 (rad)); title(沿x轴的相位剖面); grid on;参数说明centerIdx是 y 方向中心点索引。如果相位剖面出现很多密集跳变说明网格太粗需要增大 N 或者减小 L。对于基模高斯光束相位剖面应该是一个平滑的抛物线叠加常数传播相位残余的 2π 跳变不影响后续计算。4.2 三维光束轮廓怎么画不卡死三维 surf 图适合展示高斯光束的柱状轮廓但 N512 时直接surf(X, Y, I)会有 26 万个网格点旋转起来非常卡。我一般先对场做下采样只画每第 4 个点再用shading interp平滑step 4; figure; surf(X(1:step:end, 1:step:end) * 1e3, ... Y(1:step:end, 1:step:end) * 1e3, ... abs(E(1:step:end, 1:step:end)).^2, ... EdgeColor, none); shading interp; axis tight; xlabel(x (mm)); ylabel(y (mm)); zlabel(强度 (a.u.));逻辑说明下采样后的网格点数减少到原来的十六分之一但轮廓形状保留。EdgeColor置为 none 后颜色信息由colormap决定渲染速度明显提升。这个画法适合做演示图但你要从图上读峰值位置仍应回到原始数组里取。4.3 高阶模和涡旋光束的叠加技巧有些仿真需要生成更接近真实激光器的模式比如 TEM01 模或携带轨道角动量的涡旋光束。最容易犯的错是把不同模式的场直接相加然后忘了把每个模式自己的相位项包含进去。我习惯先写一个生成基模的函数再做叠加可视化目标推荐函数注意事项二维强度分布imagesc用abs(E).^2不用abs(E)二维相位分布pcolor / imagesc注意 2π 跳变必要时用 unwrap三维轮廓surf shading interp下采样 step 取 4 或 8截面曲线plot以峰值归一化后对比理论高斯生成涡旋光束的示例phi atan2(Y, X); l 1; E_vortex (w0 / wz) .* exp(-r2 / wz^2) ... .* exp(1i * l * phi) ... .* exp(-1i * (k * z - atan(z / zR)));逻辑说明在基模复振幅上乘以exp(1i*l*phi)其中phi是极角。这个相位项会让光束中心出现暗核暗核半径随 l 增大而增大。叠加多个轨道角动量模式时需要注意不同模式使用同一个X、Y网格否则会出现明显的干涉条纹。5. 验证高斯光束仿真结果的3个检查5.1 能量守恒检查自由空间传播不吸收能量所以总功率应当是常数。利用网格积分可以快速定位截断问题dx L / N; powerInit sum(abs(E0).^2, all) * dx^2; powerEnd sum(abs(E).^2, all) * dx^2; fprintf(能量变化: %.2f%%\n, (powerEnd / powerInit - 1) * 100);如果能量变化超过 1%优先把L放大一倍再试。对于解析表达式建模能量守恒核对的主要是网格范围是否覆盖到了远场扩散后的旁瓣。5.2 束宽与解析解对比在几个关键传播距离处分别提取仿真束宽和理论束宽误差应该在 5% 以内。仿真束宽的提取方法与 3.2 节一致理论束宽用w0*sqrt(1(z/zR)^2)计算。误差偏大时看两个方向一是L/N是否小于 0.1 倍的束腰二是中心剖面提取时是否因为网格不对称造成阈值位置偏移。5.3 相位趋势检查高斯光束传播时积累古伊相位从束腰到无穷远总共偏移 π。取轴上点的相位并 unwrap应该得到一条平滑曲线zProbe linspace(0.02, 2, 100); phaseProbe zeros(size(zProbe)); for ii 1:numel(zProbe) phaseProbe(ii) - (2 * pi / lambda * zProbe(ii) - atan(zProbe(ii) / zR)); end figure; plot(zProbe, unwrap(phaseProbe)); xlabel(传播距离 z (m)); ylabel(轴上相位 (rad)); grid on;曲线如果出现明显拐折说明 z0 处网格没有对准束腰中心或者采样间距过大导致相位折叠后无法还原。这三个检查做完仿真结果就可以放心往下游的光学系统里传了。本文还有配套的精品资源点击获取

相关新闻

鼠标指针自定义指南:从光标文件原理到换装与制作全攻略

鼠标指针自定义指南:从光标文件原理到换装与制作全攻略

前阵子有朋友问我,有没有那种“改变鼠标指针和光标的网站”,他想把Windows里千篇一律的白色小箭头换掉。这一下勾起了我早几年折腾桌面的回忆——那时候逛光标站、下载一套套动态光标、再挨个替换系统指针,几乎是每个喜欢折腾电脑的人都会干的…

2026/9/20 2:00:37 阅读更多 →
彻底删除Edge浏览器账户和Windows邮箱账户的完整指南

彻底删除Edge浏览器账户和Windows邮箱账户的完整指南

上个月帮一个朋友处理二手电脑,他跟我说已经把Edge里登录的账户“退出”了,邮箱也删了,结果买家拿回去打开浏览器,头像还在、邮箱地址还挂在账户菜单里,甚至Word打开还弹出他名字的授权信息。他一头雾水,问…

2026/9/20 2:00:37 阅读更多 →
飞机燃油系统仿真:Flowmaster一维CFD稳态与瞬态分析实战

飞机燃油系统仿真:Flowmaster一维CFD稳态与瞬态分析实战

简介:这份PDF白皮书聚焦Flowmaster在飞机燃油系统仿真中的基础应用,面向航空燃油系统设计人员、热流体仿真工程师及航空院校相关专业学习者,帮助读者理解如何用一维CFD工具在系统级别评估压力、温度与流量等关键性能。内容以典型客机燃油系统…

2026/9/20 1:59:36 阅读更多 →

最新新闻

光盘数据纠错全解:从CRC到RS码的工程实现

光盘数据纠错全解:从CRC到RS码的工程实现

简介:RS编码和纠错算法是数据存储与传输中保证完整性、准确性的核心技术。这份PPT教案正是围绕该主题整理的专业教学资料,服务对象为计算机科学、通信工程及相关专业的师生和技术人员。教案系统梳理了CRC错误检测原理、GF(2m)域基础、RS编码与解码算法、…

2026/9/20 2:42:02 阅读更多 →
Claudian:把 Claude Code 搬进 Obsidian 侧边栏,5 分钟让 AI 直接读写你的整个笔记库

Claudian:把 Claude Code 搬进 Obsidian 侧边栏,5 分钟让 AI 直接读写你的整个笔记库

Claudian:把 Claude Code 搬进 Obsidian 侧边栏,5 分钟让 AI 直接读写你的整个笔记库 【免费下载链接】claudian An Obsidian plugin that embeds Claude Code/Codex as an AI collaborator in your vault 项目地址: https://gitcode.com/GitHub_Trend…

2026/9/20 2:42:02 阅读更多 →
PyTorch Lightning 1.8 升级 2.0 迁移指南(Regular User 篇):API 变更与替换方案全解析

PyTorch Lightning 1.8 升级 2.0 迁移指南(Regular User 篇):API 变更与替换方案全解析

人工智能深度学习机器学习预训练分布式训练微调 【免费下载链接】pytorch-lightning Pretrain, finetune ANY AI model of ANY size on 1 or 10,000 GPUs with zero code changes. 项目地址: https://gitcode.com/gh_mirrors/py/pytorch-lightning 点击查看 免费下载…

2026/9/20 2:42:02 阅读更多 →
Qt5.14.2 aarch64静态交叉编译实战:从环境搭建到部署避坑

Qt5.14.2 aarch64静态交叉编译实战:从环境搭建到部署避坑

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/20 2:42:02 阅读更多 →
MAX30102不是血氧传感器,而是PPG光学采集平台

MAX30102不是血氧传感器,而是PPG光学采集平台

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/20 2:42:02 阅读更多 →
互联网+大赛4页计划书范例:限页写作与Word排版全攻略

互联网+大赛4页计划书范例:限页写作与Word排版全攻略

简介:这是一份互联网大学生创新创业大赛项目计划书范例,面向准备参赛的高校学生团队,可作为撰写计划书的参考蓝本。其原型项目聚焦服装搭配APP,围绕网上购衣难以预览效果、搭配知识不足等痛点,完整呈现项目概述、产品技…

2026/9/20 2:41:01 阅读更多 →

日新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/20 0:00:46 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/20 0:00:46 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/20 0:00:46 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/20 0:00:46 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/20 0:00:46 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/20 0:00:46 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/19 23:01:36 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/19 17:50:38 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/19 23:35:34 阅读更多 →