多相移光纤光栅传输特性仿真工具箱
项目简介
本项目是一个基于MATLAB开发的综合光子学仿真环境,参考了耦合模理论(Coupled Mode Theory, CMT)与传输矩阵法(Transfer Matrix Method, TMM),专门用于模拟和分析相移光纤光栅(Phase-Shifted Fiber Bragg Grating, PS-FBG)的光学传输特性。
该工具箱不仅能够模拟基础的均匀光纤光栅,其核心优势在于能够灵活处理多相移结构和切趾(Apodization) 轮廓。通过将光栅沿轴向离散化为数百个均匀切片,结合矩阵级联算法,程序能够精确计算出复杂结构下的反射谱、透射谱、相位响应以及群时延特性。这对于设计超窄带滤波器、单纵模光纤激光器以及高灵敏度传感器具有重要的辅助分析作用。
核心功能特性
- 全参数化光栅建模:支持自定义纤芯有效折射率、中心Bragg波长、光栅长度、折射率调制深度(AC/DC)以及光栅周期。
- 多相移仿真能力:
* 允许用户在光栅沿线的任意相对位置(0~1)插入任意数量的相移点。
* 支持自定义每个点的相移量(如 $pi$ 相移或其他任意角度),能够精确模拟引入相移后透射窗口的产生机制。
- 多种切趾函数支持:内置多种折射率调制轮廓,通过归一化函数控制沿光栅长度的耦合强度分布,有效抑制旁瓣:
* Uniform(均匀分布)
* Gaussian(高斯型)
* Raised Cosine(升余弦型)
* Tanh(双曲正切/平顶型)
* 基于传输矩阵法(TMM)的级联计算,支持高阶矩阵切片(默认500段)以保证仿真精度。
* 自动计算反射率(R)、透射率(T)及其对数谱(dB)。
* 自动提取透射峰值波长、3dB带宽、峰值透射率等关键指标。
* 提供透射相位的解包裹处理。
* 基于数值微分计算群时延(Group Delay),以皮秒(ps)为单位量化色散特性。
系统要求与使用方法
系统要求
- MATLAB R2016a 或更高版本(代码基于基础矩阵运算,无需特殊工具箱)。
如何使用
- 打开 MATLAB 并定位到项目文件夹。
- 打开主程序文件(
main.m)。 - 在代码顶部的 参数设置区域 修改仿真条件,例如:
* 修改
phase_shifts_config 矩阵来添加或调整相移点。例如
[0.5, pi] 表示在中心引入 $pi$ 相移。
* 修改
apod_type string 变量切换切趾类型。
* 调整
scan_span 和
scan_points 以改变光谱扫描的范围和分辨率。
- 直接运行
main 函数。 - 程序运行结束后,控制台将打印耗时及关键结果统计,并弹出包含四个子图的综合分析图表。
算法原理与代码实现细节
本节详细解析 main.m 中的核心算法实现逻辑,确保与实际代码行为一致。
1. 物理模型构建
程序首先定义光速、有效折射率、Bragg波长等基础物理常数。
- 光栅切分:代码将总长度
L_grating 均匀切分为 N_segments 个微元,每个微元长度为 dz。 - 切趾预处理:
get_apodization_profile 子函数根据选定的切趾类型(如高斯),生成一个长度等于切分数量的归一化系数向量 kappa_profile。这决定了每个微元处的折射率调制深度。
2. 传输矩阵法 (TMM) 核心循环
在波长扫描循环中,对于每一个特定的波长 $lambda$:
- 失配量计算:计算通用失配量(Detuning)$sigma$,包含波长失谐和直流折射率变化的影响。
- 矩阵级联:初始化总传输矩阵
M_total 为单位阵。随后遍历每一个光栅切片 $j$:
*
局部耦合系数:根据预计算的切趾轮廓,计算当前切片的交流耦合系数 $kappa_{ac}$。
*
单元矩阵构建:利用耦合模理论解,构建当前切片的 $2 times 2$ 传输矩阵
M_section。代码中包含了具体的数学处理,能够区分 $gamma$ (传播常数校正项)为实数(光子带隙内)或虚数(带隙外)的情况,分别使用双曲函数(sinh/cosh)或三角函数(sin/cos)进行计算,增强了数值稳定性。
*
矩阵乘法:执行 $M_{total} = M_{section} times M_{total}$,模拟光波的逐层传播。
* 在遍历切片的过程中,代码会检查当前切片索引
j 是否对应
phase_shifts_config 中定义的相移位置。
* 一旦匹配,立即生成一个相移矩阵
M_phase。
* 相移矩阵形式为对角阵:$diag(e^{-iphi/2}, e^{iphi/2})$。该矩阵被插入到传输矩阵序列中,模拟相位的突变。
3. 光谱计算
- 利用最终的总传输矩阵
M_total 计算复振幅反射系数与透射系数。 - 透射率:$T = |1 / M_{11}|^2$
- 反射率:$R = |M_{21} / M_{11}|^2$
- 相位提取:提取透射系数的相位角
angle(t_amp)。
4. 数据后处理
* 首先对相位数据进行解包裹(Unwrap)。
* 对波长进行数值微分计算 $dPhi/dlambda$。
* 根据公式 $tau_g = frac{lambda^2}{2pi c} frac{dPhi}{dlambda}$ 计算群时延,并转换为皮秒(ps)。
- 自动统计:通过寻找数组极值的方法,自动定位透射峰位置和强度,并通过简单的阈值搜索算法计算3dB带宽。
结果可视化
运行仿真后,程序将生成一个包含四个子图的窗口:
- 光谱响应 (Spectrum):在同一坐标系下绘制线性的透射谱(蓝色实线)和反射谱(红色虚线)。
- 对数光谱响应 (Log Scale):以dB为单位绘制光谱,便于观察阻带内的旁瓣抑制比和深层结构。
- 相位响应 (Phase Response):展示解包裹后的透射相位随波长的变化曲线。
- 群时延 (Group Delay):展示光通过光栅的时间延迟随波长的变化。
图表底部附带有动态生成的注释框,显示当前仿真使用的具体物理参数。