基于SLM算法的OFDM峰均比(PAPR)降低仿真
项目简介
本项目基于MATLAB环境实现了经典的选择映射(Selected Mapping, SLM)算法,用于降低正交频分复用(OFDM)系统的峰值平均功率比(PAPR)。
仿真程序主要参考了R.W. Bauml等人于1996年发表的经典论文《Reducing the peak-to-average power ratio of multicarrier modulation by selected mapping》。代码由东南大学国家移动通信研究实验室Bin Jiang编写,核心思想是通过引入多个统计独立的相位旋转序列,生成多个代表相同信息的候选OFDM信号,并从中通过“择优机制”选取PAPR最小的信号进行发射,从而改善信号的CCDF(互补累积分布函数)性能。
功能特性
- SLM算法完整实现:实现了从相位序列生成、频域旋转、时域变换到最优信号选择的完整SLM流程。
- 多参数对比:程序一次性仿真并按照不同的候选序列数量(M = 1, 2, 4, 8, 16)进行对比,直观展示SLM算法性能随M值增加而提升的效果。
- 过采样处理:为了更准确地模拟连续时间信号的PAPR,代码采用了4倍过采样(L=4),通过频域补零的方式实现。
- CCDF统计:自动计算并绘制PAPR的互补累积分布函数(CCDF)曲线,横坐标为PAPR阈值,纵坐标为超出概率。
- QPSK调制:内置各态历经的QPSK调制映射逻辑。
系统要求
- MATLAB R2016b 或更高版本
- 无需额外的工具箱(代码中已手动实现QPSK调制,未使用通信工具箱特定函数)
使用方法
- 参数配置:在脚本开头的“参数设置”部分,可以修改子载波数量(N)、过采样倍数(L)、候选序列数量集合(M_values)以及仿真迭代次数(Max_Iter)。
- 运行仿真:直接运行主脚本。程序将在命令行输出当前的迭代进度。
- 结果查看:仿真结束后,系统将自动弹出一个图形窗口,展示不同M值下的SLM-OFDM系统的CCDF性能曲线。
代码实现逻辑详解
该仿真主要包含以下几个关键步骤,逻辑严格遵循源码流程:
1. 信号生成与调制
程序首先生成长度为
N(默认128)的随机整数序列(范围0-3)。随后通过内置的
qpsk_mod 子函数将其实施Gray编码映射,转换为复数域的QPSK星座点。该步骤模拟了频域的原始数据符号。
2. 相位序列矩阵生成
为了实现SLM算法,程序构建了一个
N x max_M 的相位矩阵:
- 原始序列:矩阵的第一列全为1,代表不进行旋转的原始信号。
- 随机相位:其余列由随机生成的
{0, 1, 2, 3} 构成,并映射为 {1, j, -1, -j}(即 $e^{jphi}, phi in {0, pi/2, pi, 3pi/2}$)。这些相位序列用于后续对频域信号进行“加扰”。
3. IFFT与过采样(核心处理)
对于每一个候选序列(从1到M遍历):
- 频域旋转:将原始QPSK信号与相位序列进行按位点乘。
- 频域补零:为了实现
L 倍过采样(默认4倍),程序构建了一个长度为 N_fft = N * L 的向量。将旋转后的信号置于低频部分,中间部分通过补零填充。 - 时域变换:对补零后的向量执行IFFT变换,并乘以 $sqrt{L}$ 进行能量归一化,得到过采样的时域OFDM符号。
4. PAPR计算与择优
- PAPR计算:针对每一个候选的时域信号,计算其峰值功率与平均功率的比值,并转换为dB单位。
- 择优(Winner Select):在当前的M个候选信号中,比较并记录最小的PAPR值作为本次迭代的最终传输PAPR。
5. 统计分析
仿真循环结束后,程序会统计不同阈值(PAPR0,范围0-12dB)下的超出概率(Probability of Exceedance)。计算公式为:
$CCDF(PAPR_0) = Pr(PAPR > PAPR_0)$
6. 图形绘制
利用
semilogy 函数绘制半对数坐标图。图中包含多条曲线,分别对应
M = 1(原始OFDM没有SLM处理)以及
M = 2, 4, 8, 16 的SLM处理结果。图表包含网格、图例、坐标轴标签及标题,清晰展示了随着候选序列M的增加,PAPR超过特定阈值的概率显著下降。
关键算法与函数说明
- 主函数 logic:采用了外层循环控制迭代次数(符号数),内层循环遍历不同M值的结构。为了提高效率,相位序列在每次迭代开始时生成一次最大数量(max_M),不同M值的仿真共享同一组相位数据的子集,保证了对比的公平性。
- qpsk_mod:这是一个内部辅助函数。它不依赖MATLAB通信工具箱,而是通过查找表(Look-up Table)的方式实现QPSK调制。具体映射规则如下:
* 0 $to 1+j$
* 1 $to -1+j$
* 2 $to -1-j$
* 3 $to 1-j$
* (所有点均归一化除以 $sqrt{2}$)
- 过采样机制:代码没有直接对
N 点数据做IFFT,而是先扩展到 N*L 点。这是PAPR仿真中的关键步骤,因为未过采样的离散信号峰值往往低于实际模拟信号的峰值,L=4通常被认为是足以捕捉模拟峰值的经验值。
---
*注意:本仿真主要关注PAPR的统计特性(CCDF),未包含信道传输、接收端解调及边带信息(Side Information)恢复的实现。*