
毫米波雷达圈子里有个很有意思的现象大家聊距离性能、聊点云密度、聊FFT谱峰都头头是道但一提到中频信号的相位往往就是一句“相位嘛不就是FFT之后的那个角度吗”带过。可真实项目里测速、测角、微动检测、生命体征提取全部建立在相位处理之上。换句话说相位才是毫米波雷达真正藏私房钱的地方。这篇是Xiaojie雷达之路系列里专门聊中频信号相位的一篇。我从中频信号怎么产生、相位信息藏在哪个环节讲起再展开相位在测距、测速、测角、MIMO虚拟阵列里具体扮演什么角色最后结合工程实战讲讲处理相位时踩过的坑——内容偏基础但绝对实用适合刚接触毫米波雷达的初学者也适合做了几年却对相位概念一知半解、想系统梳理一遍的工程师。1. 为什么中频信号的相位值得单独拎出来讲很多教材一上来就扔公式中频信号的频率与距离成正比、相位变化与速度相关、不同天线间的相位差对应角度。公式都对但实际调雷达时你会发现公式只是入场券真正的坑全在相位上。1.1 相位是距离、速度、角度三大测量的共同“货币”先看一张基础关系网。FMCW毫米波雷达发射线性调频连续波回波与发射信号混频后得到中频信号。中频信号的频率携带距离信息这是大多数人都知道的。但同一距离门内目标如果发生微小位移频率几乎不变幅度也几乎不变唯一发生明显变化的是相位。再往深处看目标匀速运动时相邻两个chirp在同一距离门上的相位差与速度成正比目标来自不同角度时相邻两根接收天线在同一时刻的相位差与角度正弦成正比。也就是说测距用频率测速和测角本质上都在用相位。想绕开相位做雷达信号处理等于想用一把只有长度刻度的尺子去量面积不是不行而是拐了远路。1.2 幅度谱是一张“压缩照片”相位才是“底片”做一次Range FFT之后工程上最常看的是幅度谱。幅度谱告诉你哪里有目标、目标有多强但目标在距离门内的亚毫米级位置、目标是靠近还是远离、目标来自哪个角度、目标是静止还是存在微动这些信息全部“压缩”在相位里。我做过一个对比实验同一个静止角反射器人为移动2毫米Range FFT幅度谱几乎看不出任何变化但同一距离门的相位偏移了大约几十度。这个实验直观说明了一件事——相位对微小位移的敏感度远超幅度。只要理解了这层敏感性后面所有的相位应用就都顺理成章。2. 中频信号里的相位到底从哪来、藏在哪里2.1 从发射信号到中频信号相位如何一步步传递FMCW雷达发射信号可以写成( s_{tx}(t) A_{tx} \cdot \exp(j(2\pi f_c t \pi S t^2 \phi_0)) )其中 ( f_c ) 是起始频率( S ) 是调频斜率( \phi_0 ) 是初始相位。这个信号经过传播延迟 ( \tau ) 后回到接收机( s_{rx}(t) A_{rx} \cdot \exp(j(2\pi f_c (t-\tau) \pi S (t-\tau)^2 \phi_0 \phi_{target})) )这里比发射信号多了一个 ( \phi_{target} )它代表目标散射特性引入的额外相移。混频之后中频信号近似为( s_{if}(t) A_{if} \cdot \exp(j(2\pi S \tau t 2\pi f_c \tau)) )化简到这里中频信号的频率 ( S\tau ) 对应距离而相位项 ( 2\pi f_c \tau ) 就是相位信息的核心来源。由于 ( f_c ) 高达几十GHz比如77GHz毫秒级的微小时延 ( \tau ) 变化在相位域会被放大成非常明显的相位差。这正是之后测微动、测速度的物理基础。2.2 相位对波程的“放大镜效应”用一组具体数字来说明。假设某雷达载频为77GHz对应波长约3.9mm。目标发生1mm的径向位移往返波程变化2mm对应相位变化( \Delta \phi \frac{2\pi \cdot 2\text{mm}}{3.9\text{mm}} \approx 1.61\pi \approx 290^\circ )290度的相位变化在IQ解调后可以非常清晰地被检测出来但同一位移对应的中频频率变化小到几乎无法分辨。所以相位最核心的价值在于它给了雷达一把远超频率分辨率的“精密卡尺”。这个特性适用于所有FMCW雷达的微小位移测量、振动检测和呼吸心跳感知。2.3 相位是复数信号里的“第二维度”数字域里中频信号经过ADC采样后通常会经过I/Q解调得到复数序列。实部是I路虚部是Q路而相位定义为 ( \arctan(Q/I) )。只取幅度、丢掉相位在数学上等效于只保留了复数的一半信息。我在带新人时反复强调一句话只要ADC出来的数据是I/Q复数形式就要把它当成一个二维向量看待。向量是有方向的这个“方向”就是相位。后续所有DOA估计、速度估计都是围绕这个方向在做文章。3. 相位是怎么扛起测速、测角、微动三座大山的3.1 速度测量两个chirp之间的相位差测速的原理很朴素。目标以径向速度 ( v ) 运动相邻两个chirp之间目标移动了 ( vT_c )往返波程变化 ( 2vT_c )对应的相位差为( \Delta \phi \frac{4\pi v T_c}{\lambda} )于是速度可以写成( v \frac{\lambda \Delta \phi}{4\pi T_c} )这里有几个关键点值得展开说。第一测速精度取决于相位差估计精度。相位差估计得越准速度就越准这也是高信噪比下速度测量精度可以达到毫米每秒量级的原因。第二速度存在模糊。相位差 ( \Delta \phi ) 天然有周期性当 ( \Delta \phi ) 超出 ( (-\pi, \pi] ) 范围时速度会出现模糊。最大不模糊速度满足( v_{max} \frac{\lambda}{4T_c} )想要提高最大不模糊速度就要减小chirp周期但减小chirp周期会降低速度分辨率这就是经典的设计权衡。实际项目中很多团队为了同时满足测速范围和速度分辨率采用多帧变周期方案而这一方案的核心其实就是对相位差的两次解读。第三DOA和测速在概念上是同构的。测速用的是时间维不同chirp的相位差测角用的是空间维不同天线的相位差。一旦理解这个“相位差即测量”的底层逻辑读任何雷达论文都会轻松不少。3.2 角度测量天线阵列的相位差当目标从角度 ( \theta ) 入射时相邻两根天线之间的波程差为 ( d\sin\theta )对应的相位差为( \Delta \phi_{ant} \frac{2\pi d \sin\theta}{\lambda} )角度估计的本质就是测出阵列天线之间的相位差再反算出 ( \theta )。这个公式解释了多个工程现象天线间距 ( d ) 越大角度分辨率越高但 ( d ) 超过 ( \lambda/2 ) 会引入栅瓣角度模糊。阵列天线越多得到的相位差样本越多DOA估计越稳定。为什么4D毫米波雷达能同时输出距离、速度、俯仰角和方位角本质上在俯仰维和方位维各排了一组天线各测一组相位差而已。3.3 微动检测相位是捕捉亚毫米级振动的唯一窗口呼吸和心跳引起的胸腔起伏大约只有1-2mm和0.2-0.5mm频率分别约为0.2-0.5Hz和1-1.7Hz。这么小的位移靠距离向FFT的幅度变化根本检测不到但靠相位却非常轻松。以77GHz雷达为例波长3.9mm0.5mm的胸腔位移即可引起近乎半周期的相位旋转。于是生命体征检测的标准处理流程是先做Range FFT找到胸腔所在距离门再对这个距离门取出相位序列然后做带通滤波分离呼吸和心跳频率。整个过程绕开了频率域的微弱信号问题直接在相位域“收割”信号。这就是为什么毫米波雷达在室内人员感知、健康监测、车载乘员检测等场景里能占据一席之地——相位这把精密卡尺功不可没。4. 从相位角度看波束形成与MIMO虚拟阵列4.1 数字波束形成的本质把相位差“掰回”同相相控阵波束扫描的相位计算实际上就是通过人为补偿各阵元之间的相位差让某一方向来的信号在各阵元上同相叠加从而形成主瓣。在数字域这一操作可以写成( y(\theta) \sum_{n0}^{N-1} x_n \cdot \exp(-j\frac{2\pi d n \sin\theta}{\lambda}) )这里的 ( \exp(-j \cdot ) ) 每一项就是一个相位补偿项。工程上把这个过程叫数字波束形成。看着像复指数运算实际做的是“逐个通道对齐相位”的工作。我调试相控阵天线时有个心得了解波束形成不能只停留在矩阵运算层面动手把每个通道的相位画成圆图或者极坐标图直观看到各通道相位被一步一步“掰”到同一个方向这才是真正理解了波束形成。否则你只知道调用capon或MUSIC算法一旦实测结果与仿真不符根本不知道从哪里排查。4.2 MIMO虚拟阵列用相位编码换来的等效孔径MIMO雷达能在不增加物理天线数量的情况下通过发射天线的正交波形形成一个更大的虚拟阵列。以TDM-MIMO为例发射天线轮流发射接收天线同时接收。第 ( m ) 个发射天线和第 ( n ) 个接收天线组成的虚拟阵元产生的相位除了包含目标角度信息 ( 2\pi d_{RX} n \sin\theta/\lambda )还叠加了发射天线位置带来的额外相位 ( 2\pi d_{TX} m \sin\theta/\lambda )。关键在于如果不对TDM模式下的发射天线进行相位补偿不同发射天线之间的时间偏移 ( \Delta t ) 会造成一个额外相位项( \Delta \phi_{TDM} 2\pi f_d \Delta t )这个相位在静止目标上没问题但对运动目标就会引入测角偏差。所以在实际工程里TDM-MIMO的测角必须先做速度相位补偿再做DOA估计。很多刚接触MIMO雷达的工程师发现“运动目标角度偏了”原因就在这里。4.3 相控阵波束扫描的快速计算技巧实际做波束扫描时很多人遍历角度 ( \theta )逐个计算补偿向量然后和阵列数据做内积。这样做在阵元少时没问题阵元多、扫描角度密时计算量会爆炸。我自己的习惯是预计算一份“角度-相位补偿表”把每个角度对应的各通道相位补偿值离线算好、存成查找表。在线处理时只需查表取复指数再和信号向量做点积计算量能降一个量级。对于嵌入式平台的实时波束扫描这个优化非常管用。5. 工程实战从复数信号到有效相位的完整链路5.1 为什么一上来就要关注I/Q不平衡中频信号经过ADC之后数字域里的相位提取依赖于I/Q两路的正交性。如果I路和Q路的增益不一致、相位不正交那么提取出的相位会出现系统性的周期性误差具体表现为在 ( 0° ) 和 ( 90° ) 附近的相位误差较小在 ( 45° ) 和 ( 135° ) 附近的误差较大。这种误差在单次相位测量中不明显但在连续相位追踪、微动检测中会形成周期性纹波。我实测过一些低成本的雷达模块I/Q幅度失配3%的情况下微动位移测量的误差可达毫米级对呼吸检测影响尤其明显。工程上可以先用已知距离的强反射体做一次校准计算I/Q两路的幅度比和正交性偏差然后在数字域做补偿。很多毫米波雷达芯片内部自带校准逻辑但如果用的是开发板或自研射频前端一定要自己补上这一步。5.2 FFT谱峰与相位提取窗函数带来的相位偏置提取相位最常用的方法是对Range FFT的谱峰位置取复数值的辐角。但直接这么做有一个隐藏问题FFT之前通常会加窗函数比如汉宁窗来抑制旁瓣而绝大多数窗函数会对谱峰相位引入一个固定的偏移。这个偏移量取决于窗函数的群延迟。对于对称窗偏移量与窗函数中心位置有关。若不修正相位序列会出现常数偏差。对于单次测量、只做角度差分的场景常数偏差会被抵消问题不大但如果是做绝对相位测量或跨帧相位连续性分析这个偏差会带来麻烦。我的做法是先不加窗做一次粗定位拿到目标所在距离门然后在这个距离门上不加窗直接取相位。如果必须加窗就提前计算窗函数的相位校正项。这里不能死记结论要结合自己用的FFT库做一次离线标定一劳永逸。5.3 相位解缠是绕不开的坎相位提取的结果天然处于 ( (-\pi, \pi] ) 区间而真实相位可能超过这个范围。直接使用会出现跳变从 ( \pi ) 跳到 ( -\pi )看起来像数据异常。处理手段是相位解缠。一维相位序列的解缠算法有很多最常用的是相邻两点差值检测如果相邻相位差超过 ( \pi )就加减 ( 2\pi ) 修正。但对噪声大的相位序列简单差分法容易把噪声误判成跳变导致错误累积。我踩过这个坑之后改用了一个更稳健的策略在做速度估计或微动检测时先对IQ复序列做共轭相乘即 ( x_n \cdot x_{n-1}^* )让输出直接就是相邻相位差的复指数形式再取辐角。这样做的好处是跳变从 ( (-\pi, \pi] ) 变成了 ( (-2\pi, 2\pi] )可以结合真实目标的物理运动范围排除二义性比直接对相位序列做差分稳得多。5.4 相位噪声近距离强反射体是隐形杀手毫米波雷达的相位噪声近端很强中频频率很低时泄漏的相位噪声会直接抬高噪声基底。这在车内乘员检测、近距离微动感知场景里特别明显驾驶员的强反射信号虽然不在目标距离门内但其相位噪声泄漏到邻近距离门造成距离门间的噪声耦合。解决思路有三个层级第一尽量选择相位噪声性能好的雷达芯片这是根源第二发射功率不要无脑拉满近距离场景适当降低发射功率反而能降低泄漏噪声第三在算法上使用MTI或去直流处理消除静止强反射体引起的固定泄漏分量。我在实际项目中经常看到团队纠结“为什么近距离信噪比反而差”最后查下来发射功率过高导致的相位噪声泄漏往往是主因。6. 实测案例分析一个微动目标检测的完整过程6.1 场景与设备测试环境普通办公室一张桌子桌面上放一个粘有小金属片的扬声器纸盆。雷达模块为77GHz一发一收带宽4GHzchirp周期200μs采样点数256。让扬声器播放一个30Hz的纯音纸盆振动幅度控制在亚毫米量级。这个场景模拟的是远距离微弱振动检测看相位能否把这种肉眼几乎不可见的振动“捞”出来。6.2 处理链路第一步采集原始IQ数据做Range FFT在距离维找到小金属片的距离门。由于金属片距离雷达很近反射很强谱峰非常明显。第二步取出该距离门的复数序列按chirp顺序排列形成一组随时间变化的复数值。此时幅度几乎不变但相位在持续旋转。第三步相邻chirp共轭相乘得到瞬时相位差序列。对这个序列做FFT频谱中清晰出现30Hz尖峰旁边还有一个较小的60Hz谐波纸盆振动非完全线性引起。整个过程中的关键瞬间在于如果只盯着Range FFT的幅度谱从头到尾都看不出任何异常但一转向相位处理振动信号就像从水底浮上来一样清晰可辨。6.3 从这个案例能提炼出什么这个实验用极简的硬件证明了几个结论相位灵敏度完全够用、相位处理链路是稳定可复现的、整个方法可以迁移到呼吸检测、心跳检测、结构振动监测等场景。同时也暴露了一个问题当目标振动幅值更小、噪声更大时相位噪声会主导误差。再往下优化就要考虑多帧相干积累、距离门加权融合等手段。整体上可以把相位处理当作一个独立的信号处理课题来对待而不是FFT的附属品。7. 处理相位时容易忽略的几个细节与个人建议7.1 距离门对齐相位提取的第一步也是最重要的一步很多人在做多帧相位提取时默认目标落在同一个距离门内直接按距离门索引取相位。但目标如果存在距离走动速度较快、积累时间较长目标会逐渐跨距离门移动。此时连续相位序列会混入距离门切换带来的相位突变。解决办法是在每帧Range FFT后先做峰值搜索以峰值位置为基准取相位必要时对距离维做插值。对于强目标、高信噪比场景可以直接使用抛物线插值或者频谱重心法让距离门定位精度提升到亚距离门级别。7.2 多径与杂波会污染相位室内环境下墙面、桌面、人体都是反射体多径信号会与目标信号叠加导致相位不再是单一目标相位而是多个信号的矢量合成。这种情况下提取出的相位会发生随机抖动严重时甚至完全失效。工程上缓解多径的手段有很多使用距离维加窗抑制远距离杂波、使用MIMO阵列做空间滤波、使用超分辨DOA算法分离多径角度。在室内生命体征检测中我一般建议先用静态杂波消除即减去长时间平均滤除固定背景反射再提取目标相位。7.3 不要盲目追求“更高精度”相位处理的优点是灵敏度高但灵敏度高也意味着对外界微扰更敏感。风扇吹动、桌面振动、天线罩形变都会引起相位抖动。所以在工程上要把相位处理与物理约束结合起来而不是纯靠数学去推。比如呼吸检测时可以设定一个合理的呼吸频率范围0.1-0.8Hz做带通滤波超出范围的相位变化一律视为噪声比如测角时可以结合目标速度变化范围限制相位模糊解。这些物理约束是算法能在现实环境中稳定运行的重要保障。7.4 调试工具链要提前备好相位处理和普通频谱分析不同必须依赖复数域的可视化工具。我建议在项目起步阶段就配置一套plot工具链能够画出IQ轨迹复数平面上随时间变化的点、相位时间序列、连续帧相位差分布。没有这套工具调试相位算法几乎等于盲人摸象。很多雷达芯片厂商直接给出点云例程却不提供底层IQ数据接口。真要做相位级开发一定要确认评估板或芯片是否开放了原始ADC数据或者至少是Range FFT复数输出。如果只有幅度输出相位算法无从谈起。8. 写在最后的一点建议回到开头的观点中频信号的相位不是FFT频谱里的“附属品”而是毫米波雷达测量精度的重要来源。测距靠频率测速靠时间维相位差测角靠空间维相位差微动检测靠距离门内的微相位变化——相位贯穿了雷达信号处理的始终。如果看完这篇文章你准备动手验证一下相位理论我最建议的第一步不是写代码而是先把雷达原始IQ数据导出来在电脑上画出第一个目标的IQ轨迹圆。当你亲眼看到强反射体在IQ平面上画出那个完美的圆、看到目标靠近时相位沿圆周旋转的方向、看到微动目标在圆上抖动的小幅摆动时你对“相位”这两个字的理解会比读一百篇公式推导都来得深刻。Xiaojie雷达之路还会继续更新下一篇打算聊“毫米波雷达标定与校准”重点写天线延时校准、通道相位校准的实操流程和常见问题。有兴趣的朋友可以先做准备。