MIMO系统信道容量仿真分析
项目介绍
本项目是一个基于MATLAB的无线通信仿真工程,专注于多输入多输出(MIMO)系统的信道容量分析。通过构建瑞利衰落(Rayleigh Fading)信道模型,项目深入探讨了在不同天线配置(SISO, SIMO, MISO, MIMO)下的遍历信道容量(Ergodic Capacity)。
程序核心依据香农信息论,结合蒙特卡洛(Monte Carlo)方法消除信道随机性带来的误差,精确计算并对比了等功率分配(Equal Power Allocation, EPA)与注水算法(Water-filling Algorithm)两种功率分配策略下的系统性能。仿真结果直观地展示了MIMO技术带来的复用增益,即在不增加带宽和总发射功率的前提下,信道容量随天线数量显著提升的特性。
功能特性
- 多场景天线配置支持:支持任意Tx/Rx组合,默认预设了以下典型场景进行对比:
*
SISO (1x1):基准单天线系统。
*
SIMO (1x4):接收分集系统。
*
MISO (4x1):发射分集系统。
*
MIMO (2x2):小型空间复用系统。
*
MIMO (4x4):大型空间复用系统。
* 采用服从复高斯分布 $mathcal{CN}(0, 1)$ 的随机矩阵生成瑞利衰落信道 $H$。
* 利用奇异值分解(SVD)获取信道特征与其对应的特征值(Eigenvalues)。
*
等功率分配 (EPA):模拟发射端无信道状态信息(CSI)的场景,功率平均分配给各发射天线。
*
注水算法 (Water-filling):模拟发射端已知CSI的场景,根据子信道增益动态分配功率,最大化理论容量。
- 蒙特卡洛方法:通过默认1000次独立信道实现的迭代平均,计算遍历容量,确保结果具有统计学意义。
- 可视化与数据分析:
* 绘制“信噪比 (SNR) - 信道容量 (Capacity)”曲线图。
* 控制台实时输出仿真进度。
* 自动生成SISO与4x4 MIMO的容量对比表及增益倍数分析。
系统要求
- MATLAB R2016a 或更高版本(代码仅使用基础数学函数,无特定工具箱强依赖,但建议安装Communication Toolbox以备扩展)。
- 标准PC硬件配置即可,仿真次数设置为1000时计算量中等。
使用方法
- 确保MATLAB环境已准备就绪。
- 打开包含了仿真脚本的文件夹。
- 在MATLAB命令窗口或编辑器中运行主程序。
- 程序运行过程中会在命令行窗口打印当前的仿真进度(正在处理的天线配置及蒙特卡洛迭代次数)。
- 运行结束后,会弹出一个图形窗口显示容量对比曲线,并在命令行输出具体的容量数值分析表。
算法实现与逻辑详解
本项目的核心逻辑实现流程如下:
1. 参数初始化与预处理
程序首先定义了信噪比范围(0dB至30dB,步长2dB)并将dB值转换为线性信噪比(Linear SNR)。同时定义了天线配置矩阵,涵盖了从单天线到多天线的多种组合。为了存储仿真结果,预先分配了用于存放EPA和WF(注水)容量结果的矩阵。
2. 仿真主循环
程序采用三层嵌套循环结构进行处理:
- 最外层循环:遍历不同的天线配置(如1x1, 1x4, 4x4等)。
- 中间层循环:遍历信噪比(SNR)序列。
- 最内层循环(蒙特卡洛迭代):在此层进行大量的随机实验以求取平均值。
3. 核心计算步骤 (在蒙特卡洛循环内)
每一次迭代均执行以下严谨的数学计算:
- 信道生成:生成 $N_r times N_t$ 的信道矩阵 $H$,其元素由实部和虚部均为高斯分布的随机数构成,并进行归一化处理。
- SVD分解:对矩阵 $H$ 进行奇异值分解,提取奇异值并计算其平方,得到各并行子信道的功率增益(特征值 $lambda^2$)。
- 秩与自由度分析:计算非零特征值的数量,确定信道的秩。
- 等功率分配 (EPA) 容量计算:
* 假设总发射功率均分到每个发射天线($P_{sub} = rho / N_t$)。
* 利用香农公式 $C = sum log_2(1 + P_{sub} cdot lambda_i^2)$ 累加各子信道容量。
- 注水算法 (Water-filling) 容量计算:
* 仅当系统为MIMO($N_t > 1$ 且 $N_r > 1$)时,调用辅助函数
WaterFilling。
*
注水逻辑:根据总功率约束和各子信道的噪声水平($1/lambda_i^2$),迭代寻找最佳的“水位线” $mu$。
* 剔除信道质量极差(无法分配到正功率)的子信道,将功率重新分配给优质信道,从而获得 $p_{opt}$。
* 基于优化后的功率分配计算最大化容量。
4. 结果平均与存储
在完成单次信噪比点的所有蒙特卡洛迭代后,取累积容量的平均值作为该SNR下的遍历容量(Ergodic Capacity),并存入结果矩阵。
5. 可视化模块
- 使用不同颜色和标记(Marker)区分SISO、SIMO、MISO和MIMO的EPA容量曲线。
- 特别针对 4x4 MIMO 配置,通过虚线绘制其注水算法得出的容量曲线,以便直观对比CSI已知情况下的性能提升(通常在低SNR下效果明显)。
6. 数据分析输出
程序最后通过索引查找,提取SISO (1x1) 和 MIMO (4x4) 在特定SNR下的容量数据,计算两者的比值(复用增益),并以格式化的表格形式在控制台打印出来,验证高SNR下MIMO容量线性增长的理论结论。