每日精学 144|滑动DFT的递推更新

2026-09-25

雷达 · 通信 · 电子战 / 基础精学 144

滑动DFT利用相邻窗口仅删除一个旧样本并加入一个新样本的结构,以常数次数运算更新每个选定频点。

01
模型与符号

长度N矩形窗口,Xm[k] 的相位参考为窗口最早样本;固定整数频点k。

Xm[k]:起点m窗口DFT(幅度谱)

W:正指数旋转因子(无量纲)

x[m]:移出样本(幅度)

x[m+N]:移入样本(幅度)

02
从模型到公式

窗口定义

定义

X_m[k]=\sum_{r=0}^{N-1}x[m+r]e^{-\mathrm j\omega r},\quad\omega=2\pi k/N.

向前平移窗口后令旧索引r加1,得到

X_{m+1}[k]=e^{\mathrm j\omega}\sum_{r=1}^{N}x[m+r]e^{-\mathrm j\omega r}.

删除与加入

补回r=0并删去其贡献,同时利用

e^{-\mathrm j\omega N}=1

得到

X_{m+1}[k]=e^{\mathrm j\omega}\{X_m[k]-x[m]+x[m+N]\}.

旋转方向由窗口相位参考决定,不能直接照搬负指数FFT因子。

误差递推

若每步新增数值误差为 ϵm,则残差满足

d_{m+1}=e^{\mathrm j\omega}d_m+\epsilon_m.

理想单位模旋转不衰减旧误差;

最坏情况下 |d_m|\leq|d_0|+\sum_i|\epsilon_i|,长时间运行宜定期直接重算。

旋转系数量化造成的径向漂移

精确滑动 DFT 的旋转因子模为一,理论上不引入幅度收缩或增长。若量化后的常数为

\widehat W

无新旧样本差驱动时已有状态满足

X_{n+r}=\widehat W^r X_n,\qquad |X_{n+r}|=|\widehat W|^r|X_n|.

即使模长误差很小,长时间递推仍会积累。

令

|\widehat W|=1+\epsilon

小误差和有限步数下有

|\widehat W|^r\approx e^{r\epsilon}.

因此周期性用直接窗口求和校正或选用稳定结构,解决的是递推误差积累而非频率分辨率。

四分之一周的换路取反旋转可精确保留模长,但不能据此推断任意频点的定点旋转同样没有径向误差。

03
物理含义

矩形窗口滑动对应有限记录的精确更新;速度收益伴随对舍入积累和历史样本缓冲准确性的要求。

04
固定参数算例

N=64、k=7,连续更新数百个窗口,逐窗和直接DFT比较,另外验证k=N/4时的90度旋转特例。

固定参数数值验证结果
量数值
窗口长度64
bin7
窗口数449
max update error1.05195740693e-13
wrong rotation error9.33344752361
quarter rotation error4.4408920985e-16
final residual9.08866738702e-14
图 1:滑动DFT的递推更新的理论关系与固定参数验证图 1:滑动DFT的递推更新的理论关系与固定参数验证

图 1 滑动DFT的递推更新的理论关系与固定参数验证

表中数值和图中曲线由 MATLAB 实际运行得到,随机种子为 20261063;运行版本与完整结果另存为独立文件。

05
数字实现的边界

RTL提供 k=N/4 的整数旋转子核:输入a为上一频点实部加新旧实样本差,b为上一频点虚部,输出-b和a,即乘以 +\mathrm j;

延迟缓冲及加减由外部负责。 RTL 采用同步有效信号和异步低有效复位;空拍保持状态且输出无效。除另有说明外,输入为16位有符号整数,结果为64位有符号整数,测试范围内不截断或饱和。

输出在采样时钟上升沿更新。自检覆盖连续样本、空拍和复位;未进行器件布局布线、时序收敛或功耗验证。

独立自检程序已在 Icarus Verilog 13.0 中实际运行并通过。该结果不包含器件综合、静态时序分析或板级测试。

06
适用范围

滑动DFT适用于实时连续窗口频点监测。每次更新只需新旧样本差和一次旋转,可降低高重叠率分析的重复计算。长时间运行应设置周期性直接重算机制,并核查环形缓存中的移出样本确实属于同一窗口。

07
工程上需要注意

量化旋转因子模大于1会使误差指数增长。

窗函数不是矩形时,简单两样本更新一般不再成立。

丢样或窗口长度变化需要重建状态。

滑动DFT利用相邻窗口仅删除一个旧样本并加入一个新样本的结构,以常数次数运算更新每个选定频点。

内容依据:每日精学第 144 课《滑动DFT的递推更新》。图表沿用原课固定参数数值结果,属于数值验证,不代表设备实测。

阅读8
分享
写评论...