【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.
相关推荐
lly2024062 小时前
HTML5 测验
开发语言
吴声子夜歌2 小时前
JavaScript——字符串和正则表达式
开发语言·javascript·正则表达式
林恒smileZAZ2 小时前
JavaScript this绑定规则:告别踩坑指南!
开发语言·javascript·ecmascript
2401_873204652 小时前
C++代码重构实战
开发语言·c++·算法
crossoverJie2 小时前
OpenAI 收购 Python 工具链 uv 和 Ruff
开发语言·人工智能·python·uv
ofoxcoding2 小时前
GPT-5.4 Mini vs Nano 怎么选?2026 实测对比,一张表说清楚
开发语言·gpt·ai·php
NGC_66112 小时前
深入理解 Java 线程池:从原理到实战
java·开发语言·python
xiaolang_8616_wjl2 小时前
c++游戏_寻宝猎人_开源
开发语言·c++
暮冬-  Gentle°2 小时前
C++中的策略模式应用
开发语言·c++·算法