转自:https://blog.csdn.net/zhazhiqiang/article/details/22613763
解释一:频率分辨率可以理解为在使用DFT时,在频率轴上的所能得到的最小频率间隔f0=fs/N=1/NTs=1/T,其中N为采样点数,fs为采样频率,Ts为采样间隔。所以NTs就是采样前模拟信号的时间长度T,所以信号长度越长,频率分辨率越好。是不是采样点数越多,频率分辨力提高了呢?其实不是的,因为一段数据拿来就确定了时间T,注意:f0=1/T,而T=NTs,增加N必然减小Ts ,因此,增加N时f0是不变的。只有增加点数的同时导致增加了数据长度T才能使分辨率越好。还有容易搞混的一点,我们在做DFT时,常常在有效数据后面补零达到对频谱做某种改善的目的,我们常常认为这是增加了N,从而使频率分辨率变好了,其实不是这样的,补零并没有增加有效数据的长度,仍然为T。但是补零其实有其他好处:1.使数据N为2的整次幂,便于使用FFT。2.补零后,其实是对DFT结果做了插值,克服“栅栏”效应,使谱外观平滑化;我把“栅栏”效应形象理解为,就像站在栅栏旁边透过栅栏看外面风景,肯定有被栅栏挡住比较多风景,此时就可能漏掉较大频域分量,但是补零以后,相当于你站远了,改变了栅栏密度,风景就看的越来越清楚了。3.由于对时域数据的截短必然造成频谱泄露,因此在频谱中可能出现难以辨认的谱峰,补零在一定程度上能消除这种现象。
那么选择DFT时N参数要注意:1.由采样定理:fs>=2fh,2.频率分辨率:f0=fs/N,所以一般情况给定了fh和f0时也就限制了N范围:N>=fs/f0。
解释二:频率分辨率也可以理解为某一个算法(比如功率谱估计方法)将原信号中的两个靠得很近的谱峰依然能保持分开的能力。这是用来比较和检验不同算法性能好坏的指标。在信号系统中我们知道,宽度为N的矩形脉冲,它的频域图形为sinc函数,两个一阶零点之间的宽度为4π/N。由于时域信号的截短相当于时域信号乘了一个矩形窗函数,那么该信号的频域就等同卷积了一个sinc函数,也就是频域受到sinc函数的调制了,根据卷积的性质,因此两个信号圆周频率之差W0必须大于4π/N。从这里可以知道,如果增加数据点数N,即增加数据长度,也可以使频率分辨率变好,这一点与第一种解释是一样的。同时,考虑到窗函数截短数据的影响存在,当然窗函数的特性也要考虑,在频率做卷积,如果窗函数的频谱是个冲击函数最好了,那不就是相当于没截断吗?可是那不可能的,我们考虑窗函数主要是以下几点:1.主瓣宽度B最小(相当于矩形窗时的4π/N,频域两个过零点间的宽度)。2.最大边瓣峰值A最小(这样旁瓣泄露小,一些高频分量损失少了)。3.边瓣谱峰渐近衰减速度D最大(同样是减少旁瓣泄露)。在此,总结几种很常用的窗函数的优缺点:
矩形窗:B=4π/N A=-13dB D=-6dB/oct
三角窗:B=8π/N A=-27dB D=-12dB/oct
汉宁窗:B=8π/N A=-32dB D=-18dB/oct
海明窗:B=8π/N A=-43dB D=-6dB/oct
布莱克曼窗:B=12π/N A=-58dB D=-18dB/oct
可以看出,矩形窗有最窄的主瓣,但是旁瓣泄露严重。汉宁窗和海明窗虽主瓣较宽,但是旁瓣泄露少,是常选用的窗函数。