使用FFT来计算IFFT

FFT是DFT的一种快读计算方式,本质上的计算逻辑是一样的,所以下面使用DFT来讨论公式,应用于FFT是一样的

公式

DFT与IDFT

DFT公式

X k = ∑ n = 0 N − 1 e − i 2 π N k n x n , k ∈ { 0 , 1 , . . . N − 1 } X_k = \sum_{n=0}^{N-1}e^{-i\frac{2\pi}{N}kn}x_n , k\in \{0,1,... N-1\} Xk=n=0N1eiN2πknxn,k{0,1,...N1}

iDFT公式

公式:
x n = 1 N ∑ k = 0 N − 1 e i 2 π N k n X k , k ∈ { 0 , 1 , . . . N − 1 } x_n = \frac{1}{N}\sum_{k=0}^{N-1}e^{i\frac{2\pi}{N}kn}X_k, k\in \{0,1,... N-1\} xn=N1k=0N1eiN2πknXk,k{0,1,...N1}


那是否可以直接DFT来计算iDFT呢?
答案是可以的

DFT计算iDFT

I F F T ( X ) = 1 N c o n j ( F F T ( c o n j ( X ) ) ) IFFT(X) = \cfrac{1}{N}conj(FFT(conj(X))) IFFT(X)=N1conj(FFT(conj(X)))

公式推导

由DFT公式开始推到

(1) 由e的幂来看,共轭操作就是将 幂 取负值 (不理解的可以复习一下欧拉公式
D F T ( x ) = ∑ n = 0 N c o n j ( e i 2 π N k n ) x n              ( 1 ) DFT(x) = \sum_{n=0}^{N}conj(e^{i\frac{2\pi}{N}kn})x_n \space\space\space\space\space\space\space\space\space\space\space\space(1) DFT(x)=n=0Nconj(eiN2πkn)xn            (1)

(2) 将x替换为conj(x)
D F T ( c o n j ( x ) ) = ∑ n = 0 N c o n j ( e i 2 π N k n ) c o n j ( x n )              ( 2 ) DFT(conj(x)) = \sum_{n=0}^{N}conj(e^{i\frac{2\pi}{N}kn}) conj(x_n) \space\space\space\space\space\space\space\space\space\space\space\space(2) DFT(conj(x))=n=0Nconj(eiN2πkn)conj(xn)            (2)

这里介绍一下共轭运算的两个公式
c o n j ( a ) c o n j ( b ) = c o n j ( a b ) c o n j ( a ) + c o n j ( b ) = c o n j ( a + b ) conj(a)conj(b) = conj(ab) \newline conj(a)+conj(b) = conj(a+b) conj(a)conj(b)=conj(ab)conj(a)+conj(b)=conj(a+b)

(2) 套用上述公式,
D F T ( c o n j ( x ) ) = c o n j ( ∑ n = 0 N e i 2 π N k n x n )              ( 3 ) DFT(conj(x)) = conj(\sum_{n=0}^{N}e^{i\frac{2\pi}{N}kn} x_n) \space\space\space\space\space\space\space\space\space\space\space\space(3) DFT(conj(x))=conj(n=0NeiN2πknxn)            (3)

(3) 右边部分其实就是N倍的IDFT,N可以从共轭运算中提出来
D F T ( c o n j ( x ) ) = N c o n j ( I D F T ( X ) )              ( 4 ) DFT(conj(x)) = Nconj(IDFT(X)) \space\space\space\space\space\space\space\space\space\space\space\space(4) DFT(conj(x))=Nconj(IDFT(X))            (4)

(4) 两边都再取一次共轭
1 N c o n j ( D F T ( c o n j ( x ) ) ) = I D F T ( X )              ( 4 ) \cfrac{1}{N}conj(DFT(conj(x))) = IDFT(X) \space\space\space\space\space\space\space\space\space\space\space\space(4) N1conj(DFT(conj(x)))=IDFT(X)            (4)

所以FFT一样有这样的结论
I F F T ( X ) = 1 N c o n j ( F F T ( c o n j ( X ) ) ) IFFT(X) = \cfrac{1}{N}conj(FFT(conj(X))) IFFT(X)=N1conj(FFT(conj(X)))

参考文档:

  1. Discrete Fourier Transform离散傅里叶变换算法
  2. How to Compute the IFFT using only the forward FFT
  • 9
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值