Fourier transform笔记

https://www.youtube.com/watch?v=spUNpyF58BY
笔记

目录

  • Fourier transform
  • laplace transform
  • FFT(快速傅里叶变换)
    • DFT(离散傅里叶变换)
      • 采样频率
      • 理想情况
      • 解决相的问题
      • 真正的DFT
    • FFT引入原因
    • FFT原理

Fourier transform

Fourier transform笔记_第1张图片
对于一个声音,可以把它拆解为多个正弦波,上面是两个正弦波组成的声波,但是当情况更复杂以后
Fourier transform笔记_第2张图片
很难,从声波中提取出有用的信息,所以采用下面的方法
Fourier transform笔记_第3张图片
可以看到,将时间上的波形转换为了左下角的环形的波形,其中,与远点的距离与上面图中与时间轴相对应(白色箭头),图中,有两个频率,一个是时间上的频率,一秒内有3个beats,另一个是打包上图得到左下图的频率(图中虚线),这里是0.5c/s,也就是左下图旋转一周,时间上过了2s。不同的频率,得到的图是不同的。
Fourier transform笔记_第4张图片
Fourier transform笔记_第5张图片
把左下图中的图形当作一个整体,得到质心,绘制出下图,其中右下图中的y轴是左下图质心的x轴坐标信息。
Fourier transform笔记_第6张图片
Fourier transform笔记_第7张图片
这样就得到了频域的信息,可以看到,在3明显突起,更改幅度,依然如此
Fourier transform笔记_第8张图片
3正好是频率的值,这不是巧合,可以用它来分解波形
Fourier transform笔记_第9张图片
为什么是almost,是因为需要去掉高频信息
Fourier transform笔记_第10张图片
Fourier transform笔记_第11张图片
反向fourier transform,与正向的没有区别
Fourier transform笔记_第12张图片
现在已经有了x轴上的fourier变换,需要考虑y轴,既然是二维,可以用复数域来解决。
Fourier transform笔记_第13张图片
欧拉公式
Fourier transform笔记_第14张图片
Fourier transform笔记_第15张图片
e 2 π i f t e^{2\pi ift} e2πift
其中,f是频率,t是时间,逆时针旋转,那么顺时针旋转
e − 2 π i f t e^{-2\pi ift} e2πift
再乘以强度g(t),这就是我们需要的
Fourier transform笔记_第16张图片
这样就得到了fourier变换公式,但多了 1 t 2 − t 1 \frac{1}{t_2-t_1} t2t11,去掉这一部分就可以表示随着时间变化,质心与原点距离是变化的,不是一成不变的。
Fourier transform笔记_第17张图片

laplace transform

Fourier transform笔记_第18张图片
laplace变换就是对 e − t s i n t e^{-t}sint etsint的fourier变换
X ( ω ) = ∫ − ∞ ∞ x ( t ) e − i ω t d t X ( ω ) = ∫ 0 ∞ e − t s i n t e − i ω t d t X ( ω ) = 1 1 + ( 1 + i ω ) 2 X ( ω ) = 1 2 − ω 2 + 2 ω i X(\omega) = \int^{\infty}_{-\infty}x(t)e^{-i\omega t}dt \\ X(\omega) = \int^{\infty}_{0}e^{-t}sinte^{-i\omega t} dt \\ X(\omega) = \frac{1}{1+(1+i\omega)^2} \\ X(\omega) = \frac{1}{2-\omega^2 + 2\omega i} X(ω)=x(t)etdtX(ω)=0etsintetdtX(ω)=1+(1+)21X(ω)=2ω2+2ωi1
从第二个式子到第三个式子的推导如下
X ( ω ) = ∫ 0 ∞ e − t s i n t e − i ω t d t = − 1 1 + i ω ∫ 0 ∞ s i n t e − ( 1 + i ω ) t d ( − ( 1 + i ω ) t ) = − 1 1 + i ω s i n t e − ( 1 + i ω ) t ∣ 0 ∞ + − 1 1 + i ω ∫ 0 ∞ s i n t e − ( 1 + i ω ) t d t = − 1 1 + i ω ∫ 0 ∞ s i n t e − ( 1 + i ω ) t d t = − 1 ( 1 + i ω ) 2 c o s t e − ( 1 + i ω ) t ∣ 0 ∞ − − 1 ( 1 + i ω ) 2 ∫ 0 ∞ s i n t e − ( 1 + i ω ) t d t = 1 ( 1 + i ω ) 2 − − 1 ( 1 + i ω ) 2 ∫ 0 ∞ s i n t e − ( 1 + i ω ) t d t \begin{align} X(\omega) &= \int^{\infty}_{0}e^{-t}sinte^{-i\omega t}dt \nonumber \\ &= -\frac{1}{1+i\omega}\int^{\infty}_{0}sinte^{-(1+i\omega) t}d(-(1+i\omega) t) \nonumber \\ &= -\frac{1}{1+i\omega}sint e^{-(1+i\omega) t} |^{\infty}_{0}+ -\frac{1}{1+i\omega}\int^{\infty}_{0}sinte^{-(1+i\omega) t}dt \nonumber \\ &= -\frac{1}{1+i\omega}\int^{\infty}_{0}sinte^{-(1+i\omega) t}dt \nonumber \\ &= -\frac{1}{(1+i\omega)^2}cost e^{-(1+i\omega) t} |^{\infty}_{0} - -\frac{1}{(1+i\omega)^2}\int^{\infty}_{0}sinte^{-(1+i\omega) t}dt\nonumber \\ &= \frac{1}{(1+i\omega)^2}- -\frac{1}{(1+i\omega)^2}\int^{\infty}_{0}sinte^{-(1+i\omega) t}dt\nonumber \\ \end{align} X(ω)=0etsintetdt=1+10sinte(1+)td((1+)t)=1+1sinte(1+)t0+1+10sinte(1+)tdt=1+10sinte(1+)tdt=(1+)21coste(1+)t0(1+)210sinte(1+)tdt=(1+)21(1+)210sinte(1+)tdt
Fourier transform笔记_第19张图片
Fourier transform笔记_第20张图片
Fourier transform笔记_第21张图片
Fourier transform笔记_第22张图片
Fourier transform笔记_第23张图片
Fourier transform笔记_第24张图片

Fourier transform笔记_第25张图片
很明显, ω \omega ω控制正弦频率, α \alpha α控制指数衰减
Fourier transform笔记_第26张图片
证明如下:
∫ 0 ∞ x ′ ( t ) e − s t d t = x ( t ) e − s t ∣ 0 ∞ + s ∫ 0 ∞ e − s t x ( t ) d t = s x ( s ) − x ( 0 ) \begin{align} \int^{\infty}_{0}x'(t)e^{-st}dt&=x(t)e^{-st}|^{\infty}_{0} + s\int^{\infty}_{0}e^{-st}x(t)dt \nonumber \\ &= sx(s)-x(0) \nonumber \end{align} 0x(t)estdt=x(t)est0+s0estx(t)dt=sx(s)x(0)
所以laplace变换可以用来求解常微分方程(ODEs)

FFT(快速傅里叶变换)

FFT是DFT的计算方法,首先了解DFT

DFT(离散傅里叶变换)

实际上就是将积分表示为离散的加和形式
X [ k ] = ∑ n = 0 N − 1 x n ⋅ e − i 2 π N k n X[k] = \sum^{N-1}_{n=0}x_n\cdot e^{\frac{-i2\pi}{N}kn} X[k]=n=0N1xneNi2πkn
其中,k是频率,总共有N个采样节点,n代表第n个点。
表示为矩阵形式就是:
[ X 0 , X 1 , X 2 , ⋯   , X N − 1 ] ⏞ 1 × N = [ x 0 , x 1 , x 2 , ⋯   , x N − 1 ] ⏞ 1 × N [ k = 0 k = 1 k = 2 ⋯ k = N − 1 ↓ ↓ ↓ ↓ ] ⏞ N × N \overbrace{[X_0, X_1, X_2, \cdots, X_{N-1}]}^{1\times N} = \overbrace{[x_0, x_1, x_2, \cdots, x_{N-1}]}^{1\times N} \overbrace{\begin{bmatrix} k=0 & k=1 & k=2 & \cdots & k=N-1\\ \Bigg\downarrow & \Bigg\downarrow & \Bigg\downarrow & & \Bigg\downarrow \end{bmatrix}}^{N \times N} [X0,X1,X2,,XN1] 1×N=[x0,x1,x2,,xN1] 1×N k=0 k=1 k=2 k=N1 N×N
如果N很小的时候,这个矩阵乘法是容易计算的,但是现实中,对于信号常常有成百上千的采样点,那么计算量就非常大了,所以就需要FFT。
举例:有8个采样点,用不同频率的正弦函数去得到对应频率的值,每一个值是一个bin
Fourier transform笔记_第27张图片
下面需要理解DFT为什么这么做,以及它面临的一些问题

采样频率

首先,根据nyquist定理,要采样频率为f的信号,需要2f+1的采样点,人耳能听到的最高频声音是20khz,所以现实中采样率一般为44.1khz

理想情况

假设有一个f=2hz的余弦,那么我就希望在频域中2的位置有峰值,其他位置为0
Fourier transform笔记_第28张图片
那就将离散化得到的向量与不同频率下的波形去求相似性,如果相似度高,就代表该频率下有峰值,这也就是为什么DFT是有效的,意味着采样率一定等于最大频率(N=N)。
但是,通过计算不同频率的波的相似性,会发现问题, a 1 ⃗ = a 7 ⃗ \vec{a_1}=\vec{a_7} a1 =a7 , a 2 ⃗ = a 6 ⃗ \vec{a_2}=\vec{a_6} a2 =a6 等,导致右下图中很多值不为0
Fourier transform笔记_第29张图片
也就是A矩阵不仅不正交,还不可逆,所以不是DFT的最终版本
但是可以发现右下图的左上角这一部分是可逆的,所以每次都采样双倍,但只是采用其中的前半部分。

解决相的问题

通过之前的解决方案,无论是改变幅度,还是频率,或者是初始值,都可以实现FT的功能,但是,当改变相位的时候,频域中的值受到影响,这是不正确的。这是因为在这个变化过程中,无论是sin还是cos都会存在为0的情况,所以要将两者组合在一起。

真正的DFT

就是为sin和cos分别保存一个矩阵,合并后,就得到了我们开始的时候DFT的公式。

FFT引入原因

利用避免重复计算来提升计算速度,上图需要进行64个复数域乘法,改进后,只需要计算24个
Fourier transform笔记_第30张图片

FFT原理

对DFT中的部分用W表示,方便表达
Fourier transform笔记_第31张图片
简单来讲就是数学家利用上面提到的旋转因子W的周期性,对称性等性质进行公式化简。在算法编程中则是不断利用已经计算过的点来算新的点,即:旧点算新点。
FFT需要依赖蝶形图进行计算
X ( k ) = ∑ n = 0 N − 1 x ( n ) W N n k = ∑ n = 0 , 2 , 4 , ⋯ N − 1 x ( n ) W N n k + ∑ n = 1 , 3 , 5 ⋯ N − 1 x ( n ) W N n k → 令n=2r = ∑ r = 0 , 1 , ⋯ N 2 − 1 x ( 2 r ) W N 2 r k + ∑ r = 0 , 1 , ⋯ N 2 − 1 x ( 2 r + 1 ) W N ( 2 r + 1 ) k → x ( 2 r ) = x 1 ( r ) = ∑ r = 0 , 1 , ⋯ N 2 − 1 x 1 ( r ) W N 2 r k + ∑ r = 0 , 1 , ⋯ N 2 − 1 x 2 ( r ) W N ( 2 r + 1 ) k → W N ( 2 r + 1 ) k = W N k ∗ W N / 2 r k W N 2 r k = W N / 2 r k = ∑ r = 0 , 1 , ⋯ N 2 − 1 x 1 ( r ) W N / 2 r k + W N k ∑ r = 0 , 1 , ⋯ N 2 − 1 x 2 ( r ) W N / 2 ( r k ) = X 1 ( k ) + W N k X 2 ( k ) \begin{align} X(k) &= \sum^{N-1}_{n=0}x(n)W_N^{nk} \nonumber \\ &= \sum^{N-1}_{n=0,2,4,\cdots}x(n)W_N^{nk} + \sum^{N-1}_{n=1, 3, 5\cdots}x(n)W_N^{nk} \xrightarrow{\text{令n=2r}}\nonumber \\ &= \sum^{\frac{N}{2}-1}_{r=0,1,\cdots}x(2r)W_N^{2rk} + \sum^{\frac{N}{2}-1}_{r=0,1, \cdots}x(2r+1)W_N^{(2r+1)k} \xrightarrow{x(2r)=x_1(r)}\nonumber \\ &= \sum^{\frac{N}{2}-1}_{r=0,1,\cdots}x_1(r)W_N^{2rk} + \sum^{\frac{N}{2}-1}_{r=0,1, \cdots}x_2(r)W_N^{(2r+1)k} \xrightarrow[W_N^{(2r+1)k} = W_{N}^{k} * W_{N/2}^{rk}]{W_N^{2rk}=W_{N/2}^{rk}}\nonumber \\ &= \sum^{\frac{N}{2}-1}_{r=0,1,\cdots}x_1(r)W_{N/2}^{rk} + W_N^k\sum^{\frac{N}{2}-1}_{r=0,1, \cdots}x_2(r)W_{N/2}^{(rk)} \nonumber \\ &=X_1(k)+W_N^kX_2(k) \nonumber \end{align} X(k)=n=0N1x(n)WNnk=n=0,2,4,N1x(n)WNnk+n=1,3,5N1x(n)WNnkn=2r =r=0,1,2N1x(2r)WN2rk+r=0,1,2N1x(2r+1)WN(2r+1)kx(2r)=x1(r) =r=0,1,2N1x1(r)WN2rk+r=0,1,2N1x2(r)WN(2r+1)kWN2rk=WN/2rk WN(2r+1)k=WNkWN/2rk=r=0,1,2N1x1(r)WN/2rk+WNkr=0,1,2N1x2(r)WN/2(rk)=X1(k)+WNkX2(k)
上面的过程没有减少运算量继续进行简化
∵ X ( k ) = ∑ r = 0 , 1 , ⋯ N 2 − 1 x 1 ( r ) W N / 2 r k ∴ X 1 ( k + N / 2 ) = ∑ r = 0 , 1 , ⋯ N 2 − 1 x 1 ( r ) W N / 2 r ( k + N / 2 ) = ∑ r = 0 , 1 , ⋯ N 2 − 1 x 1 ( r ) W N / 2 r k = X 1 ( k ) \because X_(k) = \sum^{\frac{N}{2}-1}_{r=0,1,\cdots}x_1(r)W_{N/2}^{rk} \\ \therefore X_1(k+N/2) = \sum^{\frac{N}{2}-1}_{r=0,1,\cdots}x_1(r)W_{N/2}^{r(k+N/2)}=\sum^{\frac{N}{2}-1}_{r=0,1,\cdots}x_1(r)W_{N/2}^{rk} = X_1(k) X(k)=r=0,1,2N1x1(r)WN/2rkX1(k+N/2)=r=0,1,2N1x1(r)WN/2r(k+N/2)=r=0,1,2N1x1(r)WN/2rk=X1(k)
同理, X 2 ( k + N / 2 ) = X 2 ( k ) X_2(k+N/2) = X_2(k) X2(k+N/2)=X2(k)
∵ X ( k ) = X 1 ( k ) + W N k X 2 ( k ) ∴ X ( k + N / 2 ) = X 1 ( k + N / 2 ) + W N k + N / 2 X 2 ( k + N / 2 ) → W N k + N / 2 = − W N k = X 1 ( k + N / 2 ) + W N k X 2 ( k + N / 2 ) = X 1 ( k ) − W N k X 2 ( k ) \because X(k)=X_1(k)+W_N^kX_2(k) \\ \therefore \begin{align} X(k+N/2)&=X_1(k+N/2)+W_N^{k+N/2}X_2(k+N/2) \xrightarrow{W_N^{k+N/2}=-W_N^k} \nonumber \\ &= X_1(k+N/2)+W_N^{k}X_2(k+N/2) = X_1(k)-W_N^kX_2(k) \nonumber \end{align} X(k)=X1(k)+WNkX2(k)X(k+N/2)=X1(k+N/2)+WNk+N/2X2(k+N/2)WNk+N/2=WNk =X1(k+N/2)+WNkX2(k+N/2)=X1(k)WNkX2(k)
综上推导得到:
X ( k ) = X 1 ( k ) + W N k X 2 ( k ) X ( k + N / 2 ) = X 1 ( k ) − W N k X 2 ( k ) X(k)=X_1(k)+W_N^kX_2(k) \\ X(k+N/2) = X_1(k)-W_N^kX_2(k) X(k)=X1(k)+WNkX2(k)X(k+N/2)=X1(k)WNkX2(k)
这里都是用X1和X2来计算,所以缩减了计算量
继续推导
Fourier transform笔记_第32张图片
Fourier transform笔记_第33张图片
最后一步
Fourier transform笔记_第34张图片
Fourier transform笔记_第35张图片

你可能感兴趣的:(math,笔记)