【MATLAB源码】OTFS-SCMA:链路仿真平台

🚀 OTFS-SCMA 下行链路仿真平台

完整双层接收机链路复现 · OTFS + SCMA + MMSE + MPA · 中文工程化文档支持完整 BER 仿真、快速演示、8 张深度可视化图自动生成

📌 为什么选择本仿真平台?

很多 OTFS/SCMA 示例代码存在同类问题:链路不完整、函数耦合重、文档缺失、图像输出散乱。 本项目目标是把"能跑通"升级为"可讲解、可复现、可扩展"的工程级平台。

常见痛点 本项目解决方案
🔴 仅有单段算法示例,缺少端到端链路 ✅ 发送端到接收端全链路闭环:SCMA 编码 →OTFS 调制 → 信道 →MMSE→MPA→BER
🔴 中间变量不可视化,难以验证过程正确性 demo_advanced_visualization.m 输出 8 张机制图,覆盖信道、因子图、收敛行为
🔴 参数散落、脚本职责不清晰 ✅ 三入口脚本职责明确:fulldemoadvanced 分层定位
🔴 码本与因子图关系不透明 ✅ 从 codebook_J6_K4.mat 自动提取 F,结构与检测器直接对齐
🔴 难以快速二次开发 ✅ 核心函数拆分到 functions/,接口清晰,便于替换算法模块

🎯 核心价值

🔬 学术研究价值

  • 完整实现 OTFS-SCMA 下行链路双层接收机:线性 MMSE + 图推断 MPA
  • 可直接用于过载稀疏多址场景中的检测性能研究
  • 提供算法文档与代码文档双文档体系,便于论文与工程对照
  • 支持迭代次数、SNR 范围、误码统计门限等关键实验控制参数

💼 工程应用价值

  • 模块化函数设计,低耦合,便于插拔替换
  • 内置结果产物规范化输出(results/*.png
  • 对中间链路有可视化证据,便于回归测试与故障定位

⚡ 技术亮点

🏗️ 完整工程结构

bash 复制代码
OTFS_SCMA_downlink_refactored/
 ├── main_otfs_scma_full.m                 # 完整 BER 蒙特卡洛仿真
 ├── main_otfs_scma_demo.m                 # 快速演示仿真
 ├── demo_advanced_visualization.m         # 高级可视化 + 收敛分析
 ├── data/
 │   └── codebook_J6_K4.mat                # SCMA 码本
 ├── functions/
 │   ├── otfs_modulation.m                 # OTFS 调制
 │   ├── otfs_demodulation.m               # OTFS 解调
 │   ├── otfs_channel_gen.m                # 多径系数生成
 │   ├── otfs_channel_output.m             # 信道传播与噪声叠加
 │   ├── build_otfs_channel_matrix.m       # OTFS 等效信道矩阵
 │   ├── otfs_mmse_detect.m                # MMSE 均衡
 │   ├── extract_indicator_matrix.m        # 因子图指示矩阵提取
 │   ├── build_scma_channel_matrix.m       # SCMA 结构化信道矩阵
 │   └── scma_mpa_detect.m                 # LLR 域 MPA 检测
 ├── results/                              # 图像输出目录
 └── docs/
     ├── 算法文档.md
     └── 代码文档.md

🔁 链路级信号流

ini 复制代码
随机比特
   ↓
 SCMA码字映射(J=6, K=4)
   ↓
 多用户叠加到DD网格
   ↓
 OTFS调制(ISFFT + Heisenberg)
   ↓
 时延-多普勒多径信道 + AWGN
   ↓
 OTFS解调(Wigner + SFFT)
   ↓
 OTFS等效信道矩阵构建 H_rect
   ↓
 MMSE一级均衡
   ↓
 SCMA结构映射 H_eff
   ↓
 MPA二级多用户检测(LLR域迭代)
   ↓
 符号恢复 / BER统计

📐 默认参数(项目基线)

参数
OTFS 网格 N=8, M=8
SCMA 配置 J=6, K=4, M_mod=4
多径模型 taps=4, delay_taps=0:3, Doppler_taps=0:3
MPA 参数 n_ite=10, cf=10000
完整仿真 SNR 5:5:30 dB
快速仿真 SNR 5:5:25 dB

🧠 模块深度解读

1) 入口脚本分层

  • main_otfs_scma_full.m 定位:高置信 BER 曲线生成。 机制:每个 SNR 点采用"错误比特累计到阈值再停止"。 产物:results/ber_curve_full.png
  • main_otfs_scma_demo.m 定位:快速功能验证。 机制:缩小 SNR 范围与错误门限,优先速度。 产物:results/ber_curve_demo.png
  • demo_advanced_visualization.m 定位:可解释性分析。 机制:单帧深度图(图 1~7)+ 小规模多参数 BER 对比(图 8)。 产物:results/fig1~fig8_*.png

2) 函数职责总览

函数 主要输入 主要输出 核心职责
otfs_modulation N,M,x(N×M) s(MN×1) DD→TF→ 时域变换
otfs_demodulation N,M,r(MN×1) y(N×M) 时域 →TF→DD 逆变换
otfs_channel_gen N,M,taps chan_coef(1×taps) 瑞利多径系数生成
otfs_channel_output delay/Doppler/chan_coef/sigma_2/s r 多径传播 +AWGN
build_otfs_channel_matrix delay_taps,Doppler_taps,chan_coef,M,N H_rect(MN×MN) DD 等效矩阵构建
otfs_mmse_detect yr,H,sigma_2,N,M x_est(N×M) 一级线性均衡
extract_indicator_matrix C,J,K F(K×J) 从码本提取因子图
build_scma_channel_matrix H_rect,F,J,K,M,N H_eff SCMA 结构化映射
scma_mpa_detect yr,sigma_2,h_matrix,max_iter,C,K,N,M,cf symbol_indices_hat LLR 域迭代检测

3) 数据与图结构绑定

码本文件 data/codebook_J6_K4.mat 中矩阵 C 是全链路核心静态资源:

  • 发送端:索引到码字完成 SCMA 映射
  • 中间层:extract_indicator_matrix 自动生成 F(K×J)
  • 接收端:scma_mpa_detect 利用同一码本做组合似然推断

这保证了"发端码本结构"和"收端因子图结构"天然一致。

💻 核心代码展示

🔥 片段 1:OTFS 调制(ISFFT + Heisenberg)

scss 复制代码
% ISFFT
 X = fft(ifft(x).').'/sqrt(M/N);
 ​
 % Heisenberg
 s_mat = ifft(X.')*sqrt(M);
 s = s_mat(:);

🚀 片段 2:OTFS 等效信道矩阵索引填充

ini 复制代码
eff_ele2 = mod(ele2-1 + Doppler_taps(tap_no), N) + 1;
 new_chan = add_term * add_term1 * chan_coef(tap_no);
 H_rect(N*(eff_ele1-1) + eff_ele2, N*(ele1-1) + ele2) = new_chan;

📡 片段 3:MPA LLR 域核心更新

scss 复制代码
U_sum(abs(U_sum) >= cf) = cf * sign(U_sum(abs(U_sum) >= cf));
 U((k-1)*M_mod + m, pr_j) = log(sum(exp(U_sum)));
 ...
 if check_value < 0.0001
     break;
 end

🎬 一键运行

shell 复制代码
% 进入项目根目录后,任选入口执行
 ​
 % 完整 BER 基线
 >> main_otfs_scma_full
 ​
 % 快速演示(推荐开发阶段先跑)
 >> main_otfs_scma_demo
 ​
 % 深度可视化与迭代收敛分析
 >> demo_advanced_visualization

🖼️ 输出产物说明

BER 曲线

  • results/ber_curve_full.png
  • results/ber_curve_demo.png

高级可视化 8 图

  1. fig1_channel_dd_response.png:时延-多普勒信道响应
  2. fig2_scma_factor_graph.png:SCMA 因子图和 F 热力图
  3. fig3_multiuser_superposition.png:多用户叠加过程
  4. fig4_otfs_modulation_flow.png:OTFS 调制流程
  5. fig5_channel_matrix_sparsity.pngH_rectH_eff 稀疏结构
  6. fig6_mmse_equalization.png:均衡前后对比
  7. fig7_mpa_convergence.png:MPA 收敛曲线
  8. fig8_ber_vs_mpa_iterations.png:不同迭代次数 BER 对比

🛒 获取方式

本文代码仅为核心片段,完整版工程已整理好。 关注公众号 【3GPP 仿真实验室】进行获取。

相关推荐
JarvanMo2 小时前
NativePHP 移动版现已免费:用 Laravel 打造原生 iOS 和 Android 应用
前端
答案answer2 小时前
一个非常实用的Three.js3D模型爆破💥和切割开源插件
前端·github·three.js
掘金安东尼2 小时前
Fun with TypeScript Generics:玩转 TS 泛型
前端·javascript·面试
掘金安东尼2 小时前
Next.js 企业级落地
前端·javascript·面试
掘金安东尼2 小时前
React 性能优化完全指南 2026
前端·javascript·面试
Moment2 小时前
OpenClaw 从能聊到能干差的是这 50 个 Skills 😍😍😍
前端·后端·开源
小霖家的混江龙2 小时前
从 0 到 1 实现一个 useState
前端·javascript·react.js
晓得迷路了2 小时前
栗子前端技术周刊第 118 期 - Oxfmt Beta、Angular GitHub stars、React 基金会...
前端·javascript·react.js
亿元程序员3 小时前
小伙伴说我的拼图游戏用Mask不能合批...
前端