设时域采样序列为 x [ n ] , 0 ≤ n < N x[n],0\leq n<N x[n],0≤n<N,则其FFT变换为
X [ k ] = ∑ n = 0 N − 1 x [ n ] e x p ( − j 2 π N k n ) , 0 ≤ n < N , 0 ≤ k < N X[k]=\sum_{n=0}^{N-1}x[n]exp(-j\frac{2\pi}{N}kn), 0\leq n<N, 0\leq k<N X[k]=n=0∑N−1x[n]exp(−jN2πkn),0≤n<N,0≤k<N
若采样率为 f s f_s fs,则FFT变换后的频率轴刻度为 [ − f s / 2 : f s / N : f s / 2 ] [-f_s/2:f_s/N:f_s/2] [−fs/2:fs/N:fs/2]。从中得到两个信息:
(1)受奈奎斯特采样定律的限制,FFT变换最大只能表征 f s / 2 f_s / 2 fs/2频率的信号。当信号频率超过 f s / 2 f_s / 2 fs/2,则会发生频谱混叠。设信号真实频率为 f 0 f_0 f0,则混叠后的频率为 ± ∣ n f s − f 0 ∣ , n = r o u n d ( f 0 / f s ) \pm |nf_s - f_0|,n=round(f_0 / f_s) ±∣nfs−f0∣,n=round(f0/fs)。
下图所示场景中, f s = 10000 H z , N = 2000 f_s=10000Hz,N=2000 fs=10000Hz,N=2000,包含两个正弦信号,频率分别为 1000 H z 1000Hz 1000Hz和 6000 H z 6000Hz 6000Hz。FFT变换后, 6000 H z 6000Hz 6000Hz信号发生混叠,混叠后频率为4000Hz。
(2)频谱中相邻两点间的频率间隔为 Δ f = f s / N \Delta f=f_s/N Δf=fs/N,显然采样率 f s f_s fs越小,时域序列样点数 N N N越大, Δ f \Delta f Δf就越小。
基于上面的结论,我们很容易想到,若在原始采样序列 x [ n ] x[n] x[n]后面补上一串0,再进行FFT变换,那就通过增加时域样点数 N N N达到减小FFT频谱的频率分辨率 Δ f \Delta f Δf的目的。那是不是意味着,单纯的补零操作就可以让FFT变换具备分辨频率差异任意小的信号的能力?显然,这是违背直觉的,因为补零本质上并没有增加任何有用信息,自然无法提升FFT对信号的分辨能力。那补零操作的本质是什么?它与FFT对信号分辨能力的关系又是什么?
其实这边涉及到两个分辨率的概念:(1)是FFT变换频谱中相邻两点之间的频率间隔,通常称为计算分辨率。补零影响的就是计算分辨率,它与信号分辨能力无关;(2)是FFT对信号的分辨能力,通常称为物理分辨率,它只与时域采样序列的有效时长有关。下面对这两种分辨率进行详细说明。
1. 计算分辨率
从上面的分析可知,计算分辨率 Δ f = f s / N \Delta f=f_s/N Δf=fs/N,因此任何降低采样率或增加时域序列点数的操作都能提高计算分辨率。补零就是最常见的操作。下面推导补零前后信号频谱的关系。
设原始时域序列为 x [ n ] , 0 ≤ n < N x[n],0\leq n<N x[n],0≤n<