MIMO-OFDM系统空时编码(STC)性能仿真平台
本项目设计并实现了一个完整的MIMO-OFDM(多输入多输出正交频分复用)通信链路模型,旨在研究和评估Alamouti空时分组码(STBC)在频率选择性衰落信道下的误码率(BER)性能。通过对比SISO、MIMO 2x1和MIMO 2x2不同配置,直观展示空间分集技术对通信质量的提升。
项目介绍
该仿真平台基于MATLAB开发,通过构建物理层链路模型,模拟了信号从比特生成、调制、空时编码、OFDM变换到多径信道传输,以及接收端的解调与解码全过程。项目重点分析了在存在多径时延的频率选择性衰落道环境下,空时编码如何通过时间与空间的冗余设计来对抗信号衰减,提高系统的可靠性。
功能特性
- 多天线配置支持:支持对比单输入单输出(SISO 1x1)、两发一收(Alamouti 2x1)以及两发两收(Alamouti 2x2)三种典型天线配置。
- 完整的OFDM链路:实现了子载波映射、IFFT变换、循环前缀(CP)添加与去除、FFT变换等核心步骤。
- 频率选择性衰落模拟:采用多抽头(Taps)信道模型,模拟真实的无线多径传播环境。
- 高阶调制功能:内置16-QAM与QPSK调制及解调模块,并支持格雷码(Gray Code)映射。
- 空时分集技术:核心实现Alamouti STBC算法,在发送端进行跨符号编码,在接收端进行最大比合并(MRC)。
- 性能评估与可视化:通过蒙特卡洛仿真计算不同信噪比(SNR)下的误码率,生成对比曲线图及接收端信号星座图。
系统要求
- 软件环境:MATLAB R2016b 或更高版本。
- 硬件要求:由于采用多迭代次数的蒙特卡洛仿真,建议配备多核处理器的计算机以缩短计算时间。
- 依赖工具箱:本项目采用纯代码逻辑实现,不强制依赖特定的通信工具箱(内置位运算函数已手动补全)。
算法实现逻辑
#### 1. 发送端处理
程序首先根据子载波数和调制阶数生成随机比特。OFDM块处理过程中,将两个连续的OFDM符号定义为一个Alamouti处理单元。
在子载波级别,Alamouti编码矩阵定义为:
时刻1:天线1发送s1,天线2发送s2。
时刻2:天线1发送-conj(s2),天线2发送conj(s1)。
编码后的信号经IFFT转换为时域信号,并添加1/4长度的循环前缀。
#### 2. 信道模型
仿真采用4抽头的独立瑞利衰落信道,模拟频率选择性衰落。每个发送-接收天线对之间均拥有独立的信道冲激响应。信号通过信道时采用时域卷积运算,并叠加加性高斯白噪声(AWGN)。
#### 3. 接收端处理
接收端首先完成去CP和FFT变换,将信号转换回频域。对于每个子载波,程序利用已知的信道状态信息(CSI)构造等效信道矩阵。
对于2x1系统,通过最大比合并(MRC)剥离空时编码,恢复出s1和s2的估计值。
对于2x2系统,结合两个接收天线的信号进行联合解码,获得更高的分集增益和信噪比提升。
#### 4. 性能计算
通过比较解调后的比特流与原始比特流,统计错误比特总数。仿真在不同的SNR(0到20dB)下循环运行,直至达到设定的最大迭代次数,最终输出平滑的BER曲线。
关键函数与实现细节
- 调制与解调模块:手动实现了QAM/QPSK映射逻辑。针对16-QAM,采用了标准化的功率归一化处理(除以sqrt(10)),确保不同方案在相同能量下对比。
- 二进制转换工具:内置了自定义的十进制与二进制相互转换函数,确保在没有Toolbox的环境下也能处理比特流与符号映射。
- Alamouti合并算法:在子载波循环中,利用合并公式 s1_hat = (h1'*y1 + y2'*h2) / (|h1|^2 + |h2|^2) 进行信号恢复。该算法能够有效抵抗信道空洞,在2x2配置下表现出比2x1更陡峭的误码率下降曲线。
- 统计报告:程序在仿真结束后会自动打印SNR、天线配置和对应误码率的统计表,并生成物理层性能对比图解。
使用方法
- 启动MATLAB并将工作目录切换至项目文件夹。
- 运行主要的仿真脚本。
- 命令行将实时显示当前正在仿真的SNR进度。
- 仿真结束后,系统将弹出两个窗口:
- 窗口1:SISO vs Alamouti 2x1 vs Alamouti 2x2 的误码率曲线对比。
- 窗口2:特定信噪比(默认14dB)下,2x1与2x2接收端解调前的星座图分布情况。
- 观察命令行输出的最终系统统计报告。