MATLAB代码之光场调控非线性光学仿真——实现傅立叶算法解析非线性薛定谔方程的研究者宝典
Matlab光场调控的仿真代码(全套复现论文) 之前本科搞大创发了篇文章,纯搞光场调控的仿真,后来读研不做这个方向了,寻思卖了 Tips:本科生毕设,研究生搞理论的,领域为非线性光学的、光场调控做仿真的,这部分代码可能真的会帮到你一些呢,哈哈 这部分matlab代码写出了分布傅立叶算法(用来解非线性薛定谔方程)的数值求解过程,光场函数你买了可以随便你调,不难理解
一、代码体系总览
本套Matlab代码是针对“分数阶效应下饱和非线性介质中艾里高斯光束传输与交互”研究的完整仿真实现,共包含15个功能文件,对应《基于分数阶效应的饱和非线性介质中艾里高斯光束的传输与交互》论文的核心仿真需求。代码以分步傅里叶法为数值核心,围绕单光束传输演化、双光束交互特性、关键参数敏感性分析三大研究方向,构建了模块化、可复用的仿真体系,能够输出符合学术规范的可视化结果,直接支撑论文图表生成与物理规律验证。
Matlab光场调控的仿真代码(全套复现论文) 之前本科搞大创发了篇文章,纯搞光场调控的仿真,后来读研不做这个方向了,寻思卖了 Tips:本科生毕设,研究生搞理论的,领域为非线性光学的、光场调控做仿真的,这部分代码可能真的会帮到你一些呢,哈哈 这部分matlab代码写出了分布傅立叶算法(用来解非线性薛定谔方程)的数值求解过程,光场函数你买了可以随便你调,不难理解
代码整体遵循“参数配置-光场计算-演化仿真-结果可视化”的逻辑流程,各文件既可独立运行输出特定场景结果,又可通过统一的核心函数(evolution1)实现参数复用,兼顾了研究的针对性与代码的灵活性。
二、核心理论与数值方法
(一)物理模型基础
1. 艾里高斯光束初始场
代码中定义的艾里高斯光束初始光场是研究的核心对象,其表达式为:
% 单光束初始场(以fig1.m中evolution1函数为例) u = u0*airy(x).*exp(a*x).*exp(-g*x.^2).*exp(i*v*x);- airy(x):艾里函数,决定光束的非衍射特性,是艾里光束的核心组成部分;
- u0:振幅因子,控制初始光场的强度量级,默认取值为3;
- exp(a*x):指数衰减项,抑制艾里光束的旁瓣发散,
a为衰减系数(默认0.2,可调范围0.01~0.99); - exp(-g*x²):高斯调制项,通过
g(高斯参数,默认0.01,可调范围0.001~1)控制光束的局域化程度; - exp(ivx):相位调制项,
v为相位因子(默认0),可引入初始相位偏移。
2. 双光束初始场(交互研究)
针对双光束交互场景,初始场扩展为两束艾里高斯光束的叠加,支持同相位/反相位配置:
% 双光束初始场(以fig5.m中evolution1函数为例) u = u0*(airy(x-d).*exp(a*(x-d)).*exp(-g*(x-d).^2).*exp(i*v*(x-d))+... exp(i*Q*pi).*airy(-x-d).*exp(-a*(x+d)).*exp(-g*(x+d).^2).*exp(-i*v*(x+d)));新增关键参数:
- d:双光束初始间隔(可调范围-6~6),控制两光束的横向距离;
- Q:相位差控制参数(Q=0为同相位,Q=1为反相位),决定两光束的交互模式(吸引/排斥)。
3. 核心物理效应
- 分数阶效应:通过Lévy指数
alpha(可调范围1~2)描述,影响光束的色散特性,alpha=2对应传统整数阶色散,alpha<2体现分数阶色散的非对称扩散特性; - 饱和非线性效应:通过非线性强度参数
beta(可调范围-5~5)描述,beta>0为自聚焦效应(光束收缩),beta<0为自散焦效应(光束发散),其饱和特性通过abs(Fai).^2./(1+abs(Fai).^2)实现,避免强度无限增长。
(二)核心数值方法:分步傅里叶法
光束在介质中的传输遵循分数阶非线性薛定谔方程,代码采用分步傅里叶法(SSFM)求解该方程,将传输过程拆解为“线性传输”与“非线性作用”两步,具体流程如下:
- 线性传输(频域):对当前光场
Uin做傅里叶变换(fft)得到Fu,施加分数阶色散相位因子:matlab
Fu = exp(-i/2dz/2.(w.w).^(alpha/2)).Fu;
其中w为角频率(由空间坐标x的采样间隔计算),dz为传输步长(默认0.1),实现分数阶效应下的线性演化; - 非线性作用(空域):将频域演化后的光场逆傅里叶变换(
ifft)回空域得到Fai,施加饱和非线性相位因子:matlab
Fai = exp(betaidzabs(Fai).^2./(1+abs(Fai).^2)).Fai;
模拟饱和非线性介质对光场的调制作用; - 二次线性传输(频域):再次对
Fai做傅里叶变换,施加剩余线性相位因子,逆变换后得到新的光场Uin,完成一个步长的传输。
该方法通过“频域-空域-频域”的交替计算,高效且准确地捕捉光场在分数阶与饱和非线性耦合作用下的演化规律,是非线性光学数值仿真的经典方法。
三、文件结构与功能详解
按研究目标与功能定位,可将15个文件分为核心辅助函数、单光束传输仿真、双光束交互仿真、参数敏感性分析四大类,具体功能如下:
(一)核心辅助函数
- H.m
-功能:生成特定余弦级数组合,辅助验证光场初始分布的数学特性;
-实现逻辑:输入级数项数N,在x∈[-2π,2π]范围内生成Y=sum(cos(i*x))(i取1到N的奇数),并绘制级数曲线;
-应用场景:光场初始分布的数学验证,可独立运行查看级数收敛性。
- SSFFTsuanfa.m
-功能:分步傅里叶法的简化演示代码,直观展示单光束传输的核心计算流程;
-实现逻辑:硬编码参数(alpha=1、beta=2、XL=40),定义艾里高斯初始场后,通过分步傅里叶迭代计算光场传输演化,保存光场复振幅U、强度I与传输距离zplot;
-应用场景:快速验证分步傅里叶法的正确性,新手入门理解核心算法的演示文件。
(二)单光束传输仿真文件
该类文件聚焦单光束在不同参数组合下的传输演化,输出二维强度分布伪彩图,核心是探究alpha(分数阶)与beta(非线性)的耦合作用。
- fig1.m
-核心目标:分析分数阶Lévy指数alpha([1,2])与饱和非线性强度beta([0,2])对单光束传输的影响;
-参数配置:固定a=0.2、g=0.01、XL=40,遍历alpha与beta的4种组合;
-可视化输出:生成4个子图(2×2布局),采用pcolor绘制“x-z”平面强度伪彩图,shading interp实现颜色平滑,caxis([0,3.5])统一颜色范围,子图标注为(a)-(d),符合论文图表规范;
-关键特点:仅在第3个子图(id=3)显示坐标轴刻度(x:[-20,0,20],z:[0,20,40]),其他子图隐藏刻度,避免视觉干扰。
- fig2.m
-核心目标:固定alpha=1,深入探究不同饱和非线性强度beta([-2,1,3,5])对单光束传输的影响;
-参数配置:继承fig1.m的基础参数,beta扩展为4种取值(含负值自散焦情况);
-可视化优化:调整子图位置坐标,在第3个子图(id=3)添加顶部/右侧坐标轴框架(ax2),将坐标轴颜色设为黑色,提升图表辨识度;
-结果差异:beta为负值时(-2)光束呈发散趋势,beta增大(3,5)时聚焦效应增强,可从伪彩图中直观观察。
(三)参数敏感性分析文件
该类文件通过定量计算,分析关键物理参数对光束传输特征量(峰值强度、孤子宽度)的影响,输出量化曲线,为参数调控提供数据支撑。
1. 分数阶Lévy指数(alpha)影响分析
- fig3a.m
- 核心目标:展示不同
alpha([1,1.5,2])下,峰值强度随传输距离的演化趋势; - 计算逻辑:固定
beta=2、XL=100,调用evolution1计算各alpha对应的峰值强度Imax(每步取强度最大值),绘制3条对比曲线(红/绿/蓝); - 可视化细节:坐标轴范围x:[10,100]、y:[1,3.8],标注各曲线对应的
alpha值,添加边框线增强图表立体感。
- fig3b.m
- 核心目标:定量分析
alpha(1~2,步长0.05)与平均峰值强度的关系; - 计算逻辑:遍历20个
alpha取值,计算每个alpha下Imax的平均值meanI,绘制alpha-meanI关系曲线(蓝色圆点连线); - 关键结论:
alpha增大时,平均峰值强度单调递减,体现分数阶效应减弱(趋近整数阶)对光束强度的抑制作用。
- fig3c.m
- 核心目标:探究不同
alpha下孤子宽度的振荡特性; - 计算逻辑:通过
interp1插值光场强度,找到半高全宽(FWHM)对应的横坐标,计算孤子宽度fw,绘制宽度随传输距离的振荡曲线; - 参数优化:采样点数
N=10000(更高分辨率),传输步长dz=0.05,提升宽度计算精度; - 结果特征:
alpha越小(1),孤子宽度振荡幅度越大,体现分数阶效应增强对光束稳定性的影响。
- fig3d.m
- 核心目标:定量分析
alpha与平均孤子宽度的关系; - 计算逻辑:遍历
alpha(1~2,步长0.05),计算每个alpha下后期孤子宽度(fw(80:end))的平均值mfw,绘制alpha-mfw关系曲线; - 关键结论:
alpha增大,平均孤子宽度减小,说明整数阶色散下光束更易形成窄孤子。
2. 高斯调制参数(g)影响分析
- fig4a.m
- 核心目标:分析高斯调制参数
g([0.001,0.01,0.1,1])对峰值强度演化的影响; - 参数配置:固定
alpha=1、beta=2,g涵盖弱调制(0.001)到强调制(1); - 可视化设计:用红/绿/蓝/黑4种颜色区分不同
g,通过annotation添加箭头指向对应曲线,标注g值(如“g=0.001”),避免曲线混淆; - 结果趋势:
g越小,峰值强度越高且振荡越明显(弱调制下光束更接近纯艾里特性);g越大,强度衰减越快(强高斯包络抑制光束传输)。
- fig4b.m
- 核心目标:定量分析
g(0.001~1,20个采样点)与平均峰值强度的关系; - 计算逻辑:遍历
g的连续取值,计算meanI,绘制g-meanI曲线(蓝色圆点连线,Linesmooth优化平滑度); - 关键特征:
g从0.001增至1时,平均峰值强度从3.2降至0.8,呈指数衰减趋势,验证高斯调制的强度抑制作用。
3. 光场衰减系数(a)影响分析
- fig4c.m
- 核心目标:分析光场衰减系数
a([0.05,0.25,0.5,0.8])对峰值强度演化的影响; - 参数配置:固定
g=0.01、alpha=1,a涵盖弱衰减(0.05)到强衰减(0.8); - 可视化标注:通过
text与annotation组合,为每条曲线添加a值标注(如“a=0.05”),箭头指向曲线对应的位置; - 结果差异:
a越小,峰值强度越高(弱衰减保留更多光场能量),a=0.8时强度快速衰减至1以下,体现强衰减对光束的抑制。
- fig4d.m
- 核心目标:定量分析
a(0.01~0.99,12个采样点)与平均峰值强度的关系; - 计算优化:仅计算传输后期(
zs=125之后)的Imax平均值,避免初始阶段的过渡效应干扰; - 可视化输出:绘制
a-mI曲线(红色圆点连线),axis([0.01,0.99,2.1,3.3])聚焦有效数据范围,标注(a),符合论文子图编号规范。
(四)双光束交互仿真文件
该类文件针对双光束交互场景,探究相位差(Q)、初始间隔(d)、参数组合(g/alpha/beta)对交互模式的影响,输出多组对比伪彩图。
- fig5.m(函数名标注为fig7)
-核心目标:分析双光束间隔d([-6,-2,0,2,6])、高斯调制g([0.01,1])与相位差Q([0,1])的交互作用;
-参数配置:固定alpha=1、beta=2,遍历Q、g、d的20种组合(4行5列子图);
-交互规律:Q=0(同相位)时,两光束相互吸引并融合为单呼吸孤子;Q=1(反相位)时,两光束相互排斥形成孤子对;d增大(6)时,交互作用减弱;
-可视化布局:子图按d从左到右(-6→6)、g从上到下(0.01→1)排列,第1、6、11、16个子图显示z轴刻度,底部子图显示x轴刻度,标注(a1)-(e4),清晰区分参数组合。
- fig6.m(函数名标注为fig8)
-核心目标:固定d=-2、g=0.01,分析alpha([1,1.5])与beta([-1,0,0.5,1,1.5])对双光束交互的影响;
-参数逻辑:beta从负到正覆盖自散焦到自聚焦,alpha体现分数阶效应强度;
-关键现象:beta=-1(自散焦)时两光束快速发散,无明显交互;beta≥0.5(自聚焦)时,同相位(Q=0)融合更明显,反相位(Q=1)排斥距离增大;
-标注优化:在第5、10、15、20个子图添加旋转270°的alpha标注(如“α=1”),便于区分不同alpha组。
- fig8_ceshi.m
-核心目标:补充验证强自散焦场景下(beta=[-5,-4,-3,-2,-1])双光束的交互特性;
-参数配置:继承fig6.m的布局,beta扩展为更负的取值,d=2(正间隔);
-仿真价值:验证强自散焦下双光束的排斥稳定性,即使beta=-5,反相位光束仍保持排斥状态,未出现融合,为极端参数场景提供数据支撑。
四、代码运行与结果输出
(一)运行流程(通用)
- 环境准备:确保Matlab版本≥R2016b(支持
fft、pcolor等基础函数),无需额外工具箱; - 文件放置:将所有
.m文件放入同一目录,确保mycolor.mat(颜色映射文件)在当前路径下(代码中load mycolor调用); - 参数调整:打开目标文件(如fig1.m),在文件头部修改参数(如
alpha、beta、XL),建议保持单一变量原则; - 执行运行:点击Matlab运行按钮,代码自动执行“初始化→循环仿真→可视化”流程,仿真过程中
disp输出当前传输距离(如“传输距离 = 5.0”); - 结果保存:可手动添加代码保存结果,如
save('fig1_data.mat','x','zplot','I')保存数据,或print('-dpng','-r300','fig1.png')导出300dpi高清图片。
(二)关键输出类型
- 二维强度伪彩图:核心输出形式,x轴为横向坐标(默认[-20,20]),z轴为传输距离(默认[0,40/80/100]),颜色深浅对应强度大小,用于观察光束聚焦、融合、排斥等宏观现象;
- 峰值强度演化曲线:x轴为传输距离z,y轴为峰值强度,用于分析强度的振荡周期与衰减趋势;
- 参数-特征量关系曲线:x轴为物理参数(
alpha/g/a),y轴为平均峰值强度或平均孤子宽度,用于定量拟合参数与特征量的函数关系; - 仿真日志:命令行输出传输距离与演化次数,便于监控计算进度,
tic/toc输出总运行时间(默认参数下单文件运行时间约1~5分钟)。
五、代码特色与使用建议
(一)核心特色
- 学术规范性:所有图表标注采用
Times/Times New Roman字体,物理量用斜体表示(如\itx、\itz),子图编号、坐标轴刻度符合学术论文要求,可直接用于论文投稿; - 模块化复用:所有仿真文件共享
evolution1内部函数,该函数根据输入参数自动适配单/双光束场景,避免代码冗余,修改核心算法只需调整evolution1; - 参数灵活性:关键参数(
alpha、beta、g、a、d)均在文件头部集中定义,支持批量修改与遍历,可快速扩展参数组合; - 可视化统一性:统一使用
mycolor颜色映射,caxis固定颜色范围,避免不同图表间颜色差异导致的解读偏差。
(二)使用建议
- 参数调试:初次运行建议先使用默认参数(如fig1.m),熟悉代码逻辑后再修改参数,修改时建议单次调整1个参数,便于分析结果差异;
- 精度与效率平衡:采样点数
N(默认2^12=4096)与传输步长dz(默认0.1)决定计算精度,N增大或dz减小会提升精度,但运行时间延长,可根据需求调整; - 结果验证:双光束交互仿真(fig5.m/fig6.m)运行时间较长(约5~10分钟),可先通过SSFFTsuanfa.m验证核心算法正确性,再执行复杂仿真;
- 扩展开发:若需研究其他光束(如高斯光束),可修改
evolution1函数中的初始光场表达式(将airy(x)替换为exp(-x²/2)),实现快速扩展。
六、典型应用场景
- 论文复现:直接运行对应文件可复现《基于分数阶效应的饱和非线性介质中艾里高斯光束的传输与交互》论文中的核心图表,如单光束强度分布、双光束交互模式、参数-强度关系曲线;
- 参数优化:通过参数敏感性分析文件,找到呼吸孤子形成的最优参数组合(如
alpha=1.5、beta=2、g=0.01),为实验提供理论参考; - 教学演示:通过调整
alpha与beta,直观展示分数阶效应与非线性效应的物理意义,辅助非线性光学课程教学; - 扩展研究:基于现有代码框架,可添加噪声扰动、非均匀介质等模块,拓展研究场景。
