【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.
相关推荐
isyangli_blog1 小时前
OpenDayLight (Carbon 版本) 启动与组件安装
开发语言·php
vb2008111 小时前
FastAPI APIRouter
开发语言·python
Benszen1 小时前
KVM虚拟化解决方案
开发语言·perl
会编程的土豆1 小时前
Go 语言反射(Reflection)详解
开发语言·后端·golang
東雪木1 小时前
多线程与并发编程 专属复习笔记
java·开发语言·笔记·java面试
杨充2 小时前
1.3 浮点型数据设计灵魂
开发语言·python·算法
噜噜噜阿鲁~2 小时前
python学习笔记 | 11.3、面向对象高级编程-多重继承
java·开发语言
basketball6162 小时前
Go 语言从入门到进阶:4. 数组和MAP使用方法总结
开发语言·后端·golang
春生野草2 小时前
反射、Tomcat执行
java·开发语言
雪的季节3 小时前
企业级 Qt 全功能项目
开发语言·数据库·qt