基于Walsh-Hadamard码的CDMA系统误码率仿真分析
项目介绍
本项目是一个基于MATLAB开发的码分多址(CDMA)通信系统物理层仿真实验。该仿真模拟了多用户在共享信道环境下,利用正交扩频码进行并发通信的完整过程。通过生成Walsh-Hadamard正交矩阵,系统能够为不同用户分配相互正交的扩频序列,从而在接收端有效抵消多址干扰。本仿真主要用于研究CDMA系统的误码率(BER)性能,并将其与加性高斯白噪声(AWGN)信道下的理论BPSK性能进行对比验证。
功能特性
- 正交扩频与多址接入:利用Hadamard矩阵递归生成算法,为多用户提供严格正交的Walsh码。
- 高精度BPSK调制:实现二进制基带信号到双极性信号(-1, 1)的转换。
- 多用户信号叠加:模拟多路并发信号在物理信道中的线性叠加过程。
- AWGN信道模拟:根据设定的信噪比(Eb/No)和扩频增益,精确计算并注入高斯白噪声。
- 相干解扩接收:通过相关运算(解扩)提取特定用户信号,利用正交性抑制其他用户干扰。
- 自动化性能评估:自动计算并在对数坐标系下绘制仿真误码率与理论值的对比曲线。
使用方法
- 参数设置:在仿真脚本开头可根据需求调整用户数、扩频因子(必须为2的幂)、单用户比特数以及信噪比扫描范围。
- 启动仿真:直接在MATLAB环境中运行仿真脚本。
- 结果查看:
*
图形窗口:观察红线(理论值)与蓝折线(仿真值)的吻合程度。
*
命令行窗口:输出各信噪比点对应的具体误码率数值表。
系统要求
- MATLAB R2016b 或更高版本。
- 无需额外工具箱,基于MATLAB内建函数实现。
实现逻辑与详细功能说明
#### 1. 扩频码构造逻辑
系统内置了一个基于递归原理的Hadamard矩阵生成函数。该函数从阶数为1的矩阵开始,利用分块构造公式 $H_{2n} = [H_n, H_n; H_n, -H_n]$ 递归生成指定维度的方阵。生成的矩阵每一行都是相互正交的Walsh序列,确保了在同步系统下多用户互不干扰。
#### 2. 发射机信号处理
- 数据产生:针对每个用户随机生成0/1二进制信息流。
- 数字调制:采用BPSK映射,将0映射为-1,1映射为1。
- 高速扩频:利用克罗内克积(Kronecker product)运算,将单个信息对比特与对应用户的Walsh序列相乘。每个比特被扩展为长度等于扩频因子的码片序列,从而实现了频谱扩展。
#### 3. 信道模型实现
- 多址干扰模拟:将所有用户扩频后的信号进行矩阵行求和,形成复合信号,模拟多用户同时发送的情况。
- 噪声功率计算:为了保证信噪比定义的准确性,程序根据扩频因子引起的能量增益,动态计算噪声方差(Standard Deviation)。计算时考虑了信号振幅、扩频因子以及Eb/No的线性转换关系。
#### 4. 接收机解扩与判决
- 信号切片:接收端接收到叠加了噪声的组合信号,将其按照扩频因子进行重新分段(Reshape)。
- 相关运算:利用指定用户的本地序列与接收信号切片进行向量点乘积运算。由于Walsh码的正交性,非目标用户的信号在积分周期内求和为零,而目标用户信号得以恢复。
- 硬判决:对解扩后的连续值进行零电平判决,大于0判定为比特1,小于等于0判定为比特0。
#### 5. 性能统计算法
程序采用蒙特卡洛仿真方法,通过对比原始发射比特与接收判决比特,统计在不同信噪比环境下的总误码个数。最终通过总误码数除以总发送比特(用户数×单用户比特数)得出平均误码率。
关键细节分析
- 正交性保障:仿真中假设系统是完全同步的,因此Walsh码能发挥完美的正交特性,使得仿真结果在多用户环境下依然能紧贴单用户BPSK的理论性能曲线。
- 扩频增益体现:代码在计算噪声方差时,正确处理了扩频因子(Spreading Factor)对信号能量的影响,体现了扩频技术对抗信道噪声的能力。
- 递归实现:内部函数通过逻辑判断确保扩频因子输入的合法性(2的幂次),增强了程序的健壮性。