THz ISAC 链路级仿真平台
面向太赫兹通感一体化的工程化仿真平台
统一参数体系驱动感知与通信协同评估
【THz ISAC】【链路级仿真】【感知通信一体】【工程验证平台】
📌 为什么选择
该项目面向太赫兹 MIMO ISAC 场景,覆盖从参数构建、链路执行到结果评估的完整流程。平台同时支持 GUI 与脚本入口,兼顾交互演示与批量实验。核心目标是让感知与通信在统一框架内实现可复现、可对标、可追踪。
| 痛点 | 方案 |
|---|---|
| 参数管理分散 | 统一配置构建器集中管理通用参数与信号参数 |
| 感知通信流程割裂 | 联合流程先感知后通信并提供感知辅助挂接 |
| 工具链依赖敏感 | 兼容层提供 random/unifrnd 最小替代实现 |
| 结果语义不统一 | 输出统一 *_input/*_output/*_ref/*_diff 命名族 |
| 验收口径不一致 | 提供快速演示、全量演示、静态检查与三场景对标脚本 |
🎯 核心价值
🔬 学术研究价值
该平台形成了可复现实验链路,适合用于通感一体化算法验证与指标分析。
- 统一信号模型框架
- 分子吸收信道建模
- 二维感知处理链路
- 通感耦合评估接口
💼 工程应用价值
该平台提供可直接运行的模块化代码结构,适合工程团队协作与持续交付。
- GUI 脚本双入口能力
- 模块边界清晰架构
- 自动化测试检查流程
- 标准化结果输出规范
⚡ 技术亮点
🌊 一体化架构与工程实现
| 特性 | 传统方案 | 本方案 |
|---|---|---|
| 参数管理 | 分散脚本配置 | 统一 build_thz_isac_config 参数域 |
| 链路调度 | 单链路独立调用 | 感知/通信/联合流程统一编排 |
| 数据契约 | 指标命名不统一 | 输入/输出/参考/差异 全量命名族 |
| 运行入口 | 单脚本演示 | GUI、快速脚本、全量脚本三入口 |
| 验证体系 | 人工口径验证 | 静态检查 + 单测 + 三场景对标闭环 |
📊 性能指标(实测数据)
数据来源:
run_quick_demo.m、run_full_demo.m、run_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 时延域响应图



🛒 获取方式
本文代码仅为核心片段,完整版工程已整理好。
📚 参考文献
- F. C. De Abreu, C. M. de Lima, and R. D. Souza, "THz communications: Challenges and opportunities," IEEE Communications Surveys & Tutorials.
- R. Hadani et al., "Orthogonal Time Frequency Space Modulation," IEEE WCNC.
- W. Yi, Y. Liu, and A. Nallanathan, "Integrated sensing and communication in 6G," IEEE Open Journal of the Communications Society.
- H. Rohling, "Radar CFAR thresholding in clutter and multiple target situations," IEEE Transactions on Aerospace and Electronic Systems.
- S. M. Kay, Fundamentals of Statistical Signal Processing: Estimation Theory, Prentice Hall.