做双功能雷达与通信系统DFRC仿真这个题目我前前后后大概折腾了三周。最开始只是在论文里看到“雷达通信一体化”这个概念觉得无非就是把雷达波形和通信波形放在一起发出去真上手才发现里面门道不少——特别是波束成形这块雷达要盯住目标方向通信要把信息送到用户方向两个波束在同一个阵列上怎么共存、怎么权衡直接决定了系统能不能用。这篇博文从项目建模、算法选型、Matlab实现到踩坑记录完整梳理一遍整个仿真流程。适合正在做雷达通信一体化课题的学生也适合想快速搭建DFRC验证平台的工程师参考。1. 项目背景与整体设计思路1.1 为什么需要双功能雷达与通信系统传统雷达和通信系统各自占用独立的频段、独立的硬件平台。车载雷达工作在毫米波频段车联网通信在另一套频段上无人机监管雷达和遥测链路也是两套设备。这在硬件成本、频谱资源、电磁兼容三个维度上都存在浪费。双功能雷达与通信系统Dual-Function Radar-CommunicationDFRC的核心思路是让同一套阵列天线、同一个发射机同时完成目标探测和信息传输。雷达回波用来测距、测速、测角发射信号中嵌入的通信数据被通信接收机解调出来两者互不干扰或尽量少干扰。仿真层面的意义在于可以在算法验证阶段快速评估波束成形的性能边界目标方向增益、通信方向增益、干扰抑制能力、误码率表现这些指标在真实硬件上测试成本高、周期长Matlab仿真用一台普通电脑就能跑出一组有参考价值的数据。1.2 系统组成与仿真框架整个仿真系统可以拆成五个模块模块功能核心处理发射端信号生成产生雷达探测波形与通信数据流的叠加信号线性调频信号、QPSK/16QAM调制、功率分配阵列波束成形将发射信号加权到各阵元形成空间方向图波束权重计算、多波束联合优化信道与目标回波模拟自由空间传播、目标反射、多普勒效应时延、衰减、多普勒频移、加性噪声接收端雷达处理从回波中提取目标距离、速度、角度匹配滤波、恒虚警检测、DOA估计通信接收处理从直达波信号中解调出通信数据信道均衡、解调、误码率统计我在搭建框架时采用的是分模块设计每个模块独立成脚本或函数主程序只负责串联调用。这样后期换波形、换波束成形算法、换调制方式都不需要动整体结构。1.3 为什么选择Matlab作为仿真平台Matlab在阵列信号处理领域有两个优势是其他语言很难替代的一是Phased Array System Toolbox提供了完整的相控阵仿真原语包括阵列对象、波束成形器、信号传播模型二是矩阵运算的向量化写法让复杂的矩阵计算——比如协方差矩阵求逆、矩阵求逆、特征值分解——都变成几行代码的事。Python也能做但需要自己拼numpy、scipy、plotly这些库建模周期明显更长。对于DFRC这种算法迭代频繁的仿真任务Matlab的开发效率是实实在在的。2. 信号模型与系统参数设计2.1 阵列与发射信号建模仿真采用均匀线阵Uniform Linear ArrayULAN个阵元等间距排列阵元间距取半波长。半波长的选择有讲究间距大于半波长会出现栅瓣导致方向图在多处出现高增益目标方向和通信方向容易混淆间距小于半波长虽然不出现栅瓣但阵列孔径变小波束变宽角度分辨率下降。N 16; % 阵元数量 lambda 3e8/24e9; % 工作频率24GHz对应的波长 d lambda/2; % 阵元间距 array phased.ULA(NumElements, N, ElementSpacing, d);发射信号采用叠加设计一路是线性调频LFM雷达探测波带宽B、脉冲宽度Tp负责测距和测速另一路是QPSK调制的通信数据流负责传输信息。两路信号在发射前按功率分配比α叠加α在0到1之间。α越大雷达探测性能越好通信误码率越高α越小通信质量越好雷达检测概率下降。这个权衡是整个系统设计的核心矛盾之一。2.2 功率分配与波形叠加alpha 0.8; % 雷达信号功率占比 s_radar radarWaveform(); % LFM信号 s_comm qpskMod(data); % QPSK数据符号 s_transmit sqrt(alpha)*s_radar sqrt(1-alpha)*s_comm;功率分配采用幅度加权的方式实现。需要注意的是两路信号叠加后峰值功率会受相位影响出现波动如果直接归一化会导致实际发射功率不稳定。我在实现中先分别对两路信号做归一化再按功率系数叠加最后整体归一化到发射功率约束下。2.3 信道与目标回波模型目标回波经过双程传播包含时延、衰减和多普勒频移。自由空间传播衰减因子是距离的平方双程则四次方衰减后的回波幅度非常小仿真中需要通过信噪比设置来控制接收端处理难度。target_pos [2000; 0; 0]; % 目标位置距离2km target_vel [-30; 0; 0]; % 目标径向速度30m/s channel phased.FreeSpace(PropagationSpeed, 3e8, ... OperatingFrequency, 24e9, TwoWayPropagation, true);通信用户接收的是直达波单程传播衰减信噪比通常远高于雷达回波这在实际系统中是合理设定——雷达需要探测远距离小目标通信用户一般在较近范围内。3. 波束成形算法原理与Matlab实现3.1 传统波束成形到自适应波束成形传统延迟-相加波束成形的核心是对各阵元接收信号做相位补偿使目标方向的信号同相叠加其他方向的信号相互抵消。对均匀线阵常规波束形成权重向量为steering_vector exp(-1j*2*pi*d/lambda * (0:N-1) * cos(theta));常规波束成形的问题在于旁瓣电平较高-13dB左右且无法在某个特定方向主动形成零陷来抑制干扰。在DFRC场景里雷达波束需要尽可能抑制通信方向的能量泄漏这就需要自适应波束成形。MVDR最小方差无失真响应波束成形通过约束目标方向增益为1同时最小化输出功率自动在强干扰方向形成零陷。Matlab中实现MVDR有两种方式一是直接用phased.MVDRBeamformer对象二是手动计算权重向量。%% 手动计算MVDR权重 R receivedSignal * receivedSignal / numSnapshots; % 协方差矩阵 steer_target exp(-1j*2*pi*d/lambda * (0:N-1) * cos(theta_target)); w_mvdr (R \ steer_target) / (steer_target / R * steer_target);3.2 DFRC场景下的多波束联合设计DFRC系统的波束成形不能简单套用MVDR因为通信信号本身就是系统要发送的“信息载体”不是纯干扰。雷达波束在通信方向形成零陷会同时把通信信号的能量也陷掉了——这等于自己把自己的通信链路掐断。实际工程中常用两种方案方案一是时分/频分方式雷达脉冲间歇的“通信间隙”里用单独的通信波束发送数据雷达探测时使用雷达波束。这种方案实现简单但牺牲了时间资源。方案二是空间联合设计将通信用户方向视为“受约束方向”雷达波束在此方向保留一定增益而不是零陷同时通信波束主瓣对准用户方向。权重通过以下优化问题求解min ||w_r - w_ref||^2 s.t. w_r * steer_comm g_comm % 通信方向增益约束 w_r * steer_radar g_radar % 雷达方向增益约束这个二次规划问题可以用CVX工具箱求解也可以手动用拉格朗日乘子法计算闭式解。对于教学演示来说手动实现更有助于理解约束的本质。3.3 波束成形核心代码%% DFRC多波束联合优化拉格朗日乘子法 A [steer_radar; steer_comm]; % 约束矩阵 g [1; 0.3]; % 目标增益约束 w_opt A * (A * A)^(-1) * g; % 最小范数解这个最小范数解的含义是在所有满足约束的权重中选择范数最小的一组等价于在保证雷达主瓣增益和通信方向一定增益的前提下最小化对其他方向的综合增益。计算量小不需要迭代优化适合在仿真循环中快速调用。3.4 方向图验证波束成形算法写完后的第一件事是画发射方向图。以目标方向60°、通信用户方向30°为例期望的结果是60°方向主瓣增益最高归一化到0dB30°方向保留约-10dB到-5dB的增益其他方向尽量压低。如果通信方向增益太高通信信号会反射到雷达接收机里形成自干扰如果太低通信用户解调困难。这个增益值就是系统设计中的可调参数需要根据实际场景反复实验。4. 完整仿真流程与结果分析4.1 仿真场景参数设定演示场景参数如下参数数值说明工作频率24 GHz毫米波频段阵元数16均匀线阵阵元间距半波长避免栅瓣目标角度60°雷达探测方位用户角度30°通信接收方位目标距离2000 m初始距离目标速度30 m/s径向速度脉冲宽度10 μsLFM信号脉宽信号带宽50 MHzLFM扫频带宽调制方式QPSK通信数据调制4.2 仿真主流程1. 生成LFM雷达波形和QPSK通信数据按功率分配叠加 2. 根据目标角度和用户角度计算导向矢量 3. 通过LCMV/拉格朗日求解波束权重 4. 波束成形后发射信号经过自由空间传播到目标 5. 目标反射回波叠加多普勒频移和噪声 6. 接收端匹配滤波提取目标距离和速度 7. 通信接收机对直达波信号解调统计误码率 8. 改变SNR重复运行绘制性能曲线4.3 雷达目标检测结果匹配滤波后输出的距离-多普勒谱如图代码输出截图所示目标距离和速度的估计值如下参数真实值估计值误差距离2000 m2001 m0.05%速度30 m/s29.8 m/s0.67%角度60°60.3°0.3°信噪比降到-5dB时距离估计误差仍在10米以内角度误差约1°说明波束成形在低信噪比下保持了较好的雷达探测能力。需要说明的是这是单脉冲结果实际系统通过多次相干积累可以把误差进一步压低。4.4 通信误码率性能通信链路误码率随信噪比变化的曲线呈现典型QPSK特性10dB信噪比时误码率已低于1e-3。对比功率分配系数α的影响可以看出α0.9时通信误码率整体高于α0.6的情况这正是雷达性能与通信性能权衡的直接体现。实际做实验时应该有意识地跑多组α值绘制组合性能曲线。如果论文中用可以把α作为横轴雷达方向增益和通信误码率做成双纵轴图直观展示帕累托前沿。4.5 波束成形方向图分析发射方向图仿真结果需要关注三个指标主瓣增益、指向精度、旁瓣电平。方向图在60°方向形成主瓣30°方向有约-8dB增益。旁瓣电平在目标方向附近低于-15dB没有出现明显栅瓣说明阵元间距取值合理。如果旁瓣偏高一个实用技巧是给约束优化问题增加旁瓣区域增益的上限约束或者对权重加锥化窗函数比如切比雪夫窗加权。代价是主瓣会略微展宽角度分辨率下降这个权衡要结合具体需求判断。5. 仿真中的常见问题与调试心得5.1 方向图出现栅瓣或高旁瓣方向图异常最常见的原因是阵元间距超过半波长这是设计阶段的问题代公式算一下就可以提前规避。另一个容易被忽略的原因是指令中角度范围设置过宽导致绘制方向图时角度分辨率不足看起来像栅瓣。实际上用1°间隔重画就能确认。还有一种情况波束权重协方差矩阵出现病态导致方向图严重畸变。这通常是因为快拍数太少协方差矩阵估计不准确。解决方法是在计算协方差时增加对角加载量矩阵加上一个小倍数的单位阵可以显著提升数值稳定性。5.2 通信误码率居高不下通信误码率高先不要急着怪信道按顺序排查第一步检查解调链路有没有相位模糊QPSK的四个星座点需要正确去模糊第二步检查通信信号和雷达信号叠加后功率有没有异常第三步检查波束权重是否正确对准用户方向。我在调试中遇到过一次很奇怪的问题通信方向增益正常但误码率一直在0.4左右徘徊。最后发现是发射端的归一化逻辑写错了叠加后信号整体缩放导致通信分量功率被压低了十几个dB。这类问题靠看波形、看星座图比看误码率数字更容易定位。5.3 仿真运行速度优化系统级仿真涉及多次脉冲重复周期内的信号传播计算如果目标距离远、脉冲数多循环嵌套会让仿真速度慢得让人崩溃。三个优化技巧实测有效第一用向量化替换循环。自由空间传播、加噪声这类操作尽量整矩阵处理不要一个样本点一个样本点循环。第二合理设置最小脉冲数匹配滤波处理需要的脉冲数不是越多越好要看多普勒分辨率需求。第三减少不必要的绘图操作方向图只在最后输出时绘制避免每次循环都刷新图像。5.4 雷达与通信性能平衡的调节手段系统设计中有一个核心参数调节清单建议做成表格贴在代码旁边调节手段雷达影响通信影响适用场景增大α雷达功率占比检测距离变远误码率上升远距离探测优先增大通信方向约束增益主瓣增益略降通信余量增大通信可靠优先增加阵元数波束更窄分辨率提高通信增益同样提高硬件条件允许时增加带宽距离分辨率提高通信速率更高频谱资源充足时个人实操体会做完这个仿真我最大的感受是DFRC系统的难点不在雷达或通信单侧而在权衡。雷达波束和通信波束在同一个阵列上打架谁能抢占波束增益谁就主导了方向图——这不是单纯调一个参数能解决的问题而是需要从波形设计、功率分配、波束约束三个层面同时入手。最后分享一个小技巧调试波束成形算法时把发射方向图和接收方向图分开画先确认发射端能形成期望的波束覆盖再检查接收端回波处理流程。两个方向图叠在一起看如果某个问题出现在中间环节比如通道不对齐、相位参考点选择错误很难快速定位分开之后问题模块一目了然。这套调试思路换成OFDM波形、换成平面阵列、换成其他自适应算法同样适用。
