线性DS-CDMA多用户检测算法误码率性能比较仿真系统
项目介绍
本项目是一个基于MATLAB开发的物理层通信仿真系统,专注于直接序列码分多址(DS-CDMA)技术中的多用户检测(MUD)算法研究。系统模拟了多个用户在同步传输环境下的信号发射与接收过程,重点对比了三种经典的线性检测机:匹配滤波器(MF)、解相关检测器(Decorrelating)以及最小均方误差检测器(MMSE)。
该系统特别设计了“远近效应”场景,通过赋予干扰用户远高于目标用户的信号振幅,来评估不同算法在强多址干扰(MAI)环境下的稳健性。仿真通过蒙特卡洛实验方法计算误码率(BER),并与单一用户在加性高斯白噪声(AWGN)信道下的理论极限进行对比。
功能特性
- 多用户场景模拟:支持配置多个并行用户,并自定义扩频增益(码片长度)。
- 干扰建模:通过非正交的随机BPSK扩频码产生互相关干扰,模拟实际通信中的多址干扰环境。
- 远近效应模拟:系统允许为每个用户独立设置信号幅度,模拟干扰用户距离基站较近、目标用户距离基站较远的典型通信难题。
- 多种接收机实现:
-
匹配滤波器 (MF):传统的单用户检测方式。
-
解相关检测器:通过矩阵求逆消除用户间干扰。
-
MMSE检测器:综合考虑干扰抵消与噪声抑制的优化检测。
- 自动化综合分析:自动生成误码率随信噪比变化的半对数曲线图,并输出详细的数据对比表。
仿真逻辑与算法实现
仿真脚本严格按照数字通信系统的物理层流程构建,具体实现细节如下:
1. 参数与序列初始化
系统设定用户数(K=5)与扩频增益(N=16)。为了模拟MAI,系统选用随机生成的 BPSK 序列(-1, 1)作为扩频码。计算这些扩频序列的互相关矩阵 R,在该矩阵中非对角线元素不为零,反映了用户间的相互干扰。
2. 发送端建模
产生随机的源比特流(BPSK调制)。发送信号矩阵通过扩频码矩阵(S)、幅度矩阵(A)和比特向量的乘积构建,公式表达为 x = S * A * bits。其中幅度矩阵 A 包含预设的远近效应参数,使干扰用户的信号强度远超目标用户。
3. 信道模拟
系统在发送信号上叠加加性高斯白噪声(AWGN)。噪声功率根据目标用户的信噪比(Eb/N0)动态计算,确保仿真结果的准确性。
4. 接收机算法逻辑
所有接收机首先通过匹配滤波(前端处理)获得观测向量 y = S' * r。
- MF检测:直接对 y 取符号判定。由于忽略了 R 中的非对角线分量,该方法在远近效应下性能受限,会出现误码率“平台”。
- 解相关检测:应用变换矩阵 W = inv(R)。该方法彻底消除了 MAI,但由于在消除干扰的同时也放大了背景噪声,在低信噪比下表现不佳。
- MMSE检测:应用变换矩阵 W = inv(R + sigma^2 * inv(A^2))。该算法通过引入噪声功率项,在抑制干扰和限制噪声放大之间取得了平衡,是性能最均衡的线性检测机。
5. 性能评估
系统针对目标用户(User 1)统计误码数。经过数千次蒙特卡洛循环后,计算平均误码率。
系统要求
- 软件环境:MATLAB R2016a 或更高版本。
- 所需工具箱:基础 MATLAB 运行环境即可,项目内采用矩阵运算实现了所有核心算法,无需特殊的通信工具箱支持。
使用方法
- 启动 MATLAB 软件并进入仿真的工作目录。
- 直接运行仿真脚本文件。
- 程序将开始执行蒙特卡洛迭代,命令行窗口会实时显示进度提示。
- 运行结束后,系统将自动弹出“DS-CDMA多用户检测性能仿真”曲线图,并在命令行窗口打印 SNR 与各算法误码率的对照表。
- 通过观察曲线,可以分析出在强干扰环境下,解相关和MMSE检测器相较于基础MF接收机的性能增益。