本篇对应视频19-22节,讲义第六章
离散傅里叶变换(DFT)的引入
上一节提到了,一个信号不可能同时在时域和频域受限,而我们现实世界中的信号往往在时域和频域中都是有限的,因此这两者存在很大的冲突。在计算机中,也不能够处理连续的信号,只能将处理它的离散形式。也就是说我们的目标是:
1.将时间
t
t
t限制在一定范围内:
0
<
=
t
<
=
L
0<=t<=L
0<=t<=L
2.将频率
s
s
s限制在一定范围:
0
<
=
s
<
=
2
B
0<=s<=2B
0<=s<=2B,其中
2
B
2B
2B为带宽
3.将
f
(
t
)
f(t)
f(t)、
F
f
(
s
)
Ff(s)
Ff(s)离散地近似
那么这就需要用到离散傅里叶变换,所谓离散傅里叶变换就是指在时域和频域中采样,用这些采样点来近似信号在时域和频域中的表现形式。那么第一个问题就是如何采样?
上一节的采样定理指出:如果想要重建原信号,在时域中要根据频域中的带宽来确定采样的间距,即
1
p
\frac{1}{p}
p1,其中
p
p
p为带宽。那么显然在离散的情况下,
f
(
t
)
f(t)
f(t)中的采样间隔也应该为
1
2
B
\frac{1}{2B}
2B1。时域中的采样由频域的限制决定,那么显然频域中的采样也应该由时域中的限制所决定,在
F
f
(
s
)
Ff(s)
Ff(s)中采样应该以
1
L
\frac{1}{L}
L1为采样间隔。
假设在时域中采样了
N
N
N个点,有关系
L
=
1
2
B
⋅
N
L = \frac{1}{2B} · N
L=2B1⋅N即
N
=
2
B
L
N = 2BL
N=2BL
假设在频域中采样了
N
′
N'
N′个点,有关系
2
B
=
1
L
⋅
N
′
2B = \frac{1}{L} ·N'
2B=L1⋅N′即
N
′
=
2
B
L
N' = 2BL
N′=2BL,因此
N
′
=
N
N'=N
N′=N
故在时域和频域中采样的点的个数是相同的。
设N个采样点的下标分别为
0
、
1
、
2
、
3
、
⋅
⋅
⋅
、
N
−
1
0、1、2、3、···、N-1
0、1、2、3、⋅⋅⋅、N−1,则
f
(
t
)
f(t)
f(t)的离散形式为
f
(
t
0
)
,
f
(
t
1
)
、
⋅
⋅
⋅
、
f
(
t
N
−
1
)
f(t_0),f(t_1)、···、f(t_{N-1})
f(t0),f(t1)、⋅⋅⋅、f(tN−1)。由这些离散的点可以定义离散的傅里叶变换:
F
f
(
s
)
=
∑
n
=
0
N
−
1
f
(
t
n
)
e
−
2
π
i
s
t
n
Ff(s) = \sum_{n=0}^{N-1}f(t_n)e^{-2\pi ist_n}
Ff(s)=n=0∑N−1f(tn)e−2πistn
因此
F
f
(
s
)
Ff(s)
Ff(s)的离散形式为:
F
f
(
s
m
)
=
∑
n
=
0
N
−
1
f
(
t
n
)
e
−
2
π
i
s
m
t
n
Ff(s_m) = \sum_{n=0}^{N-1}f(t_n)e^{-2\pi is_mt_n}
Ff(sm)=∑n=0N−1f(tn)e−2πismtn其中
m
=
0
、
1
、
2
、
3
、
⋅
⋅
⋅
、
N
−
1
m=0、1、2、3、···、N-1
m=0、1、2、3、⋅⋅⋅、N−1
注意到:
s
m
=
m
T
s_m = \frac{m}{T}
sm=Tm
t
n
=
n
2
B
t_n = \frac{n}{2B}
tn=2Bn 因此有
F
f
(
s
m
)
=
∑
n
=
0
N
−
1
f
(
t
n
)
e
−
2
π
i
m
n
N
Ff(s_m) = \sum_{n=0}^{N-1}f(t_n)e^{-2\pi i\frac{mn}{N}}
Ff(sm)=∑n=0N−1f(tn)e−2πiNmn其中
m
=
0
、
1
、
2
、
3
、
⋅
⋅
⋅
、
N
−
1
m=0、1、2、3、···、N-1
m=0、1、2、3、⋅⋅⋅、N−1
由此给出离散傅里叶变换的定义:
设有离散信号
f
=
(
f
[
0
]
,
f
[
1
]
,
f
[
2
]
,
⋅
⋅
⋅
,
f
[
N
−
1
]
)
f = (f[0],f[1],f[2],···,f[N-1])
f=(f[0],f[1],f[2],⋅⋅⋅,f[N−1]),对应的离散傅里叶变换的信号为
F
=
(
F
[
0
]
,
F
[
1
]
,
F
[
2
]
,
⋅
⋅
⋅
,
F
[
N
−
1
]
)
F = (F[0],F[1],F[2],···,F[N-1])
F=(F[0],F[1],F[2],⋅⋅⋅,F[N−1]),其中
F
[
m
]
=
∑
k
=
0
N
−
1
f
[
k
]
e
−
2
π
i
m
k
N
F[m] = \sum_{k=0}^{N-1}f[k]e^{-2\pi i\frac{mk}{N}}
F[m]=k=0∑N−1f[k]e−2πiNmk
w记号
为了方便,将
e
2
π
i
N
e^{\frac{2\pi i}{N}}
eN2πi记作
w
N
w_N
wN或
w
w
w,
w
N
0
=
e
2
π
i
⋅
0
N
w_N^0 = e^{\frac{2\pi i·0}{N}}
wN0=eN2πi⋅0、
w
N
1
=
e
2
π
i
⋅
1
N
w_N^1 = e^{\frac{2\pi i·1}{N}}
wN1=eN2πi⋅1、···、
w
N
N
=
e
2
π
i
⋅
N
N
w_N^N = e^{\frac{2\pi i·N}{N}}
wNN=eN2πi⋅N
用
w
\bf{w}
w表示序列:
(
1
,
w
1
,
w
2
,
w
3
,
⋅
⋅
⋅
,
w
N
−
1
)
(1,w^1,w^2,w^3,···,w^{N-1})
(1,w1,w2,w3,⋅⋅⋅,wN−1)
用
w
k
\bf{w}^k
wk表示序列:
(
1
,
w
k
,
w
2
k
,
w
3
k
,
⋅
⋅
⋅
,
w
(
N
−
1
)
k
)
(1,w^{k},w^{2k},w^{3k},···,w^{(N-1)k})
(1,wk,w2k,w3k,⋅⋅⋅,w(N−1)k)
因此离散傅里叶变换可以简单表示为:
F
[
m
]
=
∑
k
=
0
N
−
1
f
[
k
]
w
−
k
[
m
]
F[m] = \sum_{k=0}^{N-1}f[k]{\bf{w}}^{-k}[m]
F[m]=k=0∑N−1f[k]w−k[m]
w \bf{w} w的所有运算等同于向量的运算,需要注意的是 w \bf{w} w中的每一个元素都是复数,在做内积的时候注意要取共轭。
w k \bf{w}^k wk具有正交性,下面来证明: w k ⋅ w m ‾ = 1 + w k − m + w 2 ( k − m ) + ⋅ ⋅ ⋅ + w ( N − 1 ) ( k − m ) \bf{{w}^k}·\overline{\bf{{w}^m}}=\rm1+w^{k-m}+w^{2(k-m)}+···+w^{(N-1)(k-m)} wk⋅wm=1+wk−m+w2(k−m)+⋅⋅⋅+w(N−1)(k−m)
当
(
k
−
m
)
m
o
d
N
=
0
(k - m) mod N = 0
(k−m)modN=0时:上式
=
N
=N
=N
当$(k - m) mod N ≠ 0
时
:
上
式
时:上式
时:上式= 1·\frac{1-{{({w}{k-m})}N}}{1-{{w}^{k-m}}} $
其中
(
w
k
−
m
)
N
=
e
2
π
i
(
k
−
m
)
=
1
{({w}^{k-m})}^N = e^{2\pi i(k-m)} = 1
(wk−m)N=e2πi(k−m)=1,故
1
⋅
1
−
(
w
k
−
m
)
N
1
−
w
k
−
m
=
0
1·\frac{1-{{({w}^{k-m})}^N}}{1-{{w}^{k-m}}} = 0
1⋅1−wk−m1−(wk−m)N=0
因此在
k
、
m
<
N
k、m<N
k、m<N 且$ k≠m
时
,
时,
时,\bf{w}k$与$\bf{w}m$是正交的。
DFT中的共轭
在傅里叶变换中,有
F
f
(
−
s
)
=
F
f
(
s
)
‾
Ff(-s) = \overline{Ff(s)}
Ff(−s)=Ff(s),那么在离散傅里叶变换中也应该有类似的性质。
首先来看一下一个特殊的位置:
F
f
[
N
2
]
=
∑
k
=
0
N
−
1
f
[
k
]
w
−
k
[
N
2
]
=
∑
k
=
0
N
−
1
f
[
k
]
e
−
π
i
k
=
∑
k
=
0
N
−
1
f
[
k
]
(
−
1
)
−
k
Ff[\frac{N}{2}] = \sum_{k=0}^{N-1}f[k]{\bf{w}}^{-k}[\frac{N}{2}] = \sum_{k=0}^{N-1}f[k]e^{-\pi ik} = \sum_{k=0}^{N-1}f[k](-1)^{-k}
Ff[2N]=∑k=0N−1f[k]w−k[2N]=∑k=0N−1f[k]e−πik=∑k=0N−1f[k](−1)−k
显然
F
f
[
N
2
]
Ff[\frac{N}{2}]
Ff[2N]是一个实数,它也是频谱的分界线,来看
F
f
[
N
2
+
1
]
Ff[\frac{N}{2} +1]
Ff[2N+1]、
F
f
[
N
2
−
1
]
Ff[\frac{N}{2} -1]
Ff[2N−1]:
F
f
[
N
2
+
1
]
=
∑
k
=
0
N
−
1
f
[
k
]
w
−
k
(
−
1
)
−
k
Ff[\frac{N}{2} +1] = \sum_{k=0}^{N-1}f[k]w^{-k}(-1)^{-k}
Ff[2N+1]=∑k=0N−1f[k]w−k(−1)−k
F
f
[
N
2
−
1
]
=
∑
k
=
0
N
−
1
f
[
k
]
w
k
(
−
1
)
−
k
Ff[\frac{N}{2} -1] = \sum_{k=0}^{N-1}f[k]w^{k}(-1)^{-k}
Ff[2N−1]=∑k=0N−1f[k]wk(−1)−k
不难得出:
F
f
[
N
2
+
1
]
=
F
f
[
N
2
−
1
]
‾
Ff[\frac{N}{2} +1] = \overline{Ff[\frac{N}{2} -1]}
Ff[2N+1]=Ff[2N−1]
因此
N
/
2
N/2
N/2就是离散傅里叶变换的一个分界线,它相当于傅里叶变换中
s
=
0
s=0
s=0的分界作用,当
m
>
N
/
2
m > N/2
m>N/2时,为正频率;当
m
<
N
/
2
m < N/2
m<N/2时为负频率。并且有关系:
F
f
[
m
]
=
F
f
[
n
−
m
]
‾
Ff[m] = \overline{Ff[n-m]}
Ff[m]=Ff[n−m]
傅里叶变换中 F f ( 0 ) Ff(0) Ff(0)为信号在时域的一范数,即 F f ( 0 ) = ∫ − ∞ ∞ f ( t ) d t Ff(0)=\int_{-\infty}^{\infty}f(t)dt Ff(0)=∫−∞∞f(t)dt在离散傅里叶变换中 F f [ 0 ] = ∑ k = 0 N − 1 f [ k ] Ff[0] = \sum_{k=0}^{N-1}f[k] Ff[0]=k=0∑N−1f[k]为离散的求和形式。
典型离散信号的离散傅里叶变换
我们用标志+下划线的形式来表示一个离散序列,例如:
1
‾
\underline{1}
1表示全为1的序列:
(
1
,
1
,
1
,
1
,
⋅
⋅
⋅
,
1
)
(1,1,1,1,···,1)
(1,1,1,1,⋅⋅⋅,1)
δ
0
‾
\underline{δ_0}
δ0表示只有在零处为1的序列:
(
1
,
0
,
0
,
0
,
⋅
⋅
⋅
,
0
)
(1,0,0,0,···,0)
(1,0,0,0,⋅⋅⋅,0)
δ
a
‾
\underline{δ_a}
δa表示只有在a处为1的序列,
a
=
1
a=1
a=1时:
(
0
,
1
,
0
,
0
,
⋅
⋅
⋅
,
0
)
(0,1,0,0,···,0)
(0,1,0,0,⋅⋅⋅,0)
w
‾
\underline{w}
w表示序列:
(
1
,
w
1
,
w
2
,
w
3
,
⋅
⋅
⋅
,
w
N
−
1
)
(1,w^1,w^2,w^3,···,w^{N-1})
(1,w1,w2,w3,⋅⋅⋅,wN−1)
下面来对
δ
0
‾
\underline{δ_0}
δ0作DFT:
F
δ
0
‾
=
∑
n
=
0
N
−
1
δ
0
‾
[
n
]
w
−
n
‾
=
w
0
‾
=
1
‾
{F\underline{δ_0}} = \sum_{n=0}^{N-1}\underline{δ_0}[n]\underline{w^{-n}} = \underline{w^0} = \underline{1}
Fδ0=n=0∑N−1δ0[n]w−n=w0=1
对
δ
a
‾
\underline{δ_a}
δa作DFT:
F
δ
a
‾
=
∑
n
=
0
N
−
1
δ
a
‾
[
n
]
w
−
n
‾
=
w
−
a
‾
{F\underline{δ_a}} = \sum_{n=0}^{N-1}\underline{δ_a}[n]\underline{w^{-n}} = \underline{w^{-a}}
Fδa=n=0∑N−1δa[n]w−n=w−a
对
w
k
‾
\underline{w^k}
wk作DFT:
F
w
k
‾
[
m
]
=
∑
n
=
0
N
−
1
w
k
‾
[
n
]
w
−
n
‾
[
m
]
=
∑
n
=
0
N
−
1
e
2
π
i
k
n
N
e
−
2
π
i
m
n
N
=
(
w
k
‾
⋅
w
m
‾
)
{F\underline{w^k}}[m] = \sum_{n=0}^{N-1}\underline{w^k}[n]\underline{w^{-n}}[m] = \sum_{n=0}^{N-1} e^{\frac{2\pi ikn}{N}}e^{\frac{-2\pi imn}{N}} = (\overline{w^{k}}·\overline{w^{m}})
Fwk[m]=n=0∑N−1wk[n]w−n[m]=n=0∑N−1eN2πikneN−2πimn=(wk⋅wm)
由前面关于
w
w
w正交性的证明,可知当
m
=
k
m=k
m=k时:${F\underline{w^k}}[m] = N
;
当
;当
;当m≠k
时
:
时:
时:{F\underline{w^k}}[m] = 0$
因此
F
w
k
‾
[
m
]
=
N
δ
k
{F\underline{w^k}}[m] = Nδ_k
Fwk[m]=Nδk
DFT中的对偶性
对于一个离散序列,尽管它本身是有限的,但应该也将其视为周期的,比如对于一个长度为
4
4
4的序列
(
t
0
,
t
1
,
t
2
,
t
3
)
(t_0,t_1,t_2,t_3)
(t0,t1,t2,t3),应该将其看做是这个序列的周期延拓,
t
4
t_4
t4应该等于
t
1
t_1
t1,
t
5
t_5
t5应该等于
t
2
t_2
t2。在这个基础上来考虑反转序列:在一个序列的右上角加符号表示反转序列,例如
w
‾
−
=
(
w
[
N
]
,
w
[
N
−
1
]
,
w
[
N
−
2
]
,
w
[
N
−
3
]
,
⋅
⋅
⋅
,
w
[
1
]
)
\underline{w}^{-} = (\bf w[N],\bf w[N-1],\bf w[N-2],\bf w[N-3],···,\bf w[1])
w−=(w[N],w[N−1],w[N−2],w[N−3],⋅⋅⋅,w[1])
注意反转序列将序列的顺序为从
N
N
N开始一直减到
1
1
1,并不是从
N
−
1
N-1
N−1减到
0
0
0。
利用周期性:
w
‾
−
1
=
(
1
,
w
−
1
,
w
−
2
,
w
−
1
,
⋅
⋅
⋅
,
w
−
(
N
−
1
)
)
=
\underline{w}^{-1} = (1,w^{-1},w^{-2},w^{-1},···,w^{-(N-1)}) =
w−1=(1,w−1,w−2,w−1,⋅⋅⋅,w−(N−1))=
(
w
[
0
]
,
w
[
−
1
]
,
w
[
−
2
]
,
w
[
−
3
]
,
⋅
⋅
⋅
,
w
[
−
(
N
−
1
)
]
)
=
(
w
[
N
]
,
w
[
N
−
1
]
,
w
[
N
−
2
]
,
w
[
N
−
3
]
,
⋅
⋅
⋅
,
w
[
1
]
)
(\bf w[0],\bf w[-1],\bf w[-2],\bf w[-3],···,\bf w[-(N-1)]) = (\bf w[N],\bf w[N-1],\bf w[N-2],\bf w[N-3],···,\bf w[1])
(w[0],w[−1],w[−2],w[−3],⋅⋅⋅,w[−(N−1)])=(w[N],w[N−1],w[N−2],w[N−3],⋅⋅⋅,w[1])
由此可得:$\underline{w}^{-} =\underline{w}^{-1} $ ,不难推出:
(
w
k
)
‾
−
=
w
‾
−
k
\underline{(w^k)}^{-} =\underline{w}^{-k}
(wk)−=w−k
如果对反转序列做离散傅里叶变换就有:
F
‾
f
−
=
∑
k
=
0
N
−
1
f
−
[
k
]
w
‾
−
k
=
∑
k
=
0
N
−
1
f
[
N
−
k
]
w
‾
−
k
\underline{F}f^{-} = \sum_{k=0}^{N-1}f^{-}[k]\underline{w}^{-k} = \sum_{k=0}^{N-1}f[N-k]\underline{w}^{-k}
Ff−=k=0∑N−1f−[k]w−k=k=0∑N−1f[N−k]w−k
设$l = N - k $ 得到
∑
l
=
N
1
f
[
l
]
w
‾
l
−
N
=
∑
l
=
N
1
f
[
l
]
w
‾
l
=
∑
l
=
0
N
−
1
f
[
l
]
w
‾
l
=
(
∑
l
=
0
N
−
1
f
[
l
]
w
‾
−
l
)
−
=
(
F
‾
f
)
−
\sum_{l=N}^{1}f[l]\underline{w}^{l-N} = \sum_{l=N}^{1}f[l]\underline{w}^{l} =\sum_{l=0}^{N-1}f[l]\underline{w}^{l} = (\sum_{l=0}^{N-1}f[l]\underline{w}^{-l})^-=(\underline{F}f)^-
l=N∑1f[l]wl−N=l=N∑1f[l]wl=l=0∑N−1f[l]wl=(l=0∑N−1f[l]w−l)−=(Ff)−
这几步取等的原因就不说了,务必要思考清楚。
在傅里叶变换中有对偶性:
F
F
f
(
s
)
=
f
(
−
s
)
FFf(s) = f(-s)
FFf(s)=f(−s),即对一个信号做两次傅里叶变换,得到是原信号的反转信号,那么在离散傅里叶变换中:
F
‾
F
‾
f
=
∑
k
=
0
N
−
1
f
[
k
]
F
‾
w
−
k
=
∑
k
=
0
N
−
1
f
[
k
]
N
δ
−
k
=
N
∑
k
=
0
N
−
1
f
[
k
]
δ
−
k
=
N
f
−
\underline{F}\underline{F}f = \sum_{k=0}^{N-1}f[k]\underline{F}w^{-k}=\sum_{k=0}^{N-1}f[k]Nδ_{-k} =N\sum_{k=0}^{N-1}f[k]δ_{-k}=Nf^-
FFf=k=0∑N−1f[k]Fw−k=k=0∑N−1f[k]Nδ−k=Nk=0∑N−1f[k]δ−k=Nf−
同样这几步取等的原因也务必思考清楚。
由此得出结论:对一个规模为 N N N的离散信号连续做两次离散傅里叶变换,得到的是原引号的反转信号乘上规模 N N N。
离散逆傅里叶变换
目前还没有定义离散逆傅里叶变换的公式,那么先考虑一下它的功能:
在上面推导了:
F
F
f
=
N
f
−
FFf = Nf^-
FFf=Nf−两边同时做离散逆傅里叶变换,应该得到:
F
f
=
F
−
N
f
−
Ff = F^-Nf^-
Ff=F−Nf−
由此不难得出离散逆傅里叶变换应该实现:
F
−
f
=
1
N
F
f
−
F^-f = \frac{1}{N}Ff^-
F−f=N1Ff−的功能。
因此将离散傅里叶变换的公式代入即可得到离散逆傅里叶变换的公式:
F
‾
−
f
=
1
N
F
‾
f
−
=
1
N
(
F
‾
f
)
−
=
1
N
∑
k
=
0
N
−
1
f
[
k
]
w
k
[
m
]
\underline{F}^-f = \frac{1}{N}\underline{F}f^- = \frac{1}{N}(\underline{F}f)^- = \frac{1}{N}\sum_{k=0}^{N-1}f[k]{\bf{w}}^{k}[m]
F−f=N1Ff−=N1(Ff)−=N1k=0∑N−1f[k]wk[m]
下面来算一个具体的实例:
求
w
−
a
‾
\underline{w^{-a}}
w−a的离散逆傅里叶变换:
F
−
w
−
a
‾
[
m
]
=
1
N
∑
k
=
0
N
−
1
w
−
a
k
w
k
[
m
]
=
1
N
∑
k
=
0
N
−
1
w
−
a
k
w
k
m
=
1
N
∑
k
=
0
N
−
1
(
w
a
k
⋅
w
k
m
)
F^-\underline{w^{-a}}[m] = \frac{1}{N}\sum_{k=0}^{N-1}w^{-ak}{\bf{w}}^{k}[m] = \frac{1}{N}\sum_{k=0}^{N-1}w^{-ak}w^{km} = \frac{1}{N}\sum_{k=0}^{N-1}(w^{ak}·w^{km})
F−w−a[m]=N1k=0∑N−1w−akwk[m]=N1k=0∑N−1w−akwkm=N1k=0∑N−1(wak⋅wkm)
=
1
N
⋅
N
⋅
δ
a
‾
=
δ
a
‾
= \frac{1}{N}·N·\underline{δ_a} = \underline{δ_a}
=N1⋅N⋅δa=δa
在前面求出了
δ
a
δ_a
δa的离散傅里叶变换为:
w
−
a
‾
\underline{w^{-a}}
w−a,这表明离散逆傅里叶变换的公式是准确无误的。
离散(逆)傅里叶变换的矩阵形式
F
[
m
]
=
∑
k
=
0
N
−
1
f
[
k
]
w
−
k
[
m
]
F[m] = \sum_{k=0}^{N-1}f[k]{\bf{w}}^{-k}[m]
F[m]=k=0∑N−1f[k]w−k[m]
对照着这个公式,将
F
F
F与
f
\bf f
f 都看成列向量,不难得出离散傅里叶变换的矩阵形式:
M
D
F
T
=
∣
1
1
1
⋅
⋅
⋅
1
1
w
−
1
w
−
2
⋅
⋅
⋅
w
−
(
N
−
1
)
1
w
−
2
w
−
4
⋅
⋅
⋅
w
−
2
(
N
−
1
)
1
w
−
3
w
−
6
⋅
⋅
⋅
w
−
3
(
N
−
1
)
⋅
⋅
⋅
⋅
⋅
⋅
⋅
⋅
⋅
⋅
⋅
⋅
⋅
⋅
⋅
⋅
⋅
⋅
⋅
⋅
⋅
1
w
−
(
N
−
1
)
w
−
2
(
N
−
1
)
⋅
⋅
⋅
w
−
(
N
−
1
)
2
∣
M_{DFT} = \begin{vmatrix} 1 & 1 & 1 & ··· & 1 \\ 1 & w^{-1} & w^{-2} & ··· & w^{-(N-1)} \\ 1 & w^{-2} & w^{-4} & ··· & w^{-2(N-1)} \\ 1 & w^{-3} & w^{-6} & ··· & w^{-3(N-1)} \\ · & · & · & ··· & · \\ · & · & · & ··· & · \\· & · & · & ··· & · \\ 1 & w^{-(N-1)} & w^{-2(N-1)} & ··· & w^{-(N-1)^2} \\ \end{vmatrix}
MDFT=∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣1111⋅⋅⋅11w−1w−2w−3⋅⋅⋅w−(N−1)1w−2w−4w−6⋅⋅⋅w−2(N−1)⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅1w−(N−1)w−2(N−1)w−3(N−1)⋅⋅⋅w−(N−1)2∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣
同样对照离散逆傅里叶变换的公式,也可求出离散逆傅里叶变换的矩阵形式:
M
I
D
F
T
=
1
N
∣
1
1
1
⋅
⋅
⋅
1
1
w
1
w
2
⋅
⋅
⋅
w
(
N
−
1
)
1
w
2
w
4
⋅
⋅
⋅
w
2
(
N
−
1
)
1
w
3
w
6
⋅
⋅
⋅
w
3
(
N
−
1
)
⋅
⋅
⋅
⋅
⋅
⋅
⋅
⋅
⋅
⋅
⋅
⋅
⋅
⋅
⋅
⋅
⋅
⋅
⋅
⋅
⋅
1
w
(
N
−
1
)
w
2
(
N
−
1
)
⋅
⋅
⋅
w
(
N
−
1
)
2
∣
M_{IDFT} = \frac{1}{N}\begin{vmatrix} 1 & 1 & 1 & ··· & 1 \\ 1 & w^{1} & w^{2} & ··· & w^{(N-1)} \\ 1 & w^{2} & w^{4} & ··· & w^{2(N-1)} \\ 1 & w^{3} & w^{6} & ··· & w^{3(N-1)} \\ · & · & · & ··· & · \\ · & · & · & ··· & · \\· & · & · & ··· & · \\ 1 & w^{(N-1)} & w^{2(N-1)} & ··· & w^{(N-1)^2} \\ \end{vmatrix}
MIDFT=N1∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣1111⋅⋅⋅11w1w2w3⋅⋅⋅w(N−1)1w2w4w6⋅⋅⋅w2(N−1)⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅1w(N−1)w2(N−1)w3(N−1)⋅⋅⋅w(N−1)2∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣
现在来计算$M_{IDFT}M_{DFT} = $ 1 N ∣ w 0 ⋅ w 0 w 0 ⋅ w 1 w 0 ⋅ w 2 ⋅ ⋅ ⋅ w 0 ⋅ w ( N − 1 ) w 1 ⋅ w 0 w 1 ⋅ w 1 w 1 ⋅ w 2 ⋅ ⋅ ⋅ w 1 ⋅ w ( N − 1 ) w 2 ⋅ w 0 w 2 ⋅ w 1 w 2 ⋅ w 2 ⋅ ⋅ ⋅ w 2 ⋅ w ( N − 1 ) w 3 ⋅ w 0 w 3 ⋅ w 1 w 3 ⋅ w 2 ⋅ ⋅ ⋅ w 3 ⋅ w ( N − 1 ) ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ w ( N − 1 ) ⋅ w 0 w ( N − 1 ) ⋅ w 1 w ( N − 1 ) ⋅ w 2 ⋅ ⋅ ⋅ w ( N − 1 ) ⋅ w ( N − 1 ) ∣ \frac{1}{N}\begin{vmatrix} w^{0}·w^{0} & w^{0}·w^{1} & w^{0}·w^{2} & ··· & w^{0}·w^{(N-1)} \\ w^{1}·w^{0} & w^{1}·w^{1} & w^{1}·w^{2} & ··· & w^{1}·w^{(N-1)} \\ w^{2}·w^{0} & w^{2}·w^{1} & w^{2}·w^{2} & ··· & w^{2}·w^{(N-1)} \\ w^{3}·w^{0} & w^{3}·w^{1} & w^{3}·w^{2} & ··· & w^{3}·w^{(N-1)} \\ · & · & · & ··· & · \\ · & · & · & ··· & · \\· & · & · & ··· & · \\ w^{(N-1)}·w^{0} & w^{(N-1)}·w^{1} & w^{(N-1)}·w^{2} & ··· & w^{(N-1)}·w^{(N-1)} \\ \end{vmatrix} N1∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣w0⋅w0w1⋅w0w2⋅w0w3⋅w0⋅⋅⋅w(N−1)⋅w0w0⋅w1w1⋅w1w2⋅w1w3⋅w1⋅⋅⋅w(N−1)⋅w1w0⋅w2w1⋅w2w2⋅w2w3⋅w2⋅⋅⋅w(N−1)⋅w2⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅w0⋅w(N−1)w1⋅w(N−1)w2⋅w(N−1)w3⋅w(N−1)⋅⋅⋅w(N−1)⋅w(N−1)∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣ = 1 N ∣ N 0 0 ⋅ ⋅ ⋅ 0 0 N 0 ⋅ ⋅ ⋅ 0 0 0 N ⋅ ⋅ ⋅ 0 0 0 0 ⋅ ⋅ ⋅ 0 ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ 0 0 0 ⋅ ⋅ ⋅ N ∣ = 1 N ⋅ N I = I = \frac{1}{N}\begin{vmatrix} N & 0 & 0 & ··· & 0 \\ 0 & N & 0 & ··· & 0 \\ 0 & 0 & N & ··· & 0 \\ 0 & 0 & 0 & ··· & 0\\ · & · & · & ··· & · \\ · & · & · & ··· & · \\· & · & · & ··· & · \\ 0 & 0 & 0 & ··· & N \\ \end{vmatrix} = \frac{1}{N}·NI = I =N1∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣N000⋅⋅⋅00N00⋅⋅⋅000N0⋅⋅⋅0⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅0000⋅⋅⋅N∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣=N1⋅NI=I
这说明 M I D F T M_{IDFT} MIDFT就是 M D F T M_{DFT} MDFT的逆矩阵,这进一步表明离散傅里叶变化和逆变换的定义都是正确的,这两个矩阵也是正确的。
离散傅里叶变换的性质
下面将傅里叶变换中的性质类比到离散傅里叶变换中。
帕斯瓦尔定理
在连续傅里叶变换中有帕斯瓦尔定理:
∫
−
∞
∞
f
(
x
)
g
(
x
)
‾
d
x
=
∫
−
∞
∞
F
f
(
x
)
F
g
(
x
)
‾
d
x
\int_{-\infty}^{\infty} f(x)\overline{g(x)}dx = \int_{-\infty}^{\infty} Ff(x)\overline{Fg(x)}dx
∫−∞∞f(x)g(x)dx=∫−∞∞Ff(x)Fg(x)dx它表明的是两个积分之间的关系,
那么在离散傅里叶变换中,应该考虑两个序列的点积的关系:
F
‾
f
⋅
F
‾
g
=
∑
k
=
0
N
−
1
f
[
k
]
W
−
k
⋅
∑
l
=
0
N
−
1
g
[
l
]
W
−
l
=
∑
k
=
0
N
−
1
∑
l
=
0
N
−
1
f
[
k
]
g
[
l
]
‾
(
W
−
k
⋅
W
−
l
)
\underline{F}f·\underline{F}g = \sum_{k=0}^{N-1}f[k]W^{-k} ·\sum_{l=0}^{N-1}g[l]W^{-l} = \sum_{k=0}^{N-1}\sum_{l=0}^{N-1}f[k]\overline{g[l]}(W^{-k}·W^{-l})
Ff⋅Fg=k=0∑N−1f[k]W−k⋅l=0∑N−1g[l]W−l=k=0∑N−1l=0∑N−1f[k]g[l](W−k⋅W−l)
=
N
∑
k
=
0
N
−
1
f
[
k
]
g
[
k
]
‾
=
N
(
f
⋅
g
)
= N\sum_{k=0}^{N-1}f[k]\overline{g[k]} =N(f·g)
=Nk=0∑N−1f[k]g[k]=N(f⋅g)
因此离散形式的帕斯瓦尔定理为:
F
‾
f
⋅
F
‾
g
=
N
(
f
⋅
g
)
\underline{F}f·\underline{F}g = N(f·g)
Ff⋅Fg=N(f⋅g)
若令
f
=
g
f=g
f=g则有:
∣
∣
F
‾
f
∣
∣
2
=
N
∣
∣
f
∣
∣
2
||\underline{F}f||^2 = N||f||^2
∣∣Ff∣∣2=N∣∣f∣∣2
位移定理
定义符号:
τ
p
τ_p
τp使得
τ
p
f
[
n
]
=
f
[
n
−
p
]
τ_pf[n] = f[n-p]
τpf[n]=f[n−p]
那么:
$\underline{F}(τ_pf) = \sum_{k=0}{N-1}f[k-p]W{-k} = \sum_{u=-p}{-p+N-1}f[u]W{-(u+p)} = \sum_{u=0}{N-1}f[u]W{-(u+p)} = W{-p}\sum_{k=0}{N-1}f[u]W^{-u} = W^{-p}\underline{F}f $
即:$\underline{F(f[n-p])} = W^{-p}\underline{F}f $
等式右边是两个序列的各个分量都相乘。
调制定理
设
W
n
f
=
(
1
,
w
n
,
w
2
n
,
⋅
⋅
⋅
,
w
(
N
−
1
)
n
)
(
f
[
0
]
,
f
[
1
]
,
f
[
2
]
,
⋅
⋅
⋅
,
f
[
N
−
1
]
)
W^nf=(1,w^n,w^{2n},···,w^{(N-1)n})(f[0],f[1],f[2],···,f[N-1])
Wnf=(1,wn,w2n,⋅⋅⋅,w(N−1)n)(f[0],f[1],f[2],⋅⋅⋅,f[N−1])
=
(
f
[
0
]
,
w
n
f
[
1
]
,
w
2
n
f
[
2
]
,
⋅
⋅
⋅
,
w
(
N
−
1
)
n
f
[
N
−
1
]
)
=(f[0],w^nf[1],w^{2n}f[2],···,w^{(N-1)n}f[N-1])
=(f[0],wnf[1],w2nf[2],⋅⋅⋅,w(N−1)nf[N−1])
那么
F
‾
(
W
n
f
)
[
m
]
=
∑
k
=
0
N
−
1
(
W
n
f
)
[
k
]
w
−
k
m
=
∑
k
=
0
N
−
1
w
k
n
f
[
k
]
w
−
k
m
=
∑
k
=
0
N
−
1
f
[
k
]
w
−
k
(
m
−
n
)
\underline{F}(W^nf)[m] = \sum_{k=0}^{N-1} (W^nf)[k] w^{-km} = \sum_{k=0}^{N-1} w^{kn}f[k] w^{-km} = \sum_{k=0}^{N-1} f[k]w^{-k(m-n)}
F(Wnf)[m]=k=0∑N−1(Wnf)[k]w−km=k=0∑N−1wknf[k]w−km=k=0∑N−1f[k]w−k(m−n)
用上刚才定义的
τ
p
τ_p
τp 可得:
∑
k
=
0
N
−
1
f
[
k
]
w
−
k
(
m
−
n
)
=
∑
k
=
0
N
−
1
f
[
k
]
τ
n
w
−
k
m
=
τ
n
(
F
‾
f
)
\sum_{k=0}^{N-1} f[k]w^{-k(m-n)}=\sum_{k=0}^{N-1} f[k]τ_nw^{-km} = τ_n(\underline{F}f)
k=0∑N−1f[k]w−k(m−n)=k=0∑N−1f[k]τnw−km=τn(Ff)
即: F ‾ ( W n f ) = τ n ( F ‾ f ) \underline{F}(W^nf) = τ_n(\underline{F}f) F(Wnf)=τn(Ff)
离散形式的卷积
类比连续傅里叶变换中的卷积定义,显然离散形式的卷积应该满足:
F
‾
f
F
‾
g
=
F
‾
(
f
∗
g
)
\underline{F}f\underline{F}g = \underline{F}(f*g)
FfFg=F(f∗g)
那么现在需要求解离散卷积的计算式,设$\underline{F}f = F $ 、
F
‾
g
=
G
\underline{F}g = G
Fg=G,实际上就是求
F
−
‾
(
F
G
)
\underline{F^-}(FG)
F−(FG)
F
−
‾
(
F
G
)
[
m
]
=
1
N
∑
n
=
0
N
−
1
F
[
n
]
G
[
n
]
w
n
m
\underline{F^-}(FG)[m] = \frac{1}{N}\sum_{n=0}^{N-1}F[n]G[n]w^{nm}
F−(FG)[m]=N1n=0∑N−1F[n]G[n]wnm
=
1
N
∑
n
=
0
N
−
1
(
[
∑
k
=
0
N
−
1
f
[
k
]
w
−
k
n
]
[
∑
l
=
0
N
−
1
g
[
l
]
w
−
l
n
]
)
w
n
m
= \frac{1}{N}\sum_{n=0}^{N-1}([\sum_{k=0}^{N-1}f[k]w^{-kn}][\sum_{l=0}^{N-1}g[l]w^{-ln}])w^{nm}
=N1n=0∑N−1([k=0∑N−1f[k]w−kn][l=0∑N−1g[l]w−ln])wnm
=
(
[
∑
k
=
0
N
−
1
f
[
k
]
]
[
∑
l
=
0
N
−
1
g
[
l
]
]
)
1
N
∑
n
=
0
N
−
1
w
n
(
m
−
k
−
l
)
=([\sum_{k=0}^{N-1}f[k]][\sum_{l=0}^{N-1}g[l]])\frac{1}{N}\sum_{n=0}^{N-1}w^{n(m-k-l)}
=([k=0∑N−1f[k]][l=0∑N−1g[l]])N1n=0∑N−1wn(m−k−l)
注意
w
n
(
m
−
k
−
l
)
w^{n(m-k-l)}
wn(m−k−l)在
m
−
k
−
l
%
N
≠
0
m-k-l\%N≠0
m−k−l%N̸=0时的取值全部为0,在
m
−
k
−
l
%
N
=
0
m-k-l\%N=0
m−k−l%N=0时的取值为
N
N
N,因此上式可简化为:
∑
k
=
0
N
−
1
f
[
k
]
g
[
m
−
k
]
\sum_{k=0}^{N-1}f[k]g[m-k]
k=0∑N−1f[k]g[m−k]
因此离散形式的卷积为:
(
f
∗
g
)
(
m
)
=
∑
k
=
0
N
−
1
f
[
k
]
g
[
m
−
k
]
(f*g)(m) = \sum_{k=0}^{N-1}f[k]g[m-k]
(f∗g)(m)=k=0∑N−1f[k]g[m−k]
利用卷积的性质可以计算:
W
p
∗
W
q
W^p*W^q
Wp∗Wq
F
(
W
p
∗
W
q
)
=
F
(
W
p
)
F
(
W
q
)
=
N
δ
−
p
N
δ
−
q
F(W^p*W^q) = F(W^p)F(W^q) = Nδ_{-p}Nδ_{-q}
F(Wp∗Wq)=F(Wp)F(Wq)=Nδ−pNδ−q
当
p
=
q
p=q
p=q时:结果为
N
2
δ
−
p
N^2δ_{-p}
N2δ−p
当
p
≠
q
p≠q
p̸=q时:结果为
0
0
0
再傅里叶逆变换回去可得原函数为:
KaTeX parse error: Can't use function '\mathrel' in text mode at position 14: \html@mathml{\̲m̲a̲t̲h̲r̲e̲l̲{\not=}}{\mathr…
离散形式的卷积有两个性质:
1.
F
‾
(
f
g
)
=
1
N
(
F
‾
f
∗
F
‾
g
)
\underline{F}(fg)=\frac{1}{N}(\underline{F}f*\underline{F}g)
F(fg)=N1(Ff∗Fg)
2.
(
τ
n
f
)
∗
g
=
τ
n
(
f
∗
g
)
=
f
∗
(
τ
n
g
)
(τ_nf)*g=τ_n(f*g)=f*(τ_ng)
(τnf)∗g=τn(f∗g)=f∗(τng)
快速傅里叶变换(FFT)
离散傅里叶变换的复杂图从其矩阵就可看出为
O
(
N
2
)
O(N^2)
O(N2),这并不是一个能够令人满意的结果。选择使用快速傅里叶变换,可使其复杂度降至
O
(
N
l
o
g
N
)
O(NlogN)
O(NlogN),下面来看一下快速傅里叶变换:
首先引入
w
[
p
,
q
]
=
e
2
π
i
q
p
w[p,q] = e^{2\pi i \frac{q}{p}}
w[p,q]=e2πipq
不难推出:
w
[
N
,
−
2
n
m
]
=
w
[
N
2
,
−
n
m
]
w[N,-2nm] = w[\frac{N}{2},-nm]
w[N,−2nm]=w[2N,−nm]
w
[
N
,
−
(
2
n
+
1
)
m
]
=
w
[
N
,
−
m
]
w
[
N
2
,
−
n
m
]
w[N,-(2n+1)m] = w[N,-m]w[\frac{N}{2},-nm]
w[N,−(2n+1)m]=w[N,−m]w[2N,−nm]
现在利用
w
[
p
,
q
]
w[p,q]
w[p,q]来表示离散傅里叶变换式:
F
[
m
]
=
∑
n
=
0
N
−
1
f
[
n
]
w
[
N
,
−
n
m
]
F[m] = \sum_{n=0}^{N-1}f[n]w[N,-nm]
F[m]=n=0∑N−1f[n]w[N,−nm]
然后将其按照奇偶次序划分:
F
[
m
]
=
∑
n
=
0
N
2
−
1
f
[
2
n
]
w
[
N
,
−
2
n
m
]
+
∑
n
=
0
N
2
−
1
f
[
2
n
+
1
]
w
[
N
,
−
(
2
n
+
1
)
m
]
F[m] = \sum_{n=0}^{\frac{N}{2}-1}f[2n]w[N,-2nm]+\sum_{n=0}^{\frac{N}{2}-1}f[2n+1]w[N,-(2n+1)m]
F[m]=n=0∑2N−1f[2n]w[N,−2nm]+n=0∑2N−1f[2n+1]w[N,−(2n+1)m]
=
∑
n
=
0
N
2
−
1
f
[
2
n
]
w
[
N
2
,
−
n
m
]
+
w
[
N
,
−
m
]
∑
n
=
0
N
2
−
1
f
[
2
n
+
1
]
w
[
N
2
,
−
n
m
]
=\sum_{n=0}^{\frac{N}{2}-1}f[2n]w[\frac{N}{2},-nm]+w[N,-m]\sum_{n=0}^{\frac{N}{2}-1}f[2n+1]w[\frac{N}{2},-nm]
=n=0∑2N−1f[2n]w[2N,−nm]+w[N,−m]n=0∑2N−1f[2n+1]w[2N,−nm]
由于之后会将这两项再次按照奇偶次序划分,因此必须保证
N
=
2
k
N = 2^k
N=2k,如果序列本身不够N维,应将其扩充补0。
这里有一个小问题,快速傅里叶变换的思路是将
F
[
m
]
F[m]
F[m]划分为两个规模减半的离散傅里叶变换,但是原本的输入是从
m
=
0
,
1
,
2
,
⋅
⋅
⋅
,
N
−
1
m = 0,1,2,···,N-1
m=0,1,2,⋅⋅⋅,N−1,原则上这两个规模减半的傅里叶变换能够接受的输入应该只能是
m
=
0
,
1
,
2
,
⋅
⋅
⋅
,
N
/
2
−
1
m= 0,1,2,···,N/2 -1
m=0,1,2,⋅⋅⋅,N/2−1,这两者略显矛盾,因此不妨将
F
[
m
]
F[m]
F[m]的求解划分为前一半和后一半,对于前一半直接就有:
F
[
m
]
=
∑
n
=
0
N
2
−
1
f
[
2
n
]
w
[
N
2
,
−
n
m
]
+
w
[
N
,
−
m
]
∑
n
=
0
N
2
−
1
f
[
2
n
+
1
]
w
[
N
2
,
−
n
m
]
F[m]=\sum_{n=0}^{\frac{N}{2}-1}f[2n]w[\frac{N}{2},-nm]+w[N,-m]\sum_{n=0}^{\frac{N}{2}-1}f[2n+1]w[\frac{N}{2},-nm]
F[m]=n=0∑2N−1f[2n]w[2N,−nm]+w[N,−m]n=0∑2N−1f[2n+1]w[2N,−nm]
其中
m
=
0
,
1
,
2
,
⋅
⋅
⋅
,
N
/
2
−
1
m=0,1,2,···,N/2 - 1
m=0,1,2,⋅⋅⋅,N/2−1
而对于后一半则应该将
m
m
m映射到
m
+
N
/
2
m+N/2
m+N/2,即:
F
[
m
+
N
/
2
]
=
∑
n
=
0
N
2
−
1
f
[
2
n
]
w
[
N
2
,
−
n
(
m
+
N
/
2
)
]
+
F[m+N/2]=\sum_{n=0}^{\frac{N}{2}-1}f[2n]w[\frac{N}{2},-n(m+N/2)]+
F[m+N/2]=n=0∑2N−1f[2n]w[2N,−n(m+N/2)]+
w
[
N
,
−
(
m
+
N
/
2
)
]
∑
n
=
0
N
2
−
1
f
[
2
n
+
1
]
w
[
N
2
,
−
n
(
m
+
N
/
2
)
]
w[N,-(m+N/2)]\sum_{n=0}^{\frac{N}{2}-1}f[2n+1]w[\frac{N}{2},-n(m+N/2)]
w[N,−(m+N/2)]n=0∑2N−1f[2n+1]w[2N,−n(m+N/2)]
=
∑
n
=
0
N
2
−
1
f
[
2
n
]
w
[
N
2
,
−
n
m
]
−
w
[
N
,
−
m
]
∑
n
=
0
N
2
−
1
f
[
2
n
+
1
]
w
[
N
2
,
−
n
m
]
=\sum_{n=0}^{\frac{N}{2}-1}f[2n]w[\frac{N}{2},-nm] -w[N,-m]\sum_{n=0}^{\frac{N}{2}-1}f[2n+1]w[\frac{N}{2},-nm]
=n=0∑2N−1f[2n]w[2N,−nm]−w[N,−m]n=0∑2N−1f[2n+1]w[2N,−nm]
如果我们将奇数项记作:
F
o
d
d
F_{odd}
Fodd ,偶数项记作
F
e
v
e
n
F_{even}
Feven
那么
F
[
m
]
F[m]
F[m]的前半部分为:
F
o
d
d
+
w
[
N
,
−
m
]
F
e
v
e
n
F_{odd}+w[N,-m]F_{even}
Fodd+w[N,−m]Feven
后半部分为:
F
o
d
d
−
w
[
N
,
−
m
]
F
e
v
e
n
F_{odd}-w[N,-m]F_{even}
Fodd−w[N,−m]Feven
然后递归地以相同的方式求解奇数项、偶数项即可,有点类似归并排序,就是一种分治思想。
关于快速傅里叶变换本文暂且谈到这里,它的编程实现与实际应用也非常重要,之后会再单独整理关于快速傅里叶变换的内容。
这一章的内容非常重要并且应用广泛,限于时间也只能整理总结这些内容了(从下午开始一直写到现在= =),讲义中实际上还有一些值得去阅读的东西,有兴趣的建议去看看。