现代雷达原理(卷一:基本原理,第2版) · 全书导读
《Principles of Modern Radar, Volume 1: Basic Principles》第2版(2022)以统一基础框架连接雷达系统、信号、硬件、环境和处理。20章的学习价值在于把物理定义与计算模型放在一起:每一项处理都应能够追溯到信号从哪里来、在哪个维度采样以及输出代表什么。
阅读时宜先建立系统及信号模型,再连接数字处理和性能分析。确定性运算正确并不保证物理解释正确;采样、有限观测、噪声和目标起伏都需要显式条件。下面的线性卷积与循环卷积专题来自数字处理基础,展示怎样用小规模独立算例检查实现边界;配套20篇覆盖各章选题。
时域卷积算出的结果是[1,3,6,9,7,4]。换成“两个FFT相乘,再做逆FFT”,开头却变成了[8,7,6,9]。输入没改,滤波器也没改,为什么后面的两个数像是跑到了前面?
它们确实折回来了。DFT频域相乘对应的是循环卷积;只有变换长度满足条件时,才能在同一段输出中得到所需的完整线性卷积。
《Principles of Modern Radar》卷一第2版的第8章,将数字信号处理基础放在雷达计算的入口位置。其中第8.6节讨论滤波实现,明确区分了时域卷积与基于DFT的快速卷积。一个只有几个数的例子,就足以把这个边界问题看清楚。
取x=[1,2,3,4]、h=[1,1,1],所有下标从0开始,序列范围之外补零。线性卷积定义为
![y[n]=\sum_m x[m]h[n-m].](http://mmo.508mallsys.com/image/loading/transparent.png)
逐项计算得到y=[1,3,6,9,7,4]。例如y[3]=2+3+4=9,最后一项y[5]=4。
长度分别为Nx和Nh的有限序列,完整线性卷积占用Nx+Nh−1个位置。本例需要6个位置。输入只有4个数,并不能据此要求卷积也只返回4个数;输出范围由两段非零支撑共同决定。
输入、系数与完整线性卷积。数组之外按零处理,输出下标范围为0至5。设两个序列都按长度K进行DFT,频域逐点相乘后再做同长度逆变换,得到
![y_K[n]=\sum_{m=0}^{K-1}
x_K[m]\,h_K[(n-m)\bmod K].](http://mmo.508mallsys.com/image/loading/transparent.png)
下标中的模运算意味着越过末端后重新回到开头。这是循环卷积,与线性卷积的零延拓边界不同。
当K至少能装下两个输入序列时,循环结果还可由线性卷积折叠得到:
![y_K[n]=\sum_{\ell\in\mathbb Z}y[n+\ell K],
\qquad 0\leq n<K.](http://mmo.508mallsys.com/image/loading/transparent.png)
本例取K=4,线性输出的下标4折到0,下标5折到1,于是
![y_4[0]=1+7=8,\quad y_4[1]=3+4=7.](http://mmo.508mallsys.com/image/loading/transparent.png)
其余两项仍为6和9,正好解释开头观察到的[8,7,6,9]。
这里没有漏掉两个尾部样本后“自动插值”。它们已经与前面的样本相加,混进了结果。如果只在逆变换后补两个零,就只能扩展数组长度,不能把已相加的分量分离回来。
也不要先用fftshift挪动结果来补救。fftshift改变频率或数组的排列约定,不会把循环边界改成零延拓边界。图形的位置与卷积类型,是两个独立的问题。
4点循环卷积中的尾部折返。第二行专门列出折到前两个位置的线性卷积尾部。只要选择

并将两个输入分别补零到相同长度K,完整线性卷积就能放进一个周期,非零尾部不再折回开头。随后保留前Nx+Nh−1个输出即可。
图3比较4点、5点和6点结果。5点时,最后一个线性输出仍会折到开头,得到[5,3,6,9,7];直到6点,才与时域结果完全一致。补了一些零,不等于补到了足够长度。
这个条件针对已保留的完整输入。若FFT接口在指定长度过小时截掉原数组尾部,连输入本身也发生了变化,问题就不止循环折返。比较前应检查变换长度是否小于任意一个输入长度,以及接口实际如何处理这种情况。
变换长度也不必在数学上取2的整数次幂。DFT对一般正整数长度都有定义,不同FFT算法的计算效率可能不同。选择更方便计算的长度可以是实现考虑,但最低长度条件仍应先由卷积支撑范围决定。
有限精度计算还可能产生极小的虚部或舍入残差。本例理论输入与输出均为实数,这类残差与开头从1变成8的结构性差异不可混淆。前者需要按数值误差尺度判断,后者即使用无限精度也会出现。
三种变换长度的结果。6点已足以容纳本例线性卷积;长度条件与是否采用2的幂次应分别考虑。若输入很长,可以分块计算,但滤波器会让每块输出延伸到块边界之外。将这些尾部直接丢掉或把完整块结果顺序拼接,都可能改变原线性卷积。
把本例输入分成x0=[1,2]与x1=[3,4]。两块分别与h卷积,得到
![y_0=[1,3,3,2],\qquad y_1=[3,7,7,4].](http://mmo.508mallsys.com/image/loading/transparent.png)
第二块输入从全局下标2开始,因此它的卷积输出也应从下标2开始放置。重叠相加后,
![[1,3,3,2,0,0]+[0,0,3,7,7,4]
=[1,3,6,9,7,4].](http://mmo.508mallsys.com/image/loading/transparent.png)
图4中相加的位置对应同一全局时间下标,并不是为了让两段曲线视觉上接得更顺。
若每块长度为B,滤波器长度为L,使用FFT算每块完整卷积时,仍需满足K≥B+L−1。分块减少了单次处理长度,却没有取消块内防止循环折返的要求。
这种重叠相加思想来自线性与时移关系。实现时应保存每块的全局起点,并将延伸部分加到相应位置。另一些分块方法会采用不同的输入重叠和输出舍弃规则,应按各自推导处理,不能只混用几个相似的步骤名称。
两块输入的卷积与重叠相加。第二块按原输入位置右移2个样本,重叠区域相加后恢复完整结果。快速卷积出错时,可以先拿一个短的无噪声数组,与直接求和结果对照。短数组的好处是每一个输出都能追溯到具体乘积,不会被长序列图形的相似性掩盖。本文六个输出,便已经足够区分几种常见错误。
第一项是边界条件。线性卷积通常采用有限序列外补零,循环卷积则将序列视为周期重复。两种运算都合法,问题在于所需物理含义对应哪一种。若研究对象本来就是周期序列,循环卷积可以正是需要的结果,不能一概称作错误。
第二项是下标。完整卷积、截取中间段和只保留完全重叠部分,会产生不同的输出范围。若一个程序返回6个数,另一个只返回4个数,先弄清楚截取规则,再比较是否一致。以长度不同直接判断算法错误,往往会混淆运算与接口约定。
第三项是变换归一化。常用约定将DFT不缩放、逆DFT除以K。若某个实现采用其他缩放方式,频域乘积后的整体比例也要随之处理。固定倍数误差与首尾折叠的误差形状不同,可以分别定位。
还可以用单位脉冲检查:序列与起点处的单位脉冲作线性卷积,应恢复原序列;与延迟脉冲卷积,应产生相应时移。这个检查主要验证索引与边界,不足以单独覆盖所有复数共轭问题。卷积和相关也有不同定义,不能因为都出现频域乘法就忽略共轭的位置。
补零在这里的作用是防止不同线性输出折到同一周期位置,与频谱显示中增加频率采样点的作用应分开解释。同一个程序动作,放在不同计算链中,可能承担不同任务。先说清任务,才能判断补零长度是否有依据。
《Principles of Modern Radar》卷一第2版由Mark A. Richards和William L. Melvin组织编写,涵盖雷达基础、器件与处理等内容。第8章由Mark A. Richards撰写,系统串起采样、量化、傅里叶分析、数字滤波和相关处理。
对于经常使用FFT、却对边界条件缺乏把握的读者,第8.4节和第8.6节值得连起来读。前者解释DFT与FFT的关系,后者把频域相乘放进滤波实现,明确给出循环卷积与线性卷积的区别及长度条件。
阅读时,可以在笔记中同时保留三种表达:时域求和、频域乘积和数组下标范围。三者描述同一次计算,却各自容易暴露不同问题。只看频域公式,可能漏掉周期延拓;只看程序长度,可能漏掉归一化;只看时域图形,又可能看不出尾部折叠到了哪里。
本文四幅图采用独立构造的短数组,没有复现原书的具体雷达波形。选择如此简单的输入,是为了让每个加法都能被核对。理解这组结果以后,再回到长数据滤波,边界问题依然遵循相同的运算关系。
这部书适合想把分散的数字处理知识接回系统语境的读者。基础章节的价值不在于让人记住更多函数名称,而在于让每次调用都能对应清楚的数学定义。读懂这些定义,程序语言改变以后,计算含义也不会轻易丢失。
开头多出的7和4,并不是两个神秘噪声峰。它们原本就在尾部,只是被长度为4的周期结构搬到了前面。找到这两个数的来路,快速卷积的关键边界也就清楚了。
书目信息与阅读位置:Mark A. Richards、William L. Melvin主编,Principles of Modern Radar, Volume I: Basic Principles,第2版,SciTech Publishing/IET,2022。重点阅读第8.4节与第8.6节,尤其快速卷积实现部分。