7-3 离散傅里叶变换与快速傅里叶变换

7-3 离散傅里叶变换与快速傅里叶变换


\qquad 周期为 N N N的信号空间是 N N N维欧几里得空间(内积空间),若 f , g f,g f,g是两个信号,则他们的内积定义为 < f , g > = ∑ n = 0 N − 1 f [ n ] g ∗ [ n ] <f,g>=\sum_{n=0}^{N-1}f[n]g^*[n] <f,g>=n=0N1f[n]g[n]

1. 循环卷积

\qquad 有限域 0 ≤ n < N 0\leq n<N 0n<N上的离散信号 f [ n ] f[n] f[n]的边界 ( n = 0 o r n = N − 1 ) (n=0 or n=N-1) (n=0orn=N1)的卷积往往需要修正.首先需要引入循环卷积的概念。
\qquad f ~ , h ~ \widetilde f,\widetilde h f ,h 是有 N N N个样本值的信号。为计算卷积 f ~ ∗ h ~ [ n ] = ∑ p = − ∞ + ∞ f ~ [ p ] h ~ [ n − p ] , 0 ≤ n < N \widetilde f*\widetilde h[n]=\sum_{p=-\infty}^{+\infty}\widetilde f[p]\widetilde h[n-p],0\leq n<N f h [n]=p=+f [p]h [np],0n<N我们必须利用 [ 0 , N ] [0,N] [0,N]之外的 f ~ [ n ] , h ~ [ n ] \widetilde f[n],\widetilde h[n] f [n],h [n]的值,一个办法是将 f ~ [ n ] , h ~ [ n ] \widetilde f[n],\widetilde h[n] f [n],h [n]作周期扩充,当 n > N n>N n>N时, f [ n ] = f ~ [ n ( m o d ) N ] , h [ n ] = h ~ [ n ( m o d ) N ] f[n]=\widetilde f[n(mod)N],h[n]=\widetilde h[n(mod)N] f[n]=f [n(mod)N],h[n]=h [n(mod)N]对于周期为N的两个函数 f ~ [ n ] , h ~ [ n ] \widetilde f[n],\widetilde h[n] f [n],h [n]它们的循环卷积定义为 f ∗ h [ n ] = ∑ p = 0 N − 1 f [ p ] h [ n − p ] = ∑ p = 0 N − 1 f [ n − p ] h [ p ] f * h[n]=\sum_{p=0}^{N-1}f[p]h[n-p]=\sum_{p=0}^{N-1}f[n-p]h[p] fh[n]=p=0N1f[p]h[np]=p=0N1f[np]h[p].
定理: 向量集 { e k [ n ] = e i 2 k π n N } 0 ≤ k < N \{e_k[n]=e^{i2k\pi \frac{n}{N}}\}_{0\leq k<N} {ek[n]=ei2kπNn}0k<N N N N周期信号空间的正交基。

\qquad f , h f,h f,h是周期的,它们的循环卷积 g = f ∗ h g=f*h g=fh的离散傅里叶变换为 g ^ ( k ) = f ^ ( k ) h ^ ( k ) \hat g(k)=\hat f(k)\hat h(k) g^(k)=f^(k)h^(k).

2.离散傅里叶变换

\qquad 上面定理给出了 N N N周期信号空间的正交基,则任意的 f f f为N周期函数可表示为 f = ∑ k = 0 N − 1 < f , e k > ∥ e k ∥ 2 e k f=\sum_{k=0}^{N-1}\frac{<f,e_k>}{\Vert e_k\Vert^2}e_k f=k=0N1ek2<f,ek>ek f f f的离散傅里叶变换(DFT)为 f ^ [ k ] = < f , e k > = ∑ n = 0 N − 1 f [ n ] e − i 2 k π n N \hat f[k]=<f,e_k>=\sum_{n=0}^{N-1}f[n]e^{-i2k\pi \frac{n}{N}} f^[k]=<f,ek>=n=0N1f[n]ei2kπNn因为 e k : k = 0 , . . . , N − 1 {e_k:k=0,...,N-1} ek:k=0,...,N1是正交的,所以 ∥ e k ∥ = N \Vert e_k\Vert=N ek=N于是 f f f的傅里叶逆变换为 f [ n ] = 1 N ∑ n = 0 N − 1 f ^ [ k ] e i 2 k π n N f[n]=\frac{1}{N}\sum_{n=0}^{N-1}\hat f[k] e^{i2k\pi\frac{n}N} f[n]=N1n=0N1f^[k]ei2kπNn

3.快速傅里叶变换 F F T FFT FFT

\qquad 对于有 N N N个点的信号 f f f,直接计算其离散傅里叶变换 f ^ [ k ] = < f , e k > = ∑ n = 0 N − 1 f [ n ] e − i 2 k π n N , 0 ≤ k < N \hat f[k]=<f,e_k>=\sum_{n=0}^{N-1}f[n]e^{-i2k\pi \frac{n}{N}},0\leq k<N f^[k]=<f,ek>=n=0N1f[n]ei2kπNn,0k<N需要 N 2 N^2 N2次乘法与加法运算,通过重新组织计算, F F t FFt FFt可将计算复杂度降至 O ( N log ⁡ 2 N ) O(N\log_2N) O(Nlog2N).具体分组如下:
\qquad 当频率指标为偶数时,将 f f f N N N n + 2 N n+\frac 2 N n+N2分组 f ^ [ 2 k ] = ∑ n = 0 2 N − 1 ( f [ n ] + f [ n + 2 N ] ) e − i 2 k π n N / 2 (1) \hat f[2k]=\sum_{n=0}^{\frac 2 N-1}(f[n]+f[n+\frac 2 N])e^{-i2k\pi \frac{n}{N/2}}\tag1 f^[2k]=n=0N21(f[n]+f[n+N2])ei2kπN/2n(1)当频率指标为奇数时,同样分组可得 f ^ [ 2 k + 1 ] = ∑ n = 0 2 N − 1 e − i 2 π n N ( f [ n ] + f [ n + 2 N ] ) e − i 2 k π n N / 2 (2) \hat f[2k+1]=\sum_{n=0}^{\frac 2 N-1}e^{-i2\pi \frac{n}{N}}(f[n]+f[n+\frac 2 N])e^{-i2k\pi \frac{n}{N/2}}\tag2 f^[2k+1]=n=0N21ei2πNn(f[n]+f[n+N2])ei2kπN/2n(2) ( 1 ) ( 2 ) (1)(2) (1)(2)可知,偶频率可由 f e [ n ] = f [ n ] + f [ n + 2 N ] (3) f_e[n]=f[n]+f[n+\frac 2 N]\tag3 fe[n]=f[n]+f[n+N2](3)的离散傅里叶变换计算,奇频率可由 f o [ n ] = e − i 2 π n N / 2 ( f [ n ] + f [ n + 2 N ] ) ) (4) f_o[n]=e^{-i2\pi \frac{n}{N/2}}(f[n]+f[n+\frac 2 N]))\tag4 fo[n]=ei2πN/2n(f[n]+f[n+N2]))(4)的离散傅里叶变换计算。于是, N N N个点信号值的离散傅里叶变换可由两个 N 2 \frac N 2 2N信号点的离散傅里叶变换加上 O ( N ) O(N) O(N)个加法运算计算得出。利用 f ∗ [ n ] = 1 N ∑ n = 0 N − 1 f ^ ∗ [ n ] e − i 2 k π n N f^*[n]=\frac{1}{N}\sum_{n=0}^{N-1}\hat f*[n] e^{-i2k\pi\frac{n}N} f[n]=N1n=0N1f^[n]ei2kπNn可以计算 f ^ \hat f f^的复共轭 f ^ ∗ \hat f^* f^的逆 F F T FFT FFT.
注: F F T FFT FFT的复杂度。记快速傅里叶变换的空间复杂度为 C ( N ) \mathcal C(N) C(N),由(3)(4)式可知,计算 f e , f o f_e,f_o fe,fo分别需要计算N次复数加法和 N 2 \frac N 2 2N次复数乘法,记 K N KN KN是其基本运算次数,则有 C ( N ) = 2 C ( N / 2 ) + K N (5) \mathcal C(N)=2C(N/2)+KN\tag5 C(N)=2C(N/2)+KN(5) l = log ⁡ 2 N l=\log_2 N l=log2N,令 T ( l ) = C ( N ) N T(l)=\frac {\mathcal C(N)} N T(l)=NC(N),则由(5)可得 C ( N ) N = 2 C ( N / 2 ) N + K \frac{\mathcal C(N)}{N}=\frac{2\mathcal C(N/2)}{N}+K NC(N)=N2C(N/2)+K于是 T ( l ) = T ( l − 1 ) + K T(l)=T(l-1)+K T(l)=T(l1)+K由于 C ( 1 ) = 0 \mathcal C(1)=0 C(1)=0,所以 T ( 0 ) = 0 T(0)=0 T(0)=0,故迭代可得 T ( l ) = K l    ⟺    C ( N ) = K N log ⁡ 2 N T(l)=Kl\iff\mathcal C(N)=KN\log_2N T(l)=KlC(N)=KNlog2N由上式可知KKT的复杂度要小于离散傅里叶变换的复杂度 N 2 N^2 N2

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值