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=0∑N−1e−iN2πknxn,k∈{0,1,...N−1}
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=0∑N−1eiN2πknXk,k∈{0,1,...N−1}
那是否可以直接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=0∑Nconj(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=0∑Nconj(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=0∑NeiN2π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)))
参考文档: