如何理解离散傅里叶变换
为了方便讨论,以下用的都是逻辑频率和周期,先给出逻辑频率和周期的定义:
频率f:整个序列(数组)中有几个这个正弦波的周期
周期T:这个正弦波一个周期中的采样点数逻辑频率和物理频率的转换,可以直接把逻辑频率缩放到物理频率:
离散傅里叶变换(DFT)的公式:
其中x(t)为时域信号数组,X(f)为频域数组,把f=0~N-1代入X(f),就能得到各个频率的正弦波(结果是个复数,幅值为复数的模,初相为 )
各正弦波的频率
周期
例如下图蓝色曲线频率为3,幅值为2;红色曲线频率为16,幅值为1。把它们相加就得到了绿色曲线。对绿色曲线采样,做DFT后得到频域为图的下半部分(x轴为频率,y轴为幅值)
(因为整个时域序列相加了, 才是原来的正弦波幅值,所以IDFT公式前面要乘1/N)
由DFT的公式可知,X(1)~X(N/2-1)和X(N-1)~X(N/2+1)是共轭复数。N/2+1~N-1又叫负频率,因为DFT得到的频域函数也是周期函数,X(N/2+1)~X(N-1)和X(-N/2+1)~X(-1)的值相等。用具体例子理解负频率:有个车轮顺时针旋转,如果旋转频率增大到人眼采样频率的N/2+1~N-1,即负频率,看起来车轮就是逆时针旋转了
根据采样定理(香农定理、奈奎斯特定理),只有频率小于采样频率/2的信号能无损还原,N/2叫做奈奎斯特频率。我们能用到的实际上只有直流量和正频率(f=0~N/2-1)
频率超过N/2会怎么样
f=31,随着频率增加,正负频率越来越靠近N/2
f=32,每个周期刚好采样到2个点(再增大就只有1个点了),正负频率合为了奈奎斯特频率
这个时候信号已经失真了,比如相位超前90°,采样到的就全是0
f=33,采样到的点看起来和f=31一样,算得频率就是31
f=63,频率继续增加,采样到的点频率反而减小了,这里和f=1一样
f=64,看起来就是直流信号
f=65,又和f=1一样了
DFT做了什么
我们只看实数部分,虚数部分同理,只是用sin表示正弦波,相位差了90°。DFT其实就是把时域信号加权相加,权值等于相应频率,幅值为1的cos序列
为什么这样就能把不同频率的正弦波分开
这是利用了三角函数的正交性,即频率为0, 1, 2, … 的任意两个正弦波乘积在整个周期(采样序列)积分(求和)为0
例如 ,x(t)与f=3的正弦波相乘后就变成了 ,再求和后,第二项变为0消掉了,只有频率相同的第一项留了下来
如果不正交呢
下图为频率为3.5的情况
可以看出整个频域范围幅值都不为0,就像幅值从频率3.5泄露出去了,这种现象叫做频谱泄露。DFT其实把原信号当成了无限长序列信号,如下图,原信号改变了,所以频域也变了
其实就是把正弦波截断后,周期不完整了,出现了非整数的频率,破坏了三角函数的正交性。实际应用中难免截断完整周期,为了减少频谱泄露的影响,有两种方法,一种是把原信号加窗后再DFT;另一种是增加用来变换的序列长度,这样可以把频率分得更细,让三角函数更接近正交