说明
频谱细化问题其实很早之前就想研究并整理一下了,车载雷达中我们似乎对这个话题并不太涉及(最多只是在测角时用补0 FFT的方法),想要了解这个话题的源头是很早之前的一次面试时面试官问我:有哪些提高测量精度的方法?并进而引申出了频谱细化。当然,提高雷达测量精度的方法有很多,频谱细化只是其中的一种思路。至于频谱细化的方法,我当时只回答出了补0 FFT(我在之前的博文中说过,我非雷达相关专业的科班出身,所以欠缺的实在很多啊)…,面试完后我搜了一下,才知道zoom FFT、chirp-Z变换这些名词和方法。我当时很努力地看了一通,但是没整明白,就搁置到现在了。
最近这两天又捡起来仔细看了看。不过我目前也不是理解得很透彻… 这篇博文并不是想完全把频谱细化这个话题掰扯清楚,只是作为一个总结,试图梳理和记录一下关于雷达测量精度和频谱细化这两个话题我现阶段的积累,方便后续如果再用到时可以及时捡起来并拓展补充。
Blog
20240131 本博文第一次撰写
目录
说明
目录
一、关于测量准确度与测量精度
二、关于频谱细化
三、FFT & 补0 FFT
四、FFT & zoom FFT
五、FFT & chirp-Z
六、频谱细化方法在车载雷达信号处理中的应用实践
七、总结
八、参考资料
九、本文代码
一、关于测量准确度与测量精度
这两名词很好理解,只是大家似乎常将其混为一谈(至少在车载雷达领域)。
先给其下定义:测量准确度衡量的是测量结果与真实值之间的差异,我们一般可以用测量均值与真实值之间的差值来量化。 可是测量精度的定义似乎有多种,第一种[1]是:测量精度衡量的是测量结果自身的离散程度(与真实值无关!)。我们可以用标准差来量化它。第二种[2]是:测量精度衡量的是测量结果与真值之间的离散程度,我们一般用均方根误差来量化它。
我们假设目标参数的真实值为y,雷达对该值多次测量的结果为:(x1、x2、x3、x4… xn),则按照前述定义,测量准确度A为:
(1-1)
第一种定义下的测量精度P1为:
(1-2)
第二种定义下的测量精度P2为:
(1-3)
这两种定义方法的差别在于:均方根用的是目标参数真值来衡量误差,而标准差用的是测量的均值。
【甚至也有用测量精度的第二种定义来指代测量准确度的… 这里暂且搁置对这些不同定义孰对孰错的讨论】
为更直观地理解前述概念,如下图[1]所示:
图1.1 测量准确度与测量精度的直观效果对比图
假定上图中的小圆点为测量值,同心圆环的圆心为真实值。则上图中,图(a)表示测量准确度高,但是测量精度很差(低);图(b)表示测量准确度很差(低),测量精度很高(不过在第二种测量精度的定义下,该图下的测量精度也很差);而图(c)所示的测量同时具备很高的测量准确度和测量精度。不难理解的是:1.在实际工程应用中,我们希望这两者都很高(对应两者的值越小越好); 2.这两参数可能会受到一些共同因素的影响(这个我们后面讨论),但是如果我们采信第一种对测量精度的定义,这两参数之间是相互独立的。
测量准确度的英文单词为:Accuracy,测量精度的英文单词为:Precision。前面说在车载雷达领域这两参数时常被混为一谈,可以从下面举例里得到印证:
图1.2 大陆ARS408雷达产品参数手册-中文版(有误)
图1.3 大陆ARS408雷达产品参数手册-英文版(正确)
图1.4 国内某雷达厂家在其官网上对其前雷达产品的性能参数介绍
车载雷达性能参数的三个核心指标是测距、测速和测角,更具体地,应该是指其分辨率和Accuracy。但是,不管是从上面的产品手册的参数介绍、官网的介绍上,还是我身边大家的交流上,我们往往会把Accuracy说成是精度:可是从精度的定义(测量的标准差或均方根值)来看,精度哪还有正负啊?
定义不明、指代不明似乎是前面说的我们常常混淆的主要原因。
前文对测量准确度和测量精度的概念进行了介绍,并指出了一个似乎是我们约定俗成的错误(名词创造出来就是为了大家交流的,如果其偏离的本意,但是大家都默认了这种偏离而并不影响交流,似乎也没有什么值得细说…)。这里再简单聊一聊对于车载雷达,有哪些因素会影响测量的准确度和精度。
雷达通过收发电磁波、处理回波中的信息来获得目标的距离、速度和角度,那么在这整个收发链路以及处理过程中的每个环节都会影响测量的结果:比如最常见但无法避免的噪声、外界的干扰信号、信号的多径效应、系统是否校准(校准背后的诸多原因:车载毫米波雷达的校准问题(1)-CSDN博客)、电磁波的衰减、目标的散射特性、雷达的系统参数所决定的雷达的测量分辨率等等。总之,有太多的因素会影响雷达测量的性能参数(由此可见要做好一个雷达系统如何的不容易…),当然,前面说的都是很底层(本质)的影响因素,我们可以用诸多更上层的参数来量化或者说代表这些底层因素,比如常见的:信噪比 SNR,我们单独拎出SNR,看看这个参数对于两者的影响。
下图[1]中,(a)为SNR = 20dB下,对同一延时的目标回波做匹配滤波,并进行10000次蒙特卡罗实验得到的目标回波峰值偏移真实值的累积结果图。(b)为不同SNR下的测量精度。(这两图我没有仿真,不过应该比较简单,读者可以参考我之前的博文进行实践:关于蒙特卡罗方法及其在信号处理中的应用-CSDN博客)
图1.5 SNR对于雷达测量的影响-仿真结果图
在文[1]中,作者还做了不同SNR下测角的仿真:
图1.6 不同SNR下角度测量结果-仿真结果图
目标在0°,图中的中心位置(横坐标为0)对应测量结果的均值,左图中SNR为30dB,右图为10dB。
从前述两个仿真结果图我们可以得到如下有益的结论:1.SNR其实不会影响测量准确度;2.测量精度会随着SNR的增加而提高(数值减小),第二点与[2]中给出的定义和公式是吻合的(注意:这里公式是针对比较理想的情况,没有考虑诸如干扰、校准等情况):
图1.7 参考资料[2]中给出的测量精度的定义以及测量精度公式
影响测量准确度的因素主是分辨率、以及雷达是否做好校准:这是不难理解的:如果没有做校准,那么测量的结果自然会产生偏差,且这种偏差应该是固定(方向)的,雷达的测量准确度自然会低。 而分辨率越高可以理解成刻度间隔越小,因为我们只能取刻度值上的值,而其是非连续的,目标的最终测量结果会落在与其真实值最近的刻度上,那么自然是刻度间隔越小准确度越高。(同理,如果我们采信第二种测量精度的定义,校准以及分辨率的提高同样也会提高测量精度)。
我们都知道,车载雷达的距离、速度、角度分辨率在雷达系统参数确定了的前提下,其分辨率也就被确定下来了。那么有没有什么方法可以进一步提高其分辨率进而提高测量的准确度&精度?(当然,我们有诸多超分辨的方法来提高角度分辨率)。或者说在即便不提高分辨率但也能提高测量准确度&精度?:频谱细化是我们可以采用的手段之一。
【注:前面这段话是一个引子… 后文将谈论的频谱细化这个话题与车载雷达中提高分辨率/精度的方法相关性不大,或者说我们几乎不会用诸如zoom FFT/chirp-Z等方法来提高雷达的测量精度(不过也有这样做的,感兴趣的读者可以试试!)。频谱细化是有诸多落地场景的,本文的话题和文章标题并不局限于车载雷达领域。】
二、关于频谱细化
频谱细化是指对信号频谱中的某一频段进行局部放大,增加该局部频段内的谱线密度,从而实现更高的量测精度(和分辨率,分辨率似乎不会提高,不过要看和谁比较了…)。
我们知道FFT下的频率分辨率只取决于采样时间:
(2-1)
式中,fs为采样率,N为采样点数,Ts为采样时间。提高分辨率最直接的方法也在上面公式里了:比如可以在保持采样点数不变的前提下降低采样率、可以在保持采样率不变的前提下增加采样点数、或者两者都变,但须使得采样率和采样点数的比值变小。总之就是:要提高分辨率就得增加采样时长!
那么有没有方法在不增加采样时长的基础上提高分辨率?: 有,但是需要牺牲别的。后文Zoom FFT(ZFFT)、chirpZ(CZT)是常见的两种方法,这两种方法都是以增加计算复杂度、牺牲观测范围为代价获得的局部谱线密度(分辨率)的提高。从更广泛的角度来说,补0 FFT应该也算是一种频谱细化的方法(只要我们将观察范围内的刻度间隔降低了就算是频谱细化。不过补0-FFT是把整个观测范围内的谱线密度都提高的,它并没有提高频率分辨率!)。
这几种方法都会对测量准确度&精度的提高带来帮助。后文分别给出了各方法与FFT的频域结果对比,相关的仿真代码见第九章的链接。
三、FFT & 补0 FFT
FFT及其原理就不多说了,网上的资料有很多,这里直接给出仿真的结果。本次仿真的参数设计列表如下:
表3.1 仿真参数列表
参数 | 值 |
信号频点(六个目标,对应三组,进行对比) | 40Hz、44Hz、100Hz、101.5Hz、160Hz、161Hz |
采样率 | 400Hz |
采样点数 | 256 |
噪声 | 加SNR为20dB的高斯白噪声 |
补0点数(末尾补0) | 4*256 |
上述参数设计下,可以得到采样时间Ts为:256/400 = 0.64s,对应频率分辨率为:1.5625Hz。得到时域&频域结果如下:
图3.1 时域仿真结果图
图3.2 两种处理方式下的频域结果
如前所述,上述参数设计下理论的频率分辨率为1.5625Hz。所以可以看到两种处理方式下都完成了对40Hz与44Hz两个频点的分离(分辨)。而160Hz和161Hz其间隔小于频率分辨率,所以两种处理方法下都无能为力(补0-FFT没法提高分辨率)。100Hz与101.5Hz这两个频点其间隔接近频率分辨率,直接FFT下频谱间隔为1.5625Hz,大于两目标频点的频率差,这两个频点自然会藏在了一个峰下,而补0后FTT频谱更细化(变成:400/256/5 = 0.3125Hz),所以我们是有可能分辨出两个峰的(这并不说明补0后FFT可以提高分辨率,不然前面间隔为1Hz的两个频点它应该也能分辨出来才对)。
除此之外,从所标注的40Hz与44Hz两种方法下的测量结果来看,补0后的测量准确度和精度应该是更优的!为进一步验证该点,这里设计单频点进行蒙特卡罗仿真:(单频点频率为100Hz,其余参数与前面一致)
图3.3 单频点下两种处理方式下的频域结果对比
可以看到补0后FFT的测量结果更接近真值。不过不同SNR下每次蒙特卡罗仿真所得到的频点没有变化(因为所加的噪声并没有使得目标频点在频率维产生漂移?这和博文关于蒙特卡罗方法及其在信号处理中的应用 CSDN博客中的测角不一样)…:
图3.4 蒙特卡罗仿真结果
补0后FFT的测量结果会更准确、精度也更高!(后面两章中的仿真将不再引入蒙特卡罗仿真。)
四、FFT & zoom FFT
在前文说过,Zoom FFT(ZFFT)和chirpZ(CZT)背后的思路是一样的:这两种方法都是以增加计算复杂度、牺牲观测范围为代价获得的局部谱线密度(分辨率)的提高。Zoom FFT背后的原理,以及其为什么提高了局部的分辨率,读者可以参考资料[3]和[4]。
Zoom FFT经典的处理流程如下:
图4.1 典型的Zoom-FFT处理流程
对其做个简单说明(建议对照代码进行理解): 对于待分析的信号,我们首先设置细化区间、细化倍数、中心频率等参数,所谓的细化区间就是我们想要观察&放大的区间,这里假定为[f1 f2],细化倍数对应我们后续降采样的倍数,这里假定为D,(后续降采样过程中我们是通过在时域数据上进行等间隔抽取来实现的:不难理解的是,该操作下等价于降低了采样率),随后我们基于设置的中心频率,这里假定为fo(一般该值会设置为细化区间频段的中心:fo = (f1+f2)/2),将时域信号的零频点频移至该中心频率处,此时,我们关注的频段变成:[-(f2-f1)/2 (f2-f1)/2]。经过FFT处理后,所谓的滤波处理是指我们将该频段外的数据进行滤除,方法是:我们只拿出(截取)前述频段对应的频域数据,并对这截取的频段数据进行IFFT回到时域。之后我们对该滤波后的时域数据基于细化倍数进行降采样,最后再进行FFT处理得到细化后的我们想要观察的频率区间。
仿真的参数列表如下:
表4.1 仿真参数列表
参数 | 值 |
信号频点 | 20Hz、24Hz、40Hz、40.2Hz |
采样率 | 200Hz |
采样点数 | 1024 |
FFT点数(FFT点数少于采样点数) | 256 |
噪声 | 加SNR为20dB的高斯白噪声 |
细化倍数 | 50 |
细化区间 | [38Hz 42Hz] |
中心频率 | 40Hz |
备注: 直接FFT处理的点数是256。 在zoom-FFT处理过程中第一处的FFT点数等于采样点数(也即信号点数,我们是对全部的输入信号进行频移处理),第二次的FFT点数可以等于采样点数,或等于FFT点数(后文的仿真中选择该值)。
前述参数设计下,得到的结果如下:
图4.2 时域结果
图4.3 FFT & ZFFT两种处理方法下的频域结果
FFT的点数设置为256点,则直接FFT下对应的频率分辨率为:200/256 = 0.78Hz,所以间隔为4Hz的20Hz和24Hz可以清晰分开,但是间隔为0.2Hz的40Hz和40.2Hz就无法分开。在对[38Hz 42Hz]区间进行zoom-FFT细化处理后,这两个频点可以被分开!(不过其分辨率的提高并不会到所设置的细化倍数那样高:变成原来的1/50,zoom-FFT所能提供的分辨率仍然还是取决于在滤波过程中我们实际截取的点数M! 其值应该近似等于:fs/D/M,fs为输入信号的采样频率,D为细化倍数,M为滤波时我们所截取的点数。)
但是和[4]中所说的那样,本质上zoom-FFT其实并没有提高分辨率,它只是做了频谱细化而已。读者如果细心一点会发现:我们前述zoom-FFT的操作中,实际上用满了1024个点信号区间的信息,但是我们去做直接基于FFT的处理时用的是256个点的FFT…。(读者也可以基于提供的代码去做FFT点数与采样点数相等的尝试,此时处理后的效果其实有点类似补0后FFT的处理。)
但是Zoom-FFT处理后对测量准确度和精度的提高是显而易见的。
五、FFT & chirp-Z
Chirp-Z变换是离散傅里叶变换的一般化,有关原理读者可以参考资料[5]和[6]。Matlab有自带的函数来实现该变换操作:
y = czt(x,m,w,a); x为输入信号; m为信号长度; w为采样间隔(螺旋轮廓点之间的比值);a为细化区间的起点。更具体和准确的读者可以进入matlab该函数的帮助界面查看,也可以进入czt函数内部查看其源代码与实现。本章只单纯使用该函数工具。
仿真的参数设计如下:
表5.1 仿真参数列表
参数 | 值 |
信号频点 | 20Hz、24Hz、40Hz、40.2Hz |
采样率 | 200Hz |
采样点数 | 1024 |
FFT点数(FFT点数少于采样点数) | 1024 |
噪声 | 加SNR为20dB的高斯白噪声 |
细化区间 | [38Hz 42Hz] |
得到的仿真结果如下:
图5.1 时域结果
图5.2 FFT & chirp-Z两种处理方法下的频域结果
这里可以做的分析与第四章类似。总之,可以得到的有益结论是:显而易见,chirp-Z变换是可以提高测量的准确度和精度的!
六、频谱细化方法在车载雷达信号处理中的应用实践
后续有机会再试试吧。
七、总结
本文梳理了雷达信号处理中的测量精度、准确度以及频谱细化的问题,简单探讨了它们三者之间的关系,给出了频谱细化的三种主要手段:补0 FFT、zoom FFT以及chirp-Z变换的介绍及其与直接FFT处理下的结果对比,仿真代码见第九章链接,同时给出了一些比较有料的参考资料。本文的内容不算深入,后续有机会再拓展补充。 【新建雷达成像专栏,欢迎关注订阅! 这篇文章也同时录入该专栏,作为该专栏的第一篇文章】
八、参考资料
[1] Blair, William Dale, Mark A. Richards and David A. Long. “Radar Measurements.” (2010).
[2] 陈伯孝.《现代雷达系统分析与设计》[J].西安电子科技大学学报, 2012(06):9-9.DOI:CNKI:SUN:XDKD.0.2012-06-001.
[3] 频谱细化-----Zoom-FFT算法介绍及MATLAB实现-CSDN博客
[4] 辨析改善频谱分辨率问题与栅栏效应——补零、插值、Zoom-FFT算法的影响(附Matlab仿真) - 知乎 (zhihu.com)
[5] 频谱细化-----CZT算法介绍及MATLAB实现-CSDN博客
[6] 深入Chirp-Z变换 - 知乎 (zhihu.com)
九、本文代码
信号处理中的测量精度与频谱细化问题及其仿真-博文对应的代码资源-CSDN文库