无痛理解傅里叶变换

连续傅里叶变换

对于任意的一个函数 f ( t ) \displaystyle f( t) f(t)
无痛理解傅里叶变换_第1张图片

它往往可以被分解成多个不同的频率下sin cos 函数的组合:

无痛理解傅里叶变换_第2张图片

所以为了去捕捉每个不同频率下的sin cos的“成分”,一个直观的想法就是,对于每个频率 w \displaystyle w w,我们分别计算 s i n ( w t ) \displaystyle sin( wt) sin(wt)函数和 c o s ( w t ) \displaystyle cos( wt) cos(wt)函数与目标函数的“相似度”,而这个相似度可以用内积来计算:

无痛理解傅里叶变换_第3张图片

内积越大则意味着他们越相似,既然如此,一个直观的想法就是去计算:

F s i n ( w ) = ∫ f ( t ) sin ⁡ ( w t ) d t F c o s ( w ) = ∫ f ( t ) cos ⁡ ( w t ) d t F_{sin}( w) =\int f( t)\sin( wt) dt\\ F_{cos}( w) =\int f( t)\cos( wt) dt Fsin(w)=f(t)sin(wt)dtFcos(w)=f(t)cos(wt)dt

这里 F s i n ( w ) \displaystyle F_{sin}( w) Fsin(w)其实就表示这个函数 f \displaystyle f f与频率为 w \displaystyle w w的sin函数的相似性。

我们可以看个直观的例子,考虑函数
y = s i n ( x ) + c o s ( 3 x ) y=sin(x)+cos(3x) y=sin(x)+cos(3x)
无痛理解傅里叶变换_第4张图片
如果我们分别计算在不同频率下f(x)与sin(wx)函数的相乘,那么这条曲线是长这样的(蓝色的线=f(x)*sin(wx)):
无痛理解傅里叶变换_第5张图片
显然,我们计算的相似度其实就是这条蓝色线的面积之和,可以发现在恰好w=1的时候,这条曲线面积加起来是最大的!
在这里插入图片描述
所以傅里叶变换的本质就是在捕捉不同频率下与f(t)函数的相似性。

类似的对于cos函数,红色的线=f(x)cos(wx):
显然当w=3的时候,红色的线的面积之和也达到了最大:

无痛理解傅里叶变换_第6张图片

根据傅里叶级数,任意的函数都可以被sin和cos函数表示,那有没有一种办法,同时计算sin和cos两种相似性呢?答案是可以,我们可以用复数来实现!

无痛理解傅里叶变换_第7张图片

根据欧拉公式, e i w t \displaystyle e^{iwt} eiwt其实可以分解成cos和sin两项,所以我们只需要计算

F ( w ) = ∫ f ( t ) e i w t d t F( w) =\int f( t) e^{iwt} dt F(w)=f(t)eiwtdt

这个其实就是一个傅里叶变换了(出于传统习惯,我们一般会用 e − i w t \displaystyle e^{-iwt} eiwt,但其实这并不影响的),所以实数项就是与cos函数的相似度,虚数项就是与sin函数的相似度。

离散傅里叶变换

离散傅里叶变换其实就是考虑 f ( t ) \displaystyle f( t) f(t)的采样点,比如我们有 f ( t 1 ) , f ( t 2 ) , f ( t 3 ) , f ( t 4 ) f( t_{1}) ,f( t_{2}) ,f( t_{3}) ,f( t_{4}) f(t1),f(t2),f(t3),f(t4) 这4个点,那么离散傅里叶变换会认为这个 t = 0 , 1 , 2 , 3 \displaystyle t=0,1,2,3 t=0,1,2,3,而频率分别取 w = 2 π , 2 π 4 , 2 ∗ 2 π 4 , 3 ∗ 2 π 4 \displaystyle w=2\pi ,\frac{2\pi }{4} ,2*\frac{2\pi }{4} ,3*\frac{2\pi }{4} w=2π,42π,242π,342π来计算他们与 sin ⁡ ( w t ) \displaystyle \sin( wt) sin(wt) cos ⁡ ( w t ) \displaystyle \cos( wt) cos(wt)的相似度,即:

F s i n ( w ) = ∑ t = 0 , 1 , 2 , 3 f ( t ) sin ⁡ ( w t ) F c o s ( w ) = ∑ t = 0 , 1 , 2 , 3 f ( t ) cos ⁡ ( w t ) F_{sin}( w) =\sum _{t=0,1,2,3} f( t)\sin( wt)\\ F_{cos}( w) =\sum _{t=0,1,2,3} f( t)\cos( wt) Fsin(w)=t=0,1,2,3f(t)sin(wt)Fcos(w)=t=0,1,2,3f(t)cos(wt)

写成欧拉的形式就是

F ( w ) = ∑ t = 0 , 1 , 2 , 3 f ( t ) e i w t F( w) =\sum _{t=0,1,2,3} f( t) e^{iwt} F(w)=t=0,1,2,3f(t)eiwt

快速离散傅里叶变换(FFT)

理解快速离散傅里叶变换的关键在于,意识到:

F ( 2 π ) = ∑ t = 0 , 1 , 2 , 3 f ( t ) e i 2 π t = f ( t 1 ) + f ( t 2 ) + f ( t 3 ) + f ( t 4 ) F ( 2 π 4 ) = ∑ t = 0 , 1 , 2 , 3 f ( t ) e i 2 π 4 t = f ( t 1 ) + f ( t 2 ) e i 2 π 4 + f ( t 3 ) ( e i 2 π 4 ) 2 + f ( t 4 ) ( e i 2 π 4 ) 3 F ( 2 ∗ 2 π 4 ) = ∑ t = 0 , 1 , 2 , 3 f ( t ) ( e i 2 π 4 t ) 2 = f ( t 1 ) + f ( t 2 ) ( e i 2 π 4 ) 2 + f ( t 3 ) ( e i 2 π 4 ) 4 + f ( t 4 ) ( e i 2 π 4 ) 6 F ( 3 ∗ 2 π 4 ) = ∑ t = 0 , 1 , 2 , 3 f ( t ) ( e i 2 π 4 t ) 3 = f ( t 1 ) + f ( t 2 ) ( e i 2 π 4 ) 3 + f ( t 3 ) ( e i 2 π 4 ) 6 + f ( t 4 ) ( e i 2 π 4 ) 12 F( 2\pi ) =\sum _{t=0,1,2,3} f( t) e^{i2\pi t} =f( t_{1}) +f( t_{2}) +f( t_{3}) +f( t_{4})\\ F\left(\frac{2\pi }{4}\right) =\sum _{t=0,1,2,3} f( t) e^{i\frac{2\pi }{4} t} =f( t_{1}) +f( t_{2}) e^{i\frac{2\pi }{4}} +f( t_{3})\left( e^{i\frac{2\pi }{4}}\right)^{2} +f( t_{4})\left( e^{i\frac{2\pi }{4}}\right)^{3}\\ F\left( 2*\frac{2\pi }{4}\right) =\sum _{t=0,1,2,3} f( t)\left( e^{i\frac{2\pi }{4} t}\right)^{2} =f( t_{1}) +f( t_{2})\left( e^{i\frac{2\pi }{4}}\right)^{2} +f( t_{3})\left( e^{i\frac{2\pi }{4}}\right)^{4} +f( t_{4})\left( e^{i\frac{2\pi }{4}}\right)^{6}\\ F\left( 3*\frac{2\pi }{4}\right) =\sum _{t=0,1,2,3} f( t)\left( e^{i\frac{2\pi }{4} t}\right)^{3} =f( t_{1}) +f( t_{2})\left( e^{i\frac{2\pi }{4}}\right)^{3} +f( t_{3})\left( e^{i\frac{2\pi }{4}}\right)^{6} +f( t_{4})\left( e^{i\frac{2\pi }{4}}\right)^{12} F(2π)=t=0,1,2,3f(t)ei2πt=f(t1)+f(t2)+f(t3)+f(t4)F(42π)=t=0,1,2,3f(t)ei42πt=f(t1)+f(t2)ei42π+f(t3)(ei42π)2+f(t4)(ei42π)3F(242π)=t=0,1,2,3f(t)(ei42πt)2=f(t1)+f(t2)(ei42π)2+f(t3)(ei42π)4+f(t4)(ei42π)6F(342π)=t=0,1,2,3f(t)(ei42πt)3=f(t1)+f(t2)(ei42π)3+f(t3)(ei42π)6+f(t4)(ei42π)12

存在一种多项式的结构。换句话说,如果我们令 x = e i 2 π 4 \displaystyle x=e^{i\frac{2\pi }{4}} x=ei42π,就有

P ( x ) = f ( t 1 ) + f ( t 2 ) x + f ( t 3 ) x 2 + f ( t 4 ) x 3 P( x) =f( t_{1}) +f( t_{2}) x+f( t_{3}) x^{2} +f( t_{4}) x^{3} P(x)=f(t1)+f(t2)x+f(t3)x2+f(t4)x3

从而, F ( 2 π ) = P ( x 0 ) , F ( 2 π 4 ) = P ( x 1 ) , F ( 2 ∗ 2 π 4 ) = P ( x 2 ) , F ( 3 ∗ 2 π 4 ) = P ( x 3 ) \displaystyle F( 2\pi ) =P\left( x^{0}\right) ,F\left(\frac{2\pi }{4}\right) =P\left( x^{1}\right) ,F\left( 2*\frac{2\pi }{4}\right) =P\left( x^{2}\right) ,F\left( 3*\frac{2\pi }{4}\right) =P\left( x^{3}\right) F(2π)=P(x0),F(42π)=P(x1),F(242π)=P(x2),F(342π)=P(x3),一旦有了这种多项式的形式,我们就可以利用偶函数与奇函数的性质对多项式进行分解。简单的说就是如果是偶函数那么我们只要知道 P ( x ) \displaystyle P( x) P(x)就能知道 P ( − x ) \displaystyle P( -x) P(x)从而节省运算,当然多项式的分解会更复杂一点,但思想是一样的,具体的请看我之前的一篇文章:

理解快速离散傅里叶变换算法(FFT)

参考资料

Wavelets: a mathematical microscope

Why is a negative exponent present in Fourier and Laplace transform?

你可能感兴趣的:(人工智能,算法,python)