离散傅里叶变换(DFT)的输入是一组离散的值,输出同样是一组离散的值,FFT是DFT的快速算法。
在输入信号而言,相邻两个采样点的间隔为采样时间Ts。在输出信号而言,相邻两个采样点的间隔为频率分辨率df=fs/N,其中fs为采样频率,N为输入信号的采样点数(N=fs*Ts),则频率分辨率df为:
,
这也就是说,DFT的频率分辨率不仅与采样频率有关,也与信号的采样点数有关。
那么,如果保持输入信号长度不变,但却对输入信号进行补零,增加DFT的点数,此时的分辨率是变还是不变?
答案是:此时分辨率不变。
从时域来看,假定要把频率相差很小的两个信号区分开来,直观上理解,至少要保证两个信号在时域上相差一个完整的周期,也即是相位相差2*pi。举个例子,假定采样频率为1Hz,要将周期为10s的正弦信号和周期为11s的正弦信号区分开来,那么信号至少要持续110s,两个信号才能相差一个周期,此时周期为10s的那个信号经历的周期数为11,而11s的那个信号经历的周期书为10。转化到频域,这种情况下,时域采样点为110,分辨率为1/110=0.00909,恰好等于两个信号频率只差(1/10-1/11)。
如果两个信号在时域上不满足“相差一个完整周期“的话,补零同样也不能满足“相差一个完整周期”,即分辨率不发生变化。另外,从信息论的角度,也很好理解,对输入信号补零并没有增加输入信号的信息,因此分辨率不会发生变化。
那么,补零到底会带来什么样的影响呢?因为DFT可以看做是对DTFT的采样,补零仅是减小了频域采样的间隔。这样有利于克服由于栅栏效应带来的有些频谱泄露的问题。也就是说,补零可以使信号能在频域被更细致地观察。如果不满足上述“至少相差一个完整周期”的要求,即便是如DTFT一般在频域连续,也无法分辨出两个信号。
栅栏效应可以形象理解为:站在栅栏旁边透过栅栏看外面风景(信号频率),肯定有被栅栏的木杆挡住的景物(频率分量,采样点之间的间隔就相当于栅栏的木杆,采样点之间的这部分数据含有的频率是被栅栏“挡住”的,只有采样点处的数据的频率量是可以被观测的),此时就可能较重要的景物(频率分量)被栅栏的木杆挡住,即漏掉较大频域分量,(“挡住”或丢失的频率成分有可能是重要的或具有特征的成分),但是补零以后,相当于栅栏的木杆宽度减小了,可见部分增加了,风景就看的越来越清楚了,(但是补零以后看到的不是“挡住”或丢失的频率成分,而是补零产生的频率,这部分细节是无法提高信号分辨率的)。
那么,影响DFT分辨率最本质的物理机制是什么呢?在于DFT的积累时间,分辨率为积累时间Ts的倒数。这点从下面的数学公式上可以很容易得到:
举个例子说,如果输入信号的时长为10s,那么无论采样频率为多少,当然前提是要满足奈奎斯特定理,其分辨率为1/10=0.1Hz。
补零信号的谱,是通过对截短信号的谱进行了推测(插值算法)得来的,它并不能反映原信号的谱(因为原信号在截短的过程中部分信息丢失了,而补零并没有将这些丢失的信息找回来),所以虽然补零信号的谱线间隔变小了,但是除了从截短信号的谱中取出来的谱线以外,其余的新增的谱线都是无效的。去掉这些无效的谱线,采样频率不变,有效的谱线数不变,所以其物理频率分辨率自然没有改变。
也可以这样理解,M为原信号的长度,N是信号补0后的长度(补了N-M个零值),补0前FFT计算得到的是m*2*pi/M处的频域值, 而补0后得到的是n*2*pi/N处的频域值。 补0后,将(-pi,pi)从原来的M份变成了N份,如果将补0前后的这些频域值画在坐标上,其中m*2*pi/M和n*2*pi/N重合的部分,它所对应的频域值(变换后的值)是不变的,而在原来的M份里多了(N-M)份的分量,即在频域内多了(N-M)份插值。
N 点DFT的频谱分辨率是2π / N。可以通过补零观察到更多的频点,但是这并不意味着补零能够提高真正的频谱分辨率。这是因为x[n] 实际上是x(t) 采样的主值序列,而将x[n]补零得到的x'[n] 周期延拓之后与原来的序列并不相同,也不是x(t) 的采样。因此已是不同离散信号的频谱。对于补零至M点的x'的DFT,只能说它的分辨率2π / M仅具有计算上的意义,并不是真正的、物理意义上的频谱。频谱分辨率的提高只能在满足采样定理的条件下增加时域有效的采样长度来实现,而补零并不是时域信号的有效数据。
补零前的FFT有M条谱线,分别代表的频率点是(0,1,...,M-1)*df1,df1=fs/M;补零后的FFT有N条谱线,分别代表的频率点是(0,1,...,N-1)*df2,df2=fs/N。由于补零前后数据长度不一样,它们的分辨率(分别为df1,df2)不一样,在频域中谱线所代表的频率也不一样,所以这两个频谱所描述的对象也不相同。这里举一个例子,fs=1000HZ,补零前后数据长度M=500和N=800,对应的df1=1000/500=2,df2=1000/800=1.25。补零前的频谱是对应于0,2,4,...,500HZ的频谱,而补零后的频谱是对应于0,1.25,2.5,...,500HZ的频谱,所以两频谱中对应频率不两同,描述当然不同。但是当特殊情况:M=(2^n)N时,补零后的频谱相当于在补零前的频谱中插入(2^n)-1条谱线。与补零前的频谱中相重合的谱线,它们的幅值和相位完全一致。
既然补零无法提高信号的频率谱的分辨率,那么他有什么其他作用呢?
其一,可使数据点数调整为2的整次幂,以便于使用FFT;
其二,对原数据起到了做插值的作用,克服“栏栅”效应,使谱的外观平滑;
其三,由于对数据截短时引起的频域泄漏,有可能在频谱中出现一些难以确认的谱峰,补零后有可能消除这种现象。
补零的个数不是任意的,补零的个数必须为原数据个数的整数倍。如果用fft的话,补零后的总长度还要满足2的n次幂。补零一般情况下是为了满足fft的条件,有时为了减少频谱泄漏也会补零。只有补零的个数满足以上条件时,补零前的频谱才会包含在补零后的频谱中,这样才有意义。
由于我们往往会认为频率分辨率与采样的点数即N有关,即采样点数越多,频率分布越密集,分辨率越高。而实际上对采集到的信号序列进行“高密度”的FFT变换时(即FFT变换的点数大于信号的点数),只是将确定的频谱分割的细一点,不能区分的频率仍旧不能区分。真正与频率的分辨能力有关的应该是谱线的宽度!我们对任何信号进行傅里叶变换之前都会无意地引入了加矩形窗的处理,而加入矩形窗的结果就是谱线不再是“冲激”,而是具有一定的宽度,这与矩形窗的主瓣是有关系的,至于频谱的旁瓣则与矩形窗的旁瓣有关。这就是大家常说的“频谱泄漏”。所以,频率的分辨能力与谱线的宽度有关(谱线越细,自然能分辨的频率间隔就越小),谱线的宽度又与矩形窗的主瓣有关,矩形窗的主瓣又与矩形窗的时间长度有关。所以频率的分辨能力只与矩形窗的时间长度有关即只与采样的时间Ts有关,而不是N。
另外,在选择DFT时N参数要注意:
1、由采样定理:fs>=2fh (fs——采样频率,fh——信号最大频率分量)
2、频率分辨率:df=fs/N (df——频率分辨率,N——采样点数目)
所以一般情况给定了fh和df时也就限制了N范围:N>=fs/df。
1、补零不能提高信号的频率分辨率,但可以提高信号加窗后的合成信号的分辨细节;
2、提高分辨细节的本质是由于窗的展宽,补零而看到的频率细节不是信号本身的细节,而是窗的细节;
3、补零可使数据点数调整为2的整次幂,以便于使用FFT;
4、补零对原数据起到了做插值的作用,克服“栏栅”效应,使谱的外观平滑;
5、补零由于对数据截短时引起的频域泄漏,有可能在频谱中出现一些难以确认的谱峰,补零后有可能消除这种现象。
6、在满足采样定理的前提下,采用频率细化技术(ZOOM),亦可用把时域序列变换成频谱序列的方法,来在不增加采样时间的情况下实现分辨率的提升。