两年做过fft海面,当时精力放在代码实现上了,并没有细想背后原理。这些天回顾了一下,把之前得过且过的地方想明白了,当然,仍有盲区,但整个逻辑链条是清晰的了。本系列将完整梳理一下。
当初调试时的视频:
本篇先讲基础理论和模型。
一,频谱,傅里叶变换与逆变换
自变量为x的函数f(x)可看作一个随空间变化的信号(空域信号),只要满足一定条件,它就可以表示为一堆不同频率的随空间变化的正弦信号(空域正弦信号)的线性组合(或积分)。
注:是求和还是积分,取决于信号是否具有周期性。
这些正弦信号(称为基底)的频率构成频域。如果将频域作为定义域,相应频率基底的振幅和相位作为函数值,则得到一个新函数F(ω)。称为信号f(x)的频谱。
注:频域(Frequency Domain),空域(Space Domain),时域(Time Domain)。其中空域和时域在数学上是一个意思,不同仅在于自变量用x还是t。对于本文应用场景而言,用空域说法更恰当。
知道了频谱F(ω)也就知道了f(x),反之亦然,二者是等价的,是同一个信号的两种不同表示方法。
由f(x)求频谱F(ω),称为傅里叶变换。
由频谱F(ω)求f(x),称为傅里叶逆变换。
实际傅里叶变换/逆变换不是以正弦信号为基底,而是以复指数信号
二,从三角形式到复数形式
本节对文章目标意义不大,可略过,我只是因为看到傅里叶变换带复数比较懵逼,所以尝试捋了一下。
信号分解为基信号的线性组合(即傅里叶逆变换)有无数种方法,取决于基底形式的选择。不同基底形式导致不同的频谱形式。
(一)以带相位正弦信号作为基底:
此时频谱需要给出振幅和相位,形式为
(二)以不带相位余弦和正弦信号联合作为基底:
使用三角恒等式
注:可以看出,
此时频谱需要给出两个振幅A1和A2,形式为
(三)以复指数信号作为基底:
使用欧拉恒等式