首先我们知道,对一个N点的信号,我们必须要做大于N点的fft,才能保证输出正常。(频域采样定理)
但是对于现实生活中的信号,很多都是无限长的,这也会导致采样后的离散信号点数N也是无限大的,不利于我们进行fft运算。因此我们需要用一些方法选出一些点来进行fft运算。
我们都知道,频谱与冲激函数卷积,相对于位移但幅度互相不影响。
但是如果直接截出一部分点,则相当于在原信号的基础上加矩形窗,频域就相对于和sa函数卷积。卷积的过程就会污染原本的频域,导致原有频率成分偏移到其他频率成分上。
如下图,我们对一个频率为20Hz的单频三角函数加矩形窗做fs=200的32点fft运算,可以看到,不仅20Hz除有频谱成分,其他频率成分上也有,这就叫做频谱泄露。
本文中Nwindow代表截断后时域有效数据点数,N代表fft点数
那么该如何减小泄露呢?
可以选择增大信号点数或者选用更好的窗函数来截断原函数
下图是进行512点fft的频谱(同时信号有效点数也增大为512)
二,什么是栅栏效应,降低栅栏效应?
首先来看栅栏效应,由于DFT是在DTFT的基础上对频域进行采样,因此频域就会变成离散的点,就好像通过栅栏观察频谱一样,因此叫做栅栏效应。
栅栏效应可以通过时域补零来减小,同时也相当于增大频域的采样点数(因为频域采样点数等于时域信号的点数)。下图是表示时域信号有效长度不变的情况下,分别补零不同的点数对应的结果,可以看出补零越多,栅栏效应越小。
三,什么是频谱分辨率,如何降低频谱分辨率?
频谱分辨率是在频率上能把两个信号分开的能力。
这里有一个误区就是补零可以增大频谱分辨率,这是错误的,是错误的理解了频谱分辨率概念所引起的。接下来一个图片是对两个单频的叠加信号做fft,我们看看通过补零能否增加频谱分辨率(主瓣顶峰所对应的距离)
我们可以看到,通过补零只能把图像变得更平滑,但是无法增大把20Hz,30Hz这两个单频信号分开的能力。接下来我们增加时域有效采样点数,观察效果。
可以看到,通过增加时域有效点数,可以增大两个单频点被分辨开的能力。
同时选用更好的窗函数也可以增大频率分辨率。
在这里可以联想到频谱泄露的概念,实际上频谱分辨率低也是因为某点频率因为频谱泄露而污染了另一点的频率,因此减小频谱泄露实际上也就是增大频谱分辨率。他们都可以选用更好的窗函数以及增大时域有效点数N来优化。
四, 为什么fft之后产生对称的图像?
首先我们知道实信号的频谱是对称的,即X(k)=X*(-k)
又有fft的频谱具有隐含周期性,则X(k)=X(k+N)
因此 X(k)=X*(N-k) 即在一个采样周期内,以一半的采样频率为分界线,两边的值是对称的
所以我们只需取一半点即可
五,DFT中采样频率,模拟频率和数字频率的区别和联系
首先我们知道,在物理世界中只有模拟频率f,它的单位是Hz,这也是最容易理解的一个频率。
其次我们对信号采样有了采样频率fs,并且根据奈奎斯特采样定理,原信号的频率是不大于0.5倍的fs的。也就是说原模拟信号的频率f是处于区间(0,0.5fs)的
那么我们就可以把原信号的模拟频率区间(0,fs),一一对应到数字频率区间(0,2pi)。
他们的转化关系为w=2pi*f/fs(其中w为数字频率,f为模拟频率,fs为采样频率)