基于MATLAB的噪声信道Tomlinson-Harashima预编码算法实现
项目介绍
本项目展示了在多输入多输出(MIMO)通信系统中应用Tomlinson-Harashima预编码(THP)技术的完整仿真流程。THP作为一种非线性结构化预编码方案,旨在解决无线通信中的多用户干扰或码间干扰问题。通过在发送端利用已知的信道状态信息(CSI)进行干扰预抵消,并配合模运算(Modulo Operation)限制发射功率,THP能够有效克服传统线性预编码(如迫零预编码)在面对病态信道时产生的噪声增强缺陷。本仿真系统在瑞利衰落信道下,量化对比了THP与迫零(ZF)预编码的误码率(BER)性能。
功能特性
- 多天线配置与调制支持:系统默认配置为4x4 MIMO架构,采用16QAM调制格式,并自定义实现了符合Gray映射规则的星座映射表。
- 非线性THP实现:包含完整的QR分解流程、反馈滤波链路、以及核心的发送端模运算处理。
- 线性ZF对比:实现了带有功率归一化(Beta因子)的迫零预编码算法,作为性能基准。
- 统计与可视化分析:自动统计算法运行耗时,生成SNR-BER性能曲线,并直观展示信号在各处理阶段(原始、预处理后、接收还原后)的星座图演变。
- 复杂信道建模:模拟了独立同分布的复高斯瑞利衰落信道及加性高斯白噪声(AWGN)环境。
使用方法
- 启动MATLAB软件(建议R2016b及以上版本)。
- 将项目相关的脚本文件置于MATLAB当前工作路径下。
- 运行主仿真脚本。
- 仿真结束后,程序将在命令行窗口输出算法总耗时,并自动弹出两张图表:一张为THP与ZF的误码率对比曲线,另一张为信号星座图的变化过程。
系统要求
- 软件环境:MATLAB。
- 工具箱需求:本实现主要基于基础数学运算和矩阵操作。脚本中已内置了二进制与十进制转换、QAM解调等辅助子函数,因此不依赖特定的通信工具箱(Communication Toolbox)。
实现逻辑说明
仿真流程严格遵循以下步骤:
- 参数初始化
设置调制阶数为16,天线数为4,SNR范围为0dB至20dB。计算模运算边界,16QAM下该边界值设为8(即 2 * sqrt(16)),用于将信号电平控制在限定范围内。
- 信道与信号生成
在每个信道块(Frame)中,生成随机比特流并映射为16QAM复数符号。信道矩阵使用标准正态分布生成的复矩阵模拟瑞利衰落。
- 发送端THP处理
- 矩阵分解:对信道矩阵的共轭转置执行QR分解(H' = QR),从而导出下三角矩阵B和酉矩阵P。基于B的对角线元素提取对角增益矩阵D,并标准化得到对角线全为1的下三角反馈矩阵G。
- 反馈滤波与模运算:利用下三角矩阵G逐个计算发送符号。在发送当前符号前,通过反馈减去已处理符号造成的干扰。随后立即进行模运算,将复数信号的实部和虚部均限制在 [-4, 4] 的范围内,防止发射功率因干扰抵消而急剧增加。
- 酉变换:将模运算后的向量通过酉矩阵P的共轭转置进行前加权,保持发射总功率稳定。
- 对比组ZF处理
计算迫零加权矩阵,并通过迹(Trace)运算计算功率归一化因子Beta,确保ZF与THP在相同的发射功率水平下进行比较。
- 信道传输与接收还原
- 信道影响:信号经过信道矩阵H并叠加指定功率的加性高斯白噪声。
- THP接收:接收端首先通过左乘D的逆矩阵消除对角增益,随后再次应用模运算还原出原始QAM星座点。
- ZF接收:接收端除以功率归一化因子Beta恢复信号尺度。
- 判决与统计
对接收信号进行最近邻欧氏距离判决,将判决后的十进制符号转回比特流,通过对比原始比特计算各SNR下的BER。
关键算法与函数分析
- QR分解的应用:
代码通过
qr(H') 实现空间层面的因式分解。这使得多天线信道被逻辑上变换为一个具有因果关系的下三角结构,从而允许发送端采用类似DFE(判决反馈均衡)的方式进行逐层干扰抵消。
- 模运算(Modulo Operation)逻辑:
通过
v - modulo_bound * floor((real(v) + modulo_bound/2) / modulo_bound) 的数学形式,实现了复数平面的周期性映射。这一步是THP优于ZF的关键,它解决了为了消除干扰而导致的发送信号幅度过大的问题。
- qam_demod 子函数:
实现了通用的最大似然(ML)检测逻辑。它计算接收点与标准映射表中所有点的距离,选取最小值对应的索引,并利用内置的
de2bi 逻辑完成从符号到比特的转换。
- bi2de 与 de2bi 逻辑:
为了脱离对工具箱的依赖,代码内部实现了比特流与十进制整数之间的转换算法。
bi2de 采用左侧高位(left-msb)原则进行权值累加。
- 功率控制对比:
ZF部分通过
trace(W_zf * W_zf') 计算加权矩阵产生的总增益,并以此进行归一化。这体现了ZF在信道条件恶劣(奇异值较小)时会因Beta值过小导致接收端噪声由于信号放大而显著增强,而THP通过模运算规避了这一风险。