news 2026/10/5 9:16:34

毫米波雷达中频信号相位解析:从原理到测速测角与微动检测

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
毫米波雷达中频信号相位解析:从原理到测速测角与微动检测

毫米波雷达圈子里有个很有意思的现象:大家聊距离性能、聊点云密度、聊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.9mm,0.5mm的胸腔位移即可引起近乎半周期的相位旋转。于是生命体征检测的标准处理流程是:先做Range FFT找到胸腔所在距离门,再对这个距离门取出相位序列,然后做带通滤波分离呼吸和心跳频率。整个过程绕开了频率域的微弱信号问题,直接在相位域“收割”信号。

这就是为什么毫米波雷达在室内人员感知、健康监测、车载乘员检测等场景里能占据一席之地——相位这把精密卡尺功不可没。

4. 从相位角度看波束形成与MIMO虚拟阵列

4.1 数字波束形成的本质:把相位差“掰回”同相

相控阵波束扫描的相位计算,实际上就是通过人为补偿各阵元之间的相位差,让某一方向来的信号在各阵元上同相叠加,从而形成主瓣。

在数字域,这一操作可以写成:

( y(\theta) = \sum_{n=0}^{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,一发一收,带宽4GHz,chirp周期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雷达之路还会继续更新,下一篇打算聊“毫米波雷达标定与校准”,重点写天线延时校准、通道相位校准的实操流程和常见问题。有兴趣的朋友可以先做准备。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/5 9:16:34

GASF-CNN时序分类:一维数据转图像,卷积网络自动提取特征

简介:这是一份基于Python实现的GASF-CNN时序数据分类预测完整项目文档,面向具备一定编程基础的科研人员、数据科学家与工程师,旨在解决时序数据分类准确率低、特征工程依赖人工等问题。资源以docx格式打包,共1个文件,压…

作者头像 李华
网站建设 2026/10/5 9:12:44

YOLO室内家具数据集实战:2416张带标签图像训练全指南

简介:面向目标检测研究者与开发者的YOLO系列算法室内家具数据集,包含2416张已标注图像,标签采用标准YOLO格式(类别索引、归一化中心坐标与宽高),可直接用于YOLOv3/YOLOv4/YOLOv5等模型的训练与测试。数据集…

作者头像 李华
网站建设 2026/10/5 9:11:41

YOLOv5实战:957张三轮车标注数据实现违停识别

简介:面向采用YOLOv5进行机器视觉识别的开发者,这份已标注数据集子包聚焦非机动车违规停放场景,包含三轮车第一类(tricycle1)的九百五十七张图片及对应标注文件,适用于智慧城市与交通管理项目中的违规停放检…

作者头像 李华
网站建设 2026/10/5 9:11:38

手算电力系统潮流计算:3节点辐射状系统实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/5 9:10:44

AI编程需求模板:从零生成可运行网页的六维度指南

1. 为什么AI写的代码总是"看起来对,跑起来废" 先说一个我观察了很久的现象:身边不少朋友用AI写代码,第一轮对话感觉惊为天人,代码唰唰地出来,结构看着也挺像那么回事。但一旦把代码复制到编辑器里打开浏览器…

作者头像 李华
网站建设 2026/10/5 9:09:09

OpenLayers4地图遮罩实战:canvas绘制与矢量挖洞性能优化

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华