# 🚀 5G NR 大规模 MIMO 检测算法仿真平台
面向 5G/6G 多天线系统的高性能软输出检测器完整实现
📌 为什么选择本仿真平台?
| 痛点 | 本平台解决方案 |
|---|---|
| 📚 MIMO 检测算法复杂难懂 | ✅8 种主流算法全覆盖,从线性到非线性,代码结构清晰透明 |
| 🔧 软信息 (LLR) 计算易出错 | ✅ 鲁棒 LLR 实现,自动处理反假设缺失 (Counter-Hypothesis Missing) |
| 📊 缺乏统一对比框架 | ✅ 内置一键多算法对比仿真,自动生成 BER 曲线 |
| ⚡ 高阶调制复杂度高 | ✅ 智能算法筛选,自动跳过不适用的 MLD/SD 算法 |
| 📡 信道模型不够真实 | ✅ 集成 3GPP TDL/CDL 标准信道模型,支持高移动性场景 |
🎯 核心价值
🔬 学术研究价值
- 完整的线性/非线性检测算法对比
- 验证 K-Best, LSD, Lattice Reduction 理论
- 探索不同星座阶数对性能的影响
- 5G/6G MIMO 接收机研究利器
💼 工程应用价值
- 验证 LDPC 编解码与检测器联合性能
- 评估真实 3GPP 信道模型下的误码率
- 高效的 Schnorr-Euchner 球形译码实现
- 完整的 8x8 大规模 MIMO 支持
⚡ 技术亮点
🌊 MIMO 检测技术栈
┌───────────────────────────────────────────────────────────────┐
│ MIMO 检测器信号流 │
├───────────────────────────────────────────────────────────────┤
│ │
│ y = Hx + n ──► [预处理] ──► [检测器] ──► [LLR计算] ──► [LDPC] │
│ │ │ │ │ │
│ QR分解/LLL ZF/MMSE/ Max-Log-MAP 译码 │
│ LSD/K-Best │
│ │
│ 支持算法: │
│ ZF | MMSE | OSIC | K-Best | LSD | SD | LR-MMSE | MLD │
└───────────────────────────────────────────────────────────────┘
📊 性能指标 (仿真实测)
| 场景 (4x4 Rayleigh) | 调制方式 | Eb/N0 | ZF BER | LSD BER | 增益 |
|---|---|---|---|---|---|
| 基础验证 | QPSK | 4 dB | 2.1e-2 | 8.5e-3 | 2.5 倍 |
| 进阶测试 | 16QAM | 8 dB | 5.2e-2 | 2.7e-2 | 1.9 倍 |
| 高阶调制 | 64QAM | 12 dB | 8.1e-2 | 4.0e-2 | 2.0 倍 |
💡 软信息优势:LSD 输出的软 LLR 结合 LDPC 译码,相比硬判决检测器具有显著的编码增益。
🖥️ 运行环境
最低要求
| 项目 | 要求 |
|---|---|
| MATLAB 版本 | R2023b 或更高 (推荐) |
| 必需工具箱 | Communications Toolbox, 5G Toolbox |
| 推荐工具箱 | Signal Processing Toolbox |
| 操作系统 | Windows 10/11, macOS, Linux |
| 内存 | 8 GB+ (8x8 MIMO 仿真建议 16GB) |
快速验证
% 在MATLAB命令窗口运行
>> ver 5g
% 应显示 5G Toolbox 版本信息
🧠 算法原理
MIMO 检测核心思想
问题:在多天线系统中,接收信号 $\mathbf{y} = \mathbf{H}\mathbf{x} + \mathbf{n}$ 是多个发射流的叠加,需要从混叠信号中恢复原始符号。
解决方案:
- 线性检测 (ZF/MMSE):通过伪逆矩阵分离各发射流,计算简单但性能有限。
- 干扰消除 (OSIC):逐层检测并消除已判决信号的干扰,性能中等。
- 树搜索 (LSD/K-Best):在约束搜索空间内寻找最优解,实现近 ML 性能。
- 格基规约 (LR-MMSE):变换信道矩阵使其更正交,显著提升线性检测性能。
关键公式
MMSE 检测器:
Max-Log-MAP LLR 计算:
鲁棒 LLR (本项目特色):当候选列表缺少某比特假设时,避免 LLR 无穷大。
📁 项目结构
MIMO Equalization/
├── 📂 mimo_detection/
│ ├── 📂 core/ # 核心检测算法库
│ │ ├── detect_linear.m # 线性检测器 (ZF, MMSE)
│ │ ├── detect_osic.m # 排序串行干扰消除 (OSIC)
│ │ ├── detect_mld.m # 最大似然检测 (MLD - 基准)
│ │ ├── detect_sd.m # 球形译码 (SD - 硬判决)
│ │ ├── detect_lsd.m # 🚀 列表球形译码 (LSD - 推荐)
│ │ ├── detect_kbest.m # K-Best 检测器 (广度优先)
│ │ ├── detect_mmse_pic.m # MMSE 并行干扰消除
│ │ ├── detect_lr.m # 格基规约辅助检测
│ │ └── lll_process.m # LLL 格基规约算法
│ │
│ ├── 📂 utils/ # 工具函数库
│ │ ├── gen_5g_channel.m # 5G NR 信道生成 (TDL/CDL)
│ │ ├── mod_5g.m # 5G 调制封装 (nrSymbolModulate)
│ │ ├── demod_5g.m # 5G 解调封装 (nrSymbolDemodulate)
│ │ ├── mimo_detect_wrapper.m # 统一检测器调用接口
│ │ └── llr2softsym.m # LLR 转软符号
│ │
│ ├── 📂 sims/ # 仿真脚本 ("一键运行")
│ │ ├── sim_main_comparison.m # 📊 多算法/多场景综合对比
│ │ ├── diag_basic_link.m # 非编码链路诊断
│ │ └── diag_coded_link.m # 编码链路诊断
│ │
│ └── 📂 tests/ # 单元测试
│ ├── test_robust_llr.m # 鲁棒 LLR 验证
│ ├── test_detectors.m # 检测器基础测试
│ └── test_utils.m # 工具函数测试
│
└── 📂 docs/ # 文档
├── 算法文档.md # 📘 算法原理详述 (含公式推导)
└── 项目文档.md # 📒 项目介绍 (本文档)
代码统计:
- 📄 20+ 个与核心功能直接相关的 MATLAB 文件
- 📝 2000+ 行精炼代码
- 💬 100% 中文详细注释
🎬 仿真演示
一键运行算法对比
>> cd mimo_detection/sims
>> sim_main_comparison
预设仿真场景
| 场景 ID | 名称 | 配置 |
|---|---|---|
| 1 | 基础验证 | 4x4 QPSK, Rayleigh, -4~6 dB |
| 2 | 进阶测试 | 4x4 16QAM, Rayleigh, 0~12 dB |
| 3 | 真实信道 | 4x4 64QAM, TDL-C 300ns, 5~18 dB |
| 4 | 大规模天线 | 8x8 QPSK, Rayleigh, -2~8 dB |
| 5 | 极限挑战 | 8x8 16QAM, TDL-A, 2~16 dB |
输出结果预览
BER vs SNR (4x4 16QAM Rayleigh)


📦 您将获得
| 内容 | 说明 |
|---|---|
| 📁 完整源码 | 覆盖 8 种主流检测算法,ZF 到 LSD 全覆盖 |
| 📖 原理文档 | MMSE/LSD/K-Best/LR 详细推导与实现说明 |
| 🚀 高效算法 | Schnorr-Euchner 枚举加速的 LSD 实现 |
| 📊 对比套件 | 一键生成多算法 BER 性能对比图 |
| 🔧 鲁棒设计 | 自动处理 LLR 异常、智能跳过高复杂度算法 |
| 📡5G 兼容 | 集成 3GPP TDL/CDL 信道与 LDPC 编解码 |
🛒 获取方式
本文代码仅为核心片段,完整版工程已整理好。 关注公众号 【3GPP仿真实验室】进行获取。
📚 参考文献
- 3GPP TS 38.211: "NR; Physical channels and modulation."
- 3GPP TR 38.901: "Study on channel model for frequencies from 0.5 to 100 GHz."
- **Wübben, D., et al.