【MATLAB源码】THz ISAC:太赫兹通感一体化链路级仿真平台

3 阅读6分钟

THz ISAC 链路级仿真平台

面向太赫兹通感一体化的工程化仿真平台

统一参数体系驱动感知与通信协同评估

【THz ISAC】【链路级仿真】【感知通信一体】【工程验证平台】

📌 为什么选择

该项目面向太赫兹 MIMO ISAC 场景,覆盖从参数构建、链路执行到结果评估的完整流程。平台同时支持 GUI 与脚本入口,兼顾交互演示与批量实验。核心目标是让感知与通信在统一框架内实现可复现、可对标、可追踪。

痛点方案
参数管理分散统一配置构建器集中管理通用参数与信号参数
感知通信流程割裂联合流程先感知后通信并提供感知辅助挂接
工具链依赖敏感兼容层提供 random/unifrnd 最小替代实现
结果语义不统一输出统一 *_input/*_output/*_ref/*_diff 命名族
验收口径不一致提供快速演示、全量演示、静态检查与三场景对标脚本

🎯 核心价值

​​

🔬 学术研究价值

该平台形成了可复现实验链路,适合用于通感一体化算法验证与指标分析。

  • 统一信号模型框架
  • 分子吸收信道建模
  • 二维感知处理链路
  • 通感耦合评估接口

💼 工程应用价值

该平台提供可直接运行的模块化代码结构,适合工程团队协作与持续交付。

  • GUI 脚本双入口能力
  • 模块边界清晰架构
  • 自动化测试检查流程
  • 标准化结果输出规范

⚡ 技术亮点

🌊 一体化架构与工程实现

特性传统方案本方案
参数管理分散脚本配置统一 build_thz_isac_config 参数域
链路调度单链路独立调用感知/通信/联合流程统一编排
数据契约指标命名不统一输入/输出/参考/差异 全量命名族
运行入口单脚本演示GUI、快速脚本、全量脚本三入口
验证体系人工口径验证静态检查 + 单测 + 三场景对标闭环

📊 性能指标(实测数据)

数据来源:run_quick_demo.mrun_full_demo.mrun_parity_benchmarks.m 最近一次实测输出。

场景基线本方案结论
快速演示场景工程目标:BER≤0.05,EVM≤-12 dBBER=0.031947,EVM=-15.780 dB达标
全量演示场景工程目标:BER≤0.02,EVM≤-20 dBBER=0.017337,EVM=-23.769 dB达标
默认对标场景一致性判据:相对偏差 ≤1%对标流程通过,ALL_PASS=true通过
高阶调制对标场景一致性判据:相对偏差 ≤1%对标流程通过,ALL_PASS=true通过

🎯 感知估计能力

感知链路覆盖距离、速度、角度与位置四类输出,并提供成像结果与误差统计。

参数配置性能
距离估计带宽 2.16 GHz,OFDM 频域处理绝对误差约 0.021 m
速度估计慢时间 FFT + 2D CA-CFAR绝对误差约 1.589 m/s
角度估计扫描角 -60:1:60 波束形成绝对误差约 0.000 deg

🖥️ 运行环境

项目面向 MATLAB 环境设计,可在常规开发机完成演示与测试流程。

  • 语言:MATLAB 2023 以上
  • 依赖:Communications Toolbox、基础绘图与数值函数、分子吸收数据文件

📁 项目结构

thz_isac/
 ├── src/                         # 核心源代码
 │   ├── sensing/                 # 感知链路与CFAR检测
 │   ├── comm/                    # 通信链路与指标统计
 │   └── channel/                 # 分子吸收与MIMO信道建模
 ├── tests/                       # 测试与检查脚本
 │   ├── test_all.m               # 单元测试总入口
 │   └── test_full_chain.m        # 联合流程完整性测试
 └── docs/                        # 工程文档目录
     ├── 算法文档.md              # 算法原理与公式推导
     └── 代码文档.md              # 代码结构与接口说明

📄 文档体系

文档体系覆盖“算法原理 + 代码实现 + 项目说明”三层信息,便于研究与工程同步推进。

📘 算法文档

说明感知链路、通信链路、信道建模与指标定义的完整公式推导。

docs/算法文档.md

📒 代码文档

说明入口脚本、模块职责、调用关系、数据结构契约与测试体系。

docs/代码文档.md

💻 核心代码展示

🔥 统一参数构建模块

该模块负责收敛关键参数并生成派生参数,作为全工程唯一配置入口。

cfg.general = struct();
 cfg.general.project_root = project_root;
 cfg.general.data_dir = fullfile(project_root, "data", "molecular_absorption");
 cfg.general.output_dir = fullfile(project_root, "outputs");
 cfg.general.verbose = true;
 cfg.general.random_seed = 20260320;
 cfg.general.scenario_name = "default";
 cfg.general.enable_parallel = false;cfg.signal = struct();
 cfg.signal.fc_hz = 252e9;
 cfg.signal.bandwidth_hz = 2.16e9;
 cfg.signal.waveform_type = "OFDM";
 cfg.signal.mod_order = 16;
 cfg.signal.num_subcarriers = 4096;
 cfg.signal.num_symbols = 2048;
 cfg.signal.cp_ratio = 1 / 4;
 cfg.signal.channel_coding = "Convolutional";
 cfg.signal.code_rate = "7/8";
 cfg.signal.equalizer = "MMSE";
 cfg.signal.num_pilots = 8;
 cfg.signal.guard_ratio = 0.04;cfg = merge_struct_recursive(cfg, user_input);
 cfg = derive_parameters(cfg);
 rng(cfg.general.random_seed, "twister");

🌟 感知链路主流程模块

该模块负责从回波立方体构建到目标参数估计的完整处理链路。

log_step(cfg, "感知链路进行距离-速度二维处理。");
 range_cube = ifft(ifftshift(signal_cube, 1), n_sc, 1);
 doppler_cube = fftshift(fft(range_cube, n_sym, 2), 2);
 rv_power = squeeze(sum(abs(doppler_cube) .^ 2, 3));
 rv_power = rv_power ./ max(rv_power(:) + eps);
 rv_db = to_db(rv_power, cfg.cfar.output_floor_db);
 ​
 log_step(cfg, "感知链路进行 2D CA-CFAR 检测。");
 [cfar_map_db, detection_mask] = apply_cfar2d_ca(rv_power, ...
     cfg.cfar.guard_size, cfg.cfar.training_size, cfg.cfar.pfa, cfg.cfar.output_floor_db);
 ​
 log_step(cfg, "感知链路进行距离-角度成像。");
 angle_grid = cfg.sensing.angle_scan_deg(:).';
 range_angle_power = zeros(n_sc, numel(angle_grid));
 range_doppler_slice = squeeze(doppler_cube(:, vel_idx, 1:n_virtual));
 ​
 for r_idx = 1:n_sc
     snapshot = range_doppler_slice(r_idx, :).';
     for a_idx = 1:numel(angle_grid)
         steering = exp(1j * pi * (0:(n_virtual - 1)).' * sind(angle_grid(a_idx))) / sqrt(n_virtual);
         range_angle_power(r_idx, a_idx) = abs(steering' * snapshot) .^ 2;
     end
 end
 ​
 sense_out.RngVelPowIncoInt = rv_db;
 sense_out.RngVelCFAR = cfar_map_db;
 sense_out.RngAngPow = range_angle_db;
 sense_out.RngEstimate = rng_est;
 sense_out.VelEstimate = vel_est;
 sense_out.AngEstimate = ang_est;
 sense_out.PosError = pos_error;

🚀 通信链路主流程模块

该模块负责编码调制、MIMO 传输均衡、解调译码与通信指标评估。

log_step(cfg, "通信链路进行编码与调制。");
 for stream_idx = 1:n_stream
     coded_len_need = numel(data_idx) * n_sym * bits_per_symbol;
     info_len = max(120, floor(coded_len_need * cfg.signal.code_rate_value));
     info_bits = randi([0, 1], info_len, 1);[coded_bits, code_meta] = channel_encode_bits(info_bits, cfg);
     coded_bits = local_expand_or_trim(coded_bits, coded_len_need);
     tx_symbols = map_bits_to_qam(coded_bits, mod_order);
     tx_symbols = local_expand_or_trim(tx_symbols, numel(data_idx) * n_sym);
     tx_symbols_mat = reshape(tx_symbols, numel(data_idx), n_sym);
 ​
     tx_grid(data_idx, :, stream_idx) = tx_symbols_mat;
 end
 ​
 log_step(cfg, "通信链路进行 MIMO 传输与均衡。");
 for sc_idx = 1:n_sc
     h_k = h_ue(:, :, sc_idx);
     if strcmpi(cfg.signal.equalizer, "MMSE")
         w_k = (h_k' * h_k + noise_var * eye(n_tx)) \ (h_k');
     else
         w_k = pinv(h_k);
     end
 end
 ​
 log_step(cfg, "通信链路进行解调与解码。");
 ber_avg = mean(ber_values);
 rms_evm_db = 20 * log10(mean(evm_values) + eps);
 se = n_stream * bits_per_symbol * cfg.signal.code_rate_value * (numel(data_idx) / n_sc);
 eff_rate = se * cfg.signal.bandwidth_hz;comm_out.BER = ber_avg;
 comm_out.rmsEVMdB = rms_evm_db;
 comm_out.SE = se;
 comm_out.effDateRate = eff_rate;

🎬 一键运行

run("run_quick_demo.m")
 run("run_full_demo.m")
 launch_thz_isac_gui

结果预览

运行后可得到感知三图、通信三图以及 MAT 结果文件,支持脚本与 GUI 双路径复核。 图示包括距离-速度图、CFAR 检测图、距离-角度图、发射接收星座图与 NLoS 时延响应图。

📸 演示图片预览

典型输出图覆盖感知与通信两大结果面板,便于直观核验链路行为。

  • 距离-速度成像图
  • 2D CA-CFAR 检测图
  • 距离-角度成像图
  • 发射与接收星座图
  • NLoS 时延域响应图

屏幕截图 2026-03-23 142535.png屏幕截图 2026-03-23 142601.pngFigure_1.png

🛒 获取方式

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

📚 参考文献

  1. F. C. De Abreu, C. M. de Lima, and R. D. Souza, "THz communications: Challenges and opportunities," IEEE Communications Surveys & Tutorials.
  2. R. Hadani et al., "Orthogonal Time Frequency Space Modulation," IEEE WCNC.
  3. W. Yi, Y. Liu, and A. Nallanathan, "Integrated sensing and communication in 6G," IEEE Open Journal of the Communications Society.
  4. H. Rohling, "Radar CFAR thresholding in clutter and multiple target situations," IEEE Transactions on Aerospace and Electronic Systems.
  5. S. M. Kay, Fundamentals of Statistical Signal Processing: Estimation Theory, Prentice Hall.