2x2 MIMO-BPSK系统瑞利衰落信道下的ZF-SIC误码率仿真项目
项目介绍
本项目实现了一个基于2x2多输入多输出(MIMO)系统的无线通信仿真框架。系统采用二进制相移键控(BPSK)调制技术,并模拟信号在瑞利衰落信道(Rayleigh Fading Channel)中的传输过程。瑞利衰落信道能够准确体现非视距(NLOS)环境下的多径传播特性。接收端核心采用了迫零均衡(Zero-Forcing, ZF)配合串行干扰消除(Successive Interference Cancellation, SIC)的检测算法,旨在有效抑制空间多路复用带来的流间干扰,并评估系统在不同信噪比(SNR)环境下的误码率(BER)性能。
功能特性
- 蒙特卡洛仿真框架:通过大量的随机比特流传输,统计误码情况,确保仿真结果的统计准确性。
- 瑞利衰落模拟:构建满足复高斯分布的信道矩阵,模拟真实的无线时变衰落。
- 带有最优排序的ZF-SIC检测:在每一级检测中计算当前信道状态,动态选择信噪比最高的信号流进行优先判决与消除。
- 性能指标对比:自动计算并绘制单天线(SISO)系统在瑞利信道下的理论误码率曲线,作为参考基准。
- 数据可视化:提供SNR与BER的数值对照表,并生成半对数坐标性能曲线图。
使用方法
- 启动MATLAB软件。
- 将仿真脚本加载至MATLAB工作区。
- 直接运行脚本函数。
- 在命令行窗口查看SNR与BER的对应数值。
- 在弹出的图形窗口中观察仿真曲线与理论参考曲线的对比情况。
系统要求
- MATLAB R2016b 或更高版本。
- 无需特殊工具箱支持(脚本基于基础矩阵运算与随机函数实现)。
实现逻辑与功能说明脚本严格遵循数字通信物理层仿真流程,具体步骤如下:
- 参数初始化:设置发射天线数(Nt=2)与接收天线数(Nr=2),定义SNR范围为0dB至20dB,步进为2dB。设置单点最大仿真比特数为1e5。
- 循环仿真处理:针对每一个SNR点进行计算。首先根据线性信噪比计算噪声标准差。为了模拟多天线功率分配,假设总发射能量为1,平均分配给每个发射天线。
- 信号发送:生成随机二进制序列,并执行BPSK映射(0映射为1,1映射为-1)。
- 信道模型:构建Nr x Nt的复矩阵,系数服从均值为0、方差为1的复高斯分布,并进行功率归一化。
- 噪声叠加:在接收信号中加入复高斯白噪声(AWGN)。
- ZF-SIC接收机算法实现:
* 计算当前信道矩阵的伪逆,得出迫零均衡矩阵。
* 执行最优排序逻辑:计算均衡矩阵各行的范数平方,范数最小的行对应当前信噪比最高的信号流。
* 信号判决:将接收向量投影至选定的子空间,进行硬判决提取比特信息。
* 干扰消除:根据判决结果重建该流的接收成分,并从当前接收向量中扣除,更新信道矩阵。
* 迭代处理:重复上述过程直至所有天线的信号流均被检测完成。
- 误码统计:对比原始发送比特与检测比特,累计误差总数,计算当前SNR下的平均误码率。
关键算法与细节分析
- 瑞利信道建模:通过randn函数生成的实部与虚部组合,构建了符合复高斯分布的信道矩阵,真实模拟了独立同分布(i.i.d.)的多径衰落。
- 伪逆运算(pinv):在迫零检测中,利用伪逆矩阵将干扰维度映射为零。虽然ZF会放大噪声,但后续的SIC步骤能够部分弥补这一缺陷。
- 最优检测顺序(Optimal Ordering):脚本中通过寻找均衡矩阵W中行范数最小的流优先检测。其数学原理在于行范数越小,该层的噪声放大效应越弱,检测准确率越高。优先检测正确的流可以最大限度减少SIC过程中的误差传播风险。
- 串行干扰消除(SIC):通过从接收信号向量中减去已判定信号的贡献,使后续层在检测时看到的干扰更少,从而使得第二层信号能获得比纯线性检测更高的分集收益。
- 理论参考曲线:脚本使用了单天线BPSK在瑞利衰落下的解析公式 BER = 0.5 * (1 - sqrt(rho/(1+rho)))。这为评估MIMO系统的空间复用增益提供了直观的性能参照。