最近想学小波分析,得先学下傅里叶变换,mark一下资料。
之前看的是MIT的一个课程,但太久了就忘掉了,这次在B站上找到一个精华版的公式推导,感觉很不错。
该系列是up主DR_CAN制作的,从三角函数的正交性,讲到周期分别为2pi,2T到无穷的函数展开,讲到傅里叶级数,再讲到傅里叶变换。都是公式推导。虽然一些定理上直接给出而没有证明,但对于工科要初步理解掌握傅里叶变换已经够用。
纯干货数学推导_傅里叶级数与傅里叶变换_Part1_三角函数的正交性
纯干货数学推导_傅里叶级数与傅里叶变换_Part2_周期为2Pi的函数展开
纯干货数学推导_傅里叶级数与傅里叶变换_Part3_周期为2L的函数展开
纯干货数学推导_傅里叶级数与傅里叶变换_Part4_傅里叶级数的复数形式
纯干货数学推导_傅里叶级数与傅里叶变换_Part5_从傅里叶级数推导傅里叶变换
纯干货数学推导_傅里叶级数与傅里叶变换_Part6_总结与闲话(完)
看完这个后, 想继续学下FFT。首先得先学习一下离散傅里叶变换DFT,暂时打算先看下另一个up主的视频:
离散傅里叶变换零基础入门-中文1(针对工科生,无需连续傅立叶变换知识)
但依然不是很好懂,最后只能去youtube上面找,排行比较高的几个视频如下:
Video1: Discrete Fourier Transform - Simple Step by Step - by Simon Xu
The Discrete Fourier Transform (DFT) - by Steve Brunton
The Fast Fourier Transform (FFT) - by Steve Brunton
知识整理
傅里叶级数
基本概念就是认为函数可以用一系列三角函数表示
f
(
t
)
=
1
2
a
0
+
∑
k
=
1
∞
(
a
k
cos
2
π
k
t
+
b
k
sin
2
π
k
t
)
(1)
f(t)=\frac{1}{2} a_{0}+\sum_{k=1}^{\infty}\left(a_{k} \cos 2 \pi k t+b_{k} \sin 2 \pi k t\right) \tag{1}
f(t)=21a0+k=1∑∞(akcos2πkt+bksin2πkt)(1)
连续傅里叶变换
X
(
F
)
=
∫
−
∞
∞
x
(
t
)
e
−
j
2
π
F
t
d
t
(2)
X(F)=\int_{-\infty}^{\infty} x(t) e^{-j 2 \pi F t} d t \tag{2}
X(F)=∫−∞∞x(t)e−j2πFtdt(2)
采用复数来表示的话,能使得原本两个的实数只需要一个复数就可以表示(目的都是为了同时表示赋值和相位差),并且求解系数只需要做一次积分即可
当然在实际工程应用中,并不会取无穷区间进行连续积分,因为一般要分析的数据或信号都是有限时间里离散取样的,如下
因此这是就需要用到离散傅里叶变换DFT
X
k
=
∑
n
=
0
N
−
1
x
n
⋅
e
−
j
2
π
k
n
N
(3)
X_{k}=\sum_{n=0}^{N-1} x_{n} \cdot e^{-\frac{j 2 \pi k n}{N}} \tag{3}
Xk=n=0∑N−1xn⋅e−Nj2πkn(3)
注意到N指代有N个信号采样。对比上面两个式子(2)和(3),发现连续傅里叶变换的F变成了k/N,t变成n。
为了方便,将式(3)中指数里的
2
π
k
n
N
\frac{2\pi kn}{N}
N2πkn写作
b
n
b_n
bn
则在第k个频率上的系数可写成
X
k
=
x
0
e
−
b
0
j
+
x
1
e
−
b
1
j
+
…
+
x
n
e
−
b
N
−
1
j
(4)
X_{k}=x_{0} e^{-b_{0} j}+x_{1} e^{-b_{1} j}+\ldots+x_{n} e^{-b_{N-1} j} \tag{4}
Xk=x0e−b0j+x1e−b1j+…+xne−bN−1j(4)
当然具体的相加可以用欧拉公式
e
j
x
=
cos
x
+
j
sin
x
(5)
e^{jx}=\cos{x}+j\sin{x}\tag{5}
ejx=cosx+jsinx(5)
则计算完后可得到
X
k
X_k
Xk,需要注意的是这个系数是复数。
我们表示成
X
k
=
A
k
+
B
k
j
X_k=A_k+B_kj
Xk=Ak+Bkj
在复数坐标系下看这个数,其大小,也就是幅值可表示为
A
k
2
+
B
k
2
\sqrt{A_k^2+B_k^2}
Ak2+Bk2,角度也就是相位则表示为
θ
=
arctan
B
k
A
k
\theta =\arctan{\frac{B_k}{A_k}}
θ=arctanAkBk
则通过公式(4),可以得到对应不同k的一个系数。
还记得对应k对应的频率F,其实是为k/N.对于一个区间为T,采样数为N的信号,则
X
k
,
k
=
1
,
2...
X_k,k=1,2...
Xk,k=1,2...对应的是频率为1/T,2/T…
而且还需要注意的是,X_k在坐标轴k上其实是对称的。则
X
k
=
X
N
−
k
X_k=X_{N-k}
Xk=XN−k 。因为我们观察一下,因为cos和sin都是周期为2pi的函数,则
e
−
j
x
e^{-jx}
e−jx也具有2pi的周期性质。所以在式(4)中,观察
X
k
X_k
Xk和
X
N
−
k
X_{N-k}
XN−k里的
b
i
b_i
bi,分别为
2
π
k
n
N
\frac{2\pi kn}{N}
N2πkn与
2
π
(
N
−
k
)
n
N
\frac{2\pi (N-k)n}{N}
N2π(N−k)n,代入欧拉公式
e
−
j
2
π
(
N
−
k
)
n
N
=
cos
(
−
2
π
(
N
−
k
)
n
N
)
+
j
sin
(
−
2
π
(
N
−
k
)
n
N
)
e^{-j\frac{2\pi (N-k)n}{N}}=\cos{(-\frac{2\pi (N-k)n}{N})}+j\sin{(-\frac{2\pi (N-k)n}{N})}
e−jN2π(N−k)n=cos(−N2π(N−k)n)+jsin(−N2π(N−k)n)
e
−
j
2
π
(
N
−
k
)
n
N
=
cos
(
−
2
π
k
n
N
)
−
j
sin
(
−
2
π
k
n
N
)
e^{-j\frac{2\pi (N-k)n}{N}}=\cos{(-\frac{2\pi kn}{N})}-j\sin{(-\frac{2\pi kn}{N})}
e−jN2π(N−k)n=cos(−N2πkn)−jsin(−N2πkn)
可发现N-k和k的基函数进行比较,实部完全相同,虚部只是符号相反而已,这样最后得到的复数模其实是一样的。