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

来源:这里教程网 时间:2026-03-03 23:30:51 作者:

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

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

????%20为什么选择本仿真平台?

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

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

????%20核心价值

????%20学术研究价值

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

????%20工程应用价值

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

⚡ 技术亮点

????️ 完整工程结构

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

???? 链路级信号流

随机比特
   ↓
 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)

% ISFFT
 X = fft(ifft(x).').'/sqrt(M/N);
 
 % Heisenberg
 s_mat = ifft(X.')*sqrt(M);
 s = s_mat(:);

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

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 域核心更新

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

???? 一键运行

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

????️ 输出产物说明

BER 曲线

results/ber_curve_full.png
results/ber_curve_demo.png

高级可视化 8 图

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

ber<em>curve</em>demo.png ber<em>curve</em>full.png fig1<em>channel</em>dd<em>response.png fig2</em>scma<em>factor</em>graph.png fig3<em>multiuser</em>superposition.png fig4<em>otfs</em>modulation<em>flow.png fig5</em>channel<em>matrix</em>sparsity.png fig6<em>mmse</em>equalization.png fig7<em>mpa</em>convergence.png fig8<em>ber</em>vs<em>mpa</em>iterations.png

???? 获取方式

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

相关推荐