[EE261学习笔记] 1.傅里叶级数推导过程

傅里叶变换基于一个假设:所有周期函数都表示为多个三角函数的的和
因此,我们可以得到以下式子(方便起见,我们将周期定为 1 1 1,下同)

∑ k = 1 N A k sin ⁡ ( 2 π k t + φ k ) \sum_{k=1}^N A_k \sin \left(2 \pi kt + \varphi_k \right) k=1NAksin(2πkt+φk)

利用和差角公式,得到

∑ k = 1 N ( A k sin ⁡ ( 2 π k t ) cos ⁡ φ k + A k cos ⁡ ( 2 π k t ) sin ⁡ φ k ) \sum_{k=1}^N \left(A_k \sin \left( 2 \pi kt \right) \cos \varphi_k + A_k \cos \left( 2 \pi kt \right) \sin \varphi_k\right) k=1N(Aksin(2πkt)cosφk+Akcos(2πkt)sinφk)

注意到式子已经化为正弦和余弦的组合函数了,我们将系数进行代换,再加上一个常数项,即可得到傅里叶级数公式:

f ( t ) = a 0 2 + ∑ k = 1 N ( a k cos ⁡ 2 π k t + b k sin ⁡ 2 π k t ) (1) \Large f(t) = \frac{a_0}{2} + \sum_{k=1}^N \left(a_k \cos 2 \pi kt+ b_k \sin 2 \pi kt \right) \tag 1 f(t)=2a0+k=1N(akcos2πkt+bksin2πkt)(1)

其中 a 0 2 \frac{a_0}{2} 2a0 在电路中被称为直流分量(就是一条直线,常数),常数项取 a 0 2 \frac{a_0}{2} 2a0 只是为了实际计算方便


由欧拉公式,我们有

e 2 π i k t = cos ⁡ 2 π k t + i sin ⁡ 2 π k t e^{2 \pi ikt} = \cos 2 \pi kt + i \sin 2 \pi kt e2πikt=cos2πkt+isin2πkt

其变形为

cos ⁡ 2 π k t = e 2 π i k t + e − 2 π i k t 2 (2) \cos 2 \pi kt = \frac{e^{2 \pi ikt} + e^{-2 \pi ikt}}{2} \tag 2 cos2πkt=2e2πikt+e2πikt(2)

sin ⁡ 2 π k t = e 2 π i k t − e − 2 π i k t 2 i (3) \sin 2 \pi kt = \frac{e^{2 \pi ikt} - e^{-2 \pi ikt}}{2i} \tag 3 sin2πkt=2ie2πikte2πikt(3)

由这两式,我们可以将傅里叶级数写成其复数形式:

f ( t ) = ∑ k = − N N C k e 2 π i k t (4) f(t) = \sum_{k=-N}^N C_k e^{2 \pi ikt} \tag 4 f(t)=k=NNCke2πikt(4)

注意到

  1. 求和项下限由原本的 k = 1 k=1 k=1 变成了 k = − N k=-N k=N
  2. 同时需要注意系数 C k C_k Ck 满足 C − k = C k ‾ C_{-k} = \overline{C_k} Ck=Ck,即第 k k k 项系数是第 − k -k k 项系数的共轭

需要注意,在傅里叶级数中的第 k k k 项,等价于其复数形式下的 − k -k k 项与 k k k 项之和,为了证明这一点,我们不妨设 C k = α + β i C_k = \alpha + \beta i Ck=α+βi,当上述条件2满足时(即满足 C − k = α − β i C_{-k} = \alpha - \beta i Ck=αβi), ( 4 ) (4) (4) 式中的所有的虚数项都可以被抵消:
( 4 ) (4) (4) 式的求和项中,第 k k k 加上第 − k -k k 的结果为:

( α e 2 π i k t + β e 2 π i k t ) + ( α e 2 π i ( − k ) t − β e 2 π i ( − k ) t ) \left(\alpha e^{2 \pi ikt} + \beta e^{2 \pi ikt} \right)+ \left(\alpha e^{2 \pi i \left(-k \right) t} - \beta e^{2 \pi i \left(-k \right)t} \right) (αe2πikt+βe2πikt)+(αe2πi(k)tβe2πi(k)t)

利用欧拉公式的变形公式 ( 2 ) (2) (2) ( 3 ) (3) (3),容易得到上式等于:

2 α cos ⁡ 2 π k t + 2 β sin ⁡ 2 π k t 2\alpha \cos 2 \pi kt + 2\beta \sin 2 \pi kt 2αcos2πkt+2βsin2πkt

即所有的虚数项全部都抵消掉了,这个结果显然与 ( 1 ) (1) (1) 式的非常数项部分是等价的,同时, ( 4 ) (4) (4) 式中的 k = 0 k=0 k=0 项即对应傅里叶级数的常数项。故 ( 4 ) (4) (4) 式为 ( 1 ) (1) (1) 式在复平面上的等价公式


下面我们来求系数 c k c_k ck
假设 m ∈ [ − N , N ] m \in [-N, N] m[N,N],则 ( 4 ) (4) (4) 式可以改写为

  f ( t ) = ⋯ + C m e 2 π i m t + ⋯   = C m e 2 π i m t + ∑ k ≠ m C k e 2 π i k t \begin{aligned} \ f(t) &= \cdots + C_me^{2 \pi imt} + \cdots \\ \ &=C_me^{2 \pi imt} + \sum_{k \neq m} C_k e^{2 \pi ikt} \end{aligned}  f(t) =+Cme2πimt+=Cme2πimt+k=mCke2πikt

即写成第 m m m 项与除 m m m 项以外项的和的形式。我们令等式两边同乘 e − 2 π i m t e^{-2 \pi imt} e2πimt,并移项,得到:

C m = f ( t ) e − 2 π i m t − ∑ k ≠ m C k e 2 π i ( k − m ) t C_m = f(t)e^{-2 \pi imt} - \sum_{k \neq m}C_ke^{2 \pi i(k-m)t} Cm=f(t)e2πimtk=mCke2πi(km)t

我们对等式两边求积分

∫ 0 1 C m d t = ∫ 0 1 f ( t ) e − 2 π i m t d t − ∑ k ≠ m C k ∫ 0 1 e 2 π i ( k − m ) t d t (5) \int_0^1 C_mdt = \int_0^1 f(t)e^{-2 \pi imt} dt - \sum_{k \neq m} C_k\int_0^1 e^{2\pi i(k-m)t} dt \tag 5 01Cmdt=01f(t)e2πimtdtk=mCk01e2πi(km)tdt(5)

易知等式左边即为 c m c_m cm
而对于等式右边的两个积分,我们先看第二项,即求和公式中的积分项:

  ∫ 0 1 e 2 π i ( k − m ) t d t = 1 2 π i ( k − m ) e 2 π i ( k − m ) t ∣ 0 1   = 1 2 π i ( k − m ) ( e 2 π i ( k − m ) − 1 ) \begin{aligned} \ \int_0^1 e^{2\pi i(k-m)t} dt &= \left. \frac{1}{2\pi i(k-m)}e^{2\pi i(k-m)t} \right | _0^1\\ \ & = \frac{1}{2\pi i(k-m)}(e^{2\pi i(k-m)}-1) \end{aligned}  01e2πi(km)tdt =2πi(km)1e2πi(km)t01=2πi(km)1(e2πi(km)1)

根据欧拉公式,我们有

e 2 π i ( k − m ) = cos ⁡ 2 π ( k − m ) + i sin ⁡ 2 π ( k − m ) e^{2\pi i(k-m)} = \cos2\pi (k-m) + i\sin 2\pi (k-m) e2πi(km)=cos2π(km)+isin2π(km)

由于 k ≠ m k\neq m k=m 且为 k k k m m m 均为整数,故上式恒等于 1 1 1,于是,我们可以得到:

∫ 0 1 e 2 π i ( k − m ) t d t = 0 \int_0^1 e^{2\pi i(k-m)t} dt = 0 01e2πi(km)tdt=0

( 5 ) (5) (5) 式可以写为:

C m = ∫ 0 1 f ( t ) e − 2 π i m t d t C_m = \int_0^1 f(t)e^{-2\pi imt} dt Cm=01f(t)e2πimtdt

因此对于 ( 4 ) (4) (4) 式中的任意 k k k,我们有

C k = ∫ 0 1 f ( t ) e − 2 π i k t d t (6) C_k = \int_0^1 f(t)e^{-2\pi ikt} dt \tag 6 Ck=01f(t)e2πiktdt(6)

( 4 ) (4) (4) 式和 ( 6 ) (6) (6) 式,我们将 C k C_k Ck f ^ ( k ) \hat{f}(k) f^(k) 代换,可以得到傅里叶级数公式及其系数公式:

f ( t ) = ∑ k = − ∞ ∞ f ^ ( k ) e 2 π i k t (7) \Large f(t) = \sum_{k=-\infty}^\infty \hat{f}(k) e^{2 \pi ikt} \tag 7 f(t)=k=f^(k)e2πikt(7)

f ^ ( k ) = ∫ 0 1 f ( t ) e − 2 π i k t d t (8) \Large\hat{f}(k) = \int_0^1 f(t)e^{-2\pi ikt} dt \tag 8 f^(k)=01f(t)e2πiktdt(8)

由于在实际应用中,信号往往是不连续的,如方波,或者是连续单不是处处可微的,如三角波,这些波形下我们无法用有限的 k k k 来还原原信号。换句话说,任何平滑成分的缺失都会产生无穷项的和,即 ( 7 ) (7) (7) 式中 k k k 的范围变为从 − ∞ -\infty ∞ \infty

  • 15
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
按时间抽取的基2快速傅立叶算法的推导过程可以分为两个部分:第一部分是将FFT分解为多个级别,第二部分是对每个级别进行基2蝶形运算。 第一部分: 假设FFT的长度为N,可以将FFT分解为log2(N)个级别。在第k级别,将FFT的长度划分为2^k个子序列,每个子序列的长度为N/(2^k)。假设FFT输入的复数序列为x(n),第k级别的输出为X_k(m),其中n和m均为序列的下标。 在第0级别,输入为x(n),输出为X_0(m)。根据傅立叶变换的定义,X_0(m)可以表示为: X_0(m) = sum(x(n) * exp(-2πi * m * n / N)), n=0,1,...,N-1 在第1级别,输入序列可以分为两个子序列:偶数项序列x_e(n)和奇数项序列x_o(n),其中: x_e(n) = x(2n), n=0,1,...,N/2-1 x_o(n) = x(2n+1), n=0,1,...,N/2-1 对这两个子序列分别进行FFT变换,得到X_e(m)和X_o(m)。根据傅立叶变换的性质,可以得到: X_k(m) = X_e(m) + exp(-2πi * m / N) * X_o(m) 其中,k表示级别,m表示序列的下标。 在第k级别,可以将输入序列分为2^k个子序列,每个子序列的长度为N/(2^k),然后对每个子序列分别进行FFT变换,得到X_e(m)和X_o(m),再按照上述公式得到X_k(m)。 第二部分: 每个级别的输出X_k(m)可以表示为两个部分的和:X_e(m)和exp(-2πi * m / N) * X_o(m)。这两个部分可以看成是一个基2蝶形运算(butterfly operation)的输出,其中: X_e(m) = X_k(m) + X_k(m + N/2) X_o(m) = (X_k(m) - X_k(m + N/2)) * exp(2πi * m / N) 对于每个级别,都需要进行N次基2蝶形运算,因此总共需要进行N log2(N)次基2蝶形运算。 综上所述,按时间抽取的基2快速傅立叶算法可以高效地计算离散傅立叶变换。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值