FBMC系统预留子载波PAPR抑制仿真平台
项目简介
本项目是一个基于MATLAB开发的通信系统仿真平台,专注于研究滤波器组多载波(FBMC-OQAM)系统中的峰值平均功率比(PAPR)问题。项目实现了基于预留子载波(Tone Reservation, TR)的PAPR抑制方案,通过在频域预留特定子载波承载削峰信号,从而在不破坏数据传输的前提下降低时域信号的峰值。
仿真平台构建了完整的FBMC收发链路,集成了信号生成、PAPR抑制算法、功率谱密度(PSD)分析以及AWGN信道下的误码率(BER)性能评估功能。
功能特性
- FBMC-OQAM 波形生成:基于多相网络(Polyphase Network)架构,实现了包含OQAM预处理、IFFT、原型滤波器加窗及重叠相加(Overlap-Add)的完整调制流程。
- Phydias 原型滤波器:采用频率取样技术设计的滤波器系数(K=4),确保良好的时频聚焦特性。
- TR-PAPR 抑制算法:实现了基于预留子载波的迭代削峰算法。算法自动计算并在预留位置填充优化后的复数权重,以降低整体信号的PAPR。
- 多维度性能评估:
*
CCDF 统计:统计并对比原始信号与优化后信号的PAPR互补累积分布函数。
*
PSD 分析:分析PAPR抑制算法对发射信号频谱特性的影响。
*
BER 测试:在AWGN信道下评估PAPR抑制对解调性能的影响(包含完整的调制、加噪、解调及误码统计)。
- 可视化展示:自动绘制时域波形对比图、CCDF曲线、功率谱密度对比图及BER曲线。
系统要求
- 软件环境:MATLAB R2018b 或更高版本。
- 工具箱:需安装 Communications Toolbox(用于QAM调制/解调、AWGN函数及误码率计算)。
使用方法
直接运行主脚本即可启动仿真。程序将依次执行以下步骤:
- 初始化系统参数(子载波数、重叠因子、调制阶数等)。
- 进入主循环,按帧生成数据并进行PAPR抑制处理。
- 统计并累积PAPR及PSD数据。
- 执行BER仿真循环,在不同信噪比下测试系统误码率。
- 仿真结束后,自动弹出结果图形窗口。
核心算法与实现细节
本项目核心逻辑封装在主函数及其子函数中,具体实现逻辑如下:
1. 系统参数配置
仿真采用
64子载波 系统,重叠因子
K=4。每帧包含200个FBMC符号,共仿真50帧以保证统计结果准确性。调制方式采用
4-QAM (QPSK)。
预留子载波(Tone Reservation)策略配置为:
- 预留比例:10%(即约6个子载波)。
- 位置选择:在非边缘频带(避开直流和高频端)随机选择索引,并在整个仿真过程中保持固定。
- 优化参数:目标PAPR设为6.0dB,最大迭代次数10次,步长因子0.8。
2. FBMC-OQAM 调制器实现
调制器(
fbmc_modulator)严格遵循FBMC物理层协议实现,流程包括:
- OQAM 映射:将输入的复数QAM符号拆解为实部和虚部,并在时域上交错排列(Offset)。偶数子载波传输实部/虚部序列,奇数子载波传输虚部/实部序列(并伴随相位旋转)。
- 相位调整:对时频网格应用特定的相位旋转 $frac{pi}{2}(m+n)$。
- IFFT 变换:对每个符号时间片执行IFFT操作。
- 多相滤波与重叠相加:将IFFT输出进行周期延拓(Repetition),与Phydias原型滤波器系数逐点相乘,最后通过Overlap-Add操作合成连续的时域信号。
3. 原型滤波器设计
通过
get_prototype_filter 函数实现。采用Phydias滤波器系数 $[1, 0.9719, 0.7071, 0.2351]$,构造长度为 $K times M$ 的滤波器脉冲响应,并进行能量归一化。
4. PAPR 抑制流程
在主循环中,程序首先生成全零预留子载波的原始FBMC信号,计算其初识PAPR。随后调用优化算法(
run_tr_papr_reduction),在预留的频点上迭代计算并叠加反向峰值信号。该过程输出了优化后的时域信号及填充了优化权重的频域网格。
5. 性能评估逻辑
- PSD 统计:在每帧仿真中,累加原始信号和优化后信号的能够谱,最终取平均值以观察带外辐射情况。
- BER 仿真:
* 提取最后一帧优化后的频域网格作为发射源。
* 在设定的Eb/N0范围内(0-12dB),添加高斯白噪声(AWGN)。
* 调用解调器(
fbmc_demodulator)恢复数据。
* 仅提取数据子载波位置的符号进行QAM解调和比特错误统计,验证PAPR抑制是否引入了不可接受的失真(理想情况下TR方案不应影响数据子载波的BER)。
结果输出
仿真主要输出以下包含关键性能指标的数据结构:
ccdf_data:包含原始信号和PAPR抑制后信号的PAPR值列表。psd_data:存储了用于频谱分析的累积信号数据。ber_results:不同信噪比下的误比特率。example_timedomain:保存了首帧信号的时域片段,用于直观展示削峰效果。