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

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 dB BER=0.031947,EVM=-15.780 dB 达标
全量演示场景 工程目标:BER≤0.02,EVM≤-20 dB BER=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 时延域响应图

🛒 获取方式

本文代码仅为核心片段,完整版工程已整理好。

📚 参考文献

  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.
相关推荐
你怎么知道我是队长6 分钟前
IPv6 地址完全解析:从结构到实战
开发语言·php
Dovis(誓平步青云)21 分钟前
牛奶不能减成负数:冰箱库存的筛选、去重与不可变更新
android·java·开发语言
OPEN-F22 分钟前
Python进阶教程:算法与数据结构入门
开发语言·python
薛定猫AI33 分钟前
【技术干货】Claude Code多模型代理与反馈闭环:Python实现可验证的AI编程工作流
开发语言·python·ai编程
XR12345678834 分钟前
工厂车间无线网络怎么选?AGV 与复杂环境是分水岭
开发语言·php
zq_638940 分钟前
利用 MATLAB 调用 STK Object Model COM 显示雷达受干扰前后探测范围的变化
开发语言·matlab
大黄说说1 小时前
类型安全时代:PHP 8+ 的联合类型、交集类型与泛型(模板)最佳实践
开发语言·安全·php
小弥儿1 小时前
GPT Image 2 提示词库,把散落的生图提示词变成工程资产
开发语言·javascript·gpt·学习
空堂与归2 小时前
单机 Python 跑不动?Ray 分布式计算框架让 AI 训练提速 10 倍
开发语言·人工智能·python
JacksonMx2 小时前
Java 线程池:复用、Spring 管理、监控与线上故障排查全指南
开发语言·python