说明
在前几天写的博文[1]: 关于多脉冲(相干&非相干)积累问题探讨--仿真和实测数据实践-CSDN博客中,我以为关于该话题想要探讨的东西可以结束了。但是这几天在更深入的实践中又发现了一个很有意思的现象,于是新写这篇文章做补充。
本文想要探讨的主要内容是:相干积累下SNR的增益是否有上限?:SNR会随着相干积累脉冲数N的增加而线性地(之前我们得到的结论是N^2倍)一直增长吗?
Blog
2024.4.25 本文第一次写作
目录
一、话题回顾&问题明确
在[1]中,我们得到的结论是:多脉冲相干积累下,目标信号功率的提升是N^2倍、噪声功率的提升是N倍、SNR的提升是N倍,N是脉冲个数。更具体的探讨请参考资料[1]。
本文想要探讨的问题为:在脉冲数“无限地”增长时,前述结论是否还满足?或者说是否存在某个阈值,当超过该阈值时,SNR将不会继续增长下去,如果存在,原因是什么?
当然,结论是存在(于是才有的本博文):存在某个阈值SNR,当超过该值时(或者说当脉冲积累的数据超过该SNR对应的数量时),SNR将不会随着脉冲积累数的增加而增加! 不过这里的描述是有一些小问题的,我在后文再做解释。
和[1]一样,本文将从仿真以及实测数据两个角度对该问题进行探讨。
二、仿真实验
2.1 仿真实验方案&参数设计
因为实验想要验证的是:是否存在SNR的上限,所以在设置单脉冲下的目标SNR时是尽量往高了预设。(关于单脉冲下淹没在噪底的信号是否会通过相干积累的方法重新高于噪底,我已经在[1]中给出仿真结果,此外在下文中实验B的信号生成方式下也可以(读者可以在代码中更改SNR为负数即可验证)。所以这一点,在本博文中我不再进行重复验证。)
仿真部分,设计了两组实验(做对比)。这两组实验生成信号的方法有所不同。
实验A下,对于每个脉冲信号:先生成高斯白噪声,然后再在特定索引处骑上一个信号,该信号幅值高于噪底,SNR约30dB。然后对各个脉冲进行相干积累。【本实验方法也就是我在[1]中的仿真部分所使用的方法】。
实验B下,对于每个单脉冲信号:先生成一个单频点的时域信号,然后再对该时域信号增加高斯白噪声,之后对该时域信号进行FFT处理,使得FFT后的目标频点的SNR约40dB。 这种仿真其实更契合实际:我们采集的是时域信号,且是对该信号进行脉冲压缩(FFT处理或匹配滤波)后才会进行脉冲积累。
更具体的参数列表如下:
表2.1 实验A仿真参数列表
参数 | 值 |
噪声 | 高斯白噪声(每个脉冲下随机生成一次) |
信号长度 | 256 |
目标信号索引 | 42 |
目标信号值 | 30+40i |
单脉冲下的SNR | 约30dB |
脉冲积累数量 | [1e0 1e1 1e2 1e3 1e4 2e4 3e4 4e4 5e4 6e4 7e4 8e4 9e4 1e5 2e5 3e5 4e5 5e5 6e5 7e5 8e5 9e5 1e6] |
表2.2 实验B仿真参数列表
参数 | 值 |
信号频率 | 1.6MHz(对应后续实测数据的目标频点) |
采样率 | 10MHz |
采样点数 | 256 |
目标索引位置 | 42(由采样率、目标频点、采样点数可确定) |
噪声 | 高斯白噪声(加在时域信号中,每个脉冲下随机生成一次) |
窗类型 | 汉明窗 |
加在时域中的SNR | 约20dB(这里的值和下面的FFT压缩后的SNR对应,因为在FFT处理时是有SNR增益的)。 |
距离压缩后SNR(单脉冲) | 约43dB |
脉冲积累数量 | [1e0 1e1 1e2 1e3 1e4 2e4 3e4 4e4 5e4 6e4 7e4 8e4 9e4 1e5 2e5 3e5 4e5 5e5 6e5 7e5 8e5 9e5 1e6] |
为规避只选择一个点来估测噪底时的随机性,这两组实验下,我估测噪底部时都是选择了远处(远离目标索引)的多个点[200:3:250]功率均值来估测噪底。
2.2 实验A仿真结果及讨论
在2.1节的仿真参数设计下,得到的仿真结果如下:
图2.1 信号时域(单脉冲)
图2.2 目标所在位置的相位和幅值变化(选取了其中的100个脉冲的数据)
高SNR下相位和幅值的变化都是比较小的。SNR越低变化量会更大,读者可以基于代码更改参数试试。
图2.3 不同脉冲积累数下的结果
图2.4 不同积累数量下的信号功率、噪声功率以及SNR变化
从图中可以看到,信号功率、噪声功率以及SNR随脉冲数的变化与理论值吻合良好,分别是越N^2、N、N倍的关系。本次仿真下最大SNR已经来到了90dB,没有出现某个阈值后SNR不变的现象。
2.3 实验B仿真结果及讨论
在2.1节的仿真参数设计下,得到的仿真结果如下:
图2.7 信号时域(时域所加SNR为20dB)
图2.8 信号频域(时域所加SNR为20dB)
图2.9 目标所在位置的相位和幅值变化(选取了其中100个脉冲的数据)
可以看到,相位和幅值的波动是很小的:相位在±0.4°左右,幅值在±1.5左右。(如果SNR更低的话,会看到波动的范围会更大,读者可以基于代码更改SNR试试)
图2.10 不同脉冲积累数下的结果
图2.11 不同积累数量下的信号功率、噪声功率以及SNR变化
从上图可以看到:信号功率与脉冲积累数量一直呈N^2倍的关系,而噪底在超过1万个脉冲后,其增长幅度明显变高:从原来的N倍变成了N^2,从而导致SNR在超过1万个脉冲的积累后,其几乎停滞在80dB左右!这与实验A的仿真结果是完全不同的。
【对此可能的解释】:当脉冲积累到一定量级时,信号旁瓣的积累值会超过噪底(特别地,还加上:噪底随着脉冲积累数的增加,其方差是越来越小的)。此时噪底“变成”了信号的旁瓣,而信号旁瓣的积累因为也是相参的,所以其增长的幅度和信号一样!体现在SNR上就是SNR不会发生变化。(类似在[1]中的室内试验下,因为在每个距离门下有杂波,且杂波的幅度大于噪底,导致相干积累下SNR不会发生变化)。在实验A中,因为信号是单点的,没有能量的泄露,所以不存在该现象。 (对应第一章中的描述,严格意义上来说,其实此时我们所估测的噪底已经不是噪声信号了,而是目标所泄露的能量,所以此SNR并非其本质定义,但是,在实际应用中,我们只能通过这种方式来估测噪底)。
为了更进一步地对该解释进行验证,补做了两个仿真实验:
1. 我们知道,对信号加窗会压旁瓣,展宽主瓣,降低能量泄露,(关于信号处理中的加窗问题,我在之前的博文[2]:雷达信号处理中的加窗问题-CSDN博客 有过一些讨论,读者可以看看)。在上述实验中,我对时域信号加了汉明窗后再做的FFT,试想,如果没有加窗(或者说加矩形窗),能量的泄露会更多,按照前面的解释,此时整体的SNR会往下移动,且阈值也会减小。于是我没有对数据做加窗,并得到仿真的结果如下:
图2.11 不同积累数量下的信号功率、噪声功率以及SNR变化
(没有加窗)
可以看到,现象类似,且此时的SNR阈值降低到了约64dB:在脉冲积累数量到1000个或SNR到64dB左右时,噪底功率随脉冲数量的增加已经呈N^2倍的关系,此后SNR不再增加。 结果符合预期。
2. 既然阈值的存在是由于目标的能量泄露引起的,在前面的仿真中,我只设置了一个目标,那么是不是如果存在多个目标,各个目标所泄露的能量会累加,此时阈值会比一个目标的情况下更低? 于是我在前述实验的基础上又增加了3个目标(其余参数一致,只是多增加了几个频点),并得到仿真的结果如下(做了加窗处理):
图2.12 信号时域
图2.13 信号频域(可以看到四个目标)
图2.14 不同积累数量下的信号功率、噪声功率以及SNR变化
从上图可以看到,对比图2.11,此时的“阈值”降低到了约60dB! 结果符合预期。(关于不同目标数下的SNR阈值探讨,读者可以基于代码自行研究)
2.4 本章小结
本章从仿真的角度对多脉冲相干积累问题进行了探讨。仿真结果表明:在相干积累下:在一定的SNR范围内(一定的脉冲数量下),信号功率的增加与脉冲数量N成N^2倍的关系、噪声功率的增加与脉冲数量N成N倍的关系、SNR的增加与脉冲数量成N倍的关系,但是,当SNR超过某个阈值后(在本文的仿真试验中该值为约80dB),信号旁瓣的积累值会超过噪底,此时噪底“变成”了信号的旁瓣,而信号旁瓣的积累因为也是相参的,所以其增长的幅度和信号一样,体现在SNR上就是SNR不会发生变化。对于该解释,本文设置了没有加窗、以及多个目标下的仿真进行了简单的对比验证。
三、实测实验
3.1 实验方案&参数设计
实测实验只做室外实验。实验方案、参数设计等和[1]中的一样,这里不再给出,请移步[1]查看。
3.2 实测实验结果及讨论
图3.1 室外试验时域数据
图3.2 不同脉冲积累数量下的结果(在做距离FFT前加汉明窗)
图3.3 不同脉冲积累数量下的信号功率、噪声功率以及SNR变化1
(在做距离FFT前加汉明窗)
本次数据处理中,求噪底时使用了索引值[200:3:256]处的功率均值。从图中可以看到,在SNR为60dB左右,出现了类似仿真中的现象:随着脉冲积累数的增加,噪底的增加幅度与信号一样,所以SNR不再增加。
如果在距离压缩前不加窗,该现象更加明显:
图3.4 不同脉冲积累数量下的信号功率、噪声功率以及SNR变化2
(在做距离FFT前不加窗)
从图中可以看到,在大概累积到2万个脉冲时,噪声功率的增加量和信号功率增加量一致,此时SNR会一直处在50dB左右,在此之前信号功率、噪声功率以及SNR随脉冲积累数的增长符合理论。
3.3 本章小结
本章基于Ti的AWR2944毫米波雷达开发板采集实测数据,对多脉冲相干积累下的SNR增益进行了定量验证。在对半空的室外试验下,杂波的干扰较小,可以看到SNR随着脉冲积累数量的增加而增加,且呈现比较良好的线性关系,不过在达到一定的阈值时,SNR将不再发生变化,仿真和实测数据都有该现象,对此的解释是:当脉冲积累到一定量级时,信号旁瓣的积累值会超过噪底(同时,噪底随着脉冲积累数的增加,其方差是越来越小的)。此时噪底“变成”了信号的旁瓣,而信号旁瓣的积累因为也是相参的,所以其增长的幅度和信号一样,体现在SNR(虽然此时的SNR并非严格SNR定义下的SNR…)上就是SNR不会发生变化。
至于为什么实测数据的该阈值要远小于仿真的结果:原因和我在实验B的补充实验2类似: 因为雷达的实测场景中其实有多个目标(以及杂波),这些目标的旁瓣会在远处叠加,从而使得所泄露能量的叠加更容易超过噪底,值也更大,所以该SNR阈值远小于仿真时的情况。
四、总结
本文从仿真以及实测两个方面探讨信号功率、噪声功率以及SNR随相干脉冲数量的变化关系。在一定的阈值下,信号功率的增长与积累数N成N^2倍的关系、噪声功率的增长与积累数N成N倍的关系、SNR的增长与积累数N成N倍的关系,不过,当积累数达到一定数量时,此时信号泄露到远端的能量会超过噪底,从而使得SNR不再会随着脉冲积累数的增加而继续增长。更细节的结论请参看2.4和3.4节。
五、参考资料
[1] 关于多脉冲(相干&非相干)积累问题探讨--仿真和实测数据实践-CSDN博客
六、代码与数据链接
因为采集的脉冲数量很多:连续采集了100万多个脉冲的数据,数据量有4GB多,实在太大了,所以本文的数据我不再上传。如果读者有买博文[1]的资料,可以私信我,我把本文的仿真代码、实测数据数据连同解析的代码(因为Ti的板子采数据时,如果单个文件的大小超过1GB会另外生成Bin文件,所以在数据解析时需要考虑多个Bin文件之间的衔接问题,我在解析代码中给出了一种处理方法)上传到百度云或者什么地方,你再自己下载。