前置知识
离散傅立叶变换
傅立叶级数可以将一个周期为
2
π
2\pi
2π的函数展开成
f
(
t
)
=
∑
n
=
−
∞
+
∞
c
n
e
j
n
t
c
n
=
1
2
π
∫
−
π
π
f
(
t
)
e
−
j
n
t
d
t
\begin{aligned} &f(t)=\sum_{n=-\infty}^{+\infty} c_{n} e^{j n t} \\ &c_{n}=\frac{1}{2 \pi} \int_{-\pi}^{\pi} f(t) e^{-j n t} \mathrm{~d} t \end{aligned}
f(t)=n=−∞∑+∞cnejntcn=2π1∫−ππf(t)e−jnt dt
但是现在只有一个向量
[
f
0
,
f
1
,
⋯
,
f
N
−
1
]
\left[f_{0}, f_{1}, \cdots, f_{N-1}\right]
[f0,f1,⋯,fN−1]
这个向量对
f
(
t
)
f(t)
f(t)的采样
假定
f
(
n
)
f(n)
f(n)是
f
(
x
)
f(x)
f(x)在一个周期内的等距离采样,
设
w
=
e
2
π
j
N
w=e^{\frac{2 \pi j}{N}}
w=eN2πj
那么每个采样点就可以写成
f
k
=
f
(
k
2
π
N
)
=
∑
n
=
−
∞
+
∞
c
n
e
k
n
2
π
j
N
=
∑
n
=
−
∞
+
∞
c
n
w
k
n
f_{k}=f\left(k \frac{2 \pi}{N}\right)=\sum_{n=-\infty}^{+\infty} c_{n} e^{k n \frac{2 \pi j}{N}}=\sum_{n=-\infty}^{+\infty} c_{n} w^{k n}
fk=f(kN2π)=∑n=−∞+∞cneknN2πj=∑n=−∞+∞cnwkn
先看
f
(
2
π
N
)
f\left(\frac{2 \pi}{N}\right)
f(N2π)
f
(
2
π
N
)
=
⋯
+
c
0
w
0
+
c
1
w
1
+
⋯
+
c
N
−
1
w
N
−
1
+
c
N
w
N
+
c
N
+
1
w
N
+
1
+
⋯
=
(
c
0
+
c
N
+
c
−
N
+
c
2
N
+
⋯
)
w
0
+
(
c
1
+
c
N
+
1
+
c
−
N
+
1
+
c
2
N
+
1
+
⋯
)
w
1
+
…
(
c
N
−
1
+
c
2
N
−
1
+
c
−
1
+
⋯
)
w
N
−
1
\begin{aligned} &\quad f\left(\frac{2 \pi}{N}\right) \\ =& \cdots+c_{0} w^{0}+c_{1} w^{1}+\cdots+c_{N-1} w^{N-1}+c_{N} w^{N}+c_{N+1} w^{N+1}+\cdots \\ =&\left(c_{0}+c_{N}+c_{-N}+c_{2 N}+\cdots\right) w^{0}+\\ &\left(c_{1}+c_{N+1}+c_{-N+1}+c_{2 N+1}+\cdots\right) w^{1}+\\ & \ldots \\ &\left(c_{N-1}+c_{2 N-1}+c_{-1}+\cdots\right) w^{N-1} \end{aligned}
==f(N2π)⋯+c0w0+c1w1+⋯+cN−1wN−1+cNwN+cN+1wN+1+⋯(c0+cN+c−N+c2N+⋯)w0+(c1+cN+1+c−N+1+c2N+1+⋯)w1+…(cN−1+c2N−1+c−1+⋯)wN−1
(利用了
w
N
=
1
w^{N}=1
wN=1)
可以看出,
w
k
w^k
wk前面的系数的下标模
N
N
N等于
k
k
k
换句话说,我们其实只要
w
0
,
w
1
,
⋯
,
w
N
−
1
w^{0}, w^{1}, \cdots, w^{N-1}
w0,w1,⋯,wN−1就能表示
f
(
2
π
N
)
f\left(\frac{2 \pi}{N}\right)
f(N2π)
再看
f
(
2
2
π
N
)
f\left(2\frac{2 \pi}{N}\right)
f(2N2π)
f
(
2
2
π
N
)
=
⋯
+
c
0
w
0
+
c
1
w
2
+
⋯
+
c
N
−
1
w
2
(
N
−
1
)
+
c
N
w
2
N
+
c
N
+
1
w
2
(
N
+
1
)
+
⋯
=
(
c
0
+
c
N
+
c
−
N
+
c
2
N
+
⋯
)
w
0
+
(
c
1
+
c
N
+
1
+
c
−
N
+
1
+
c
2
N
+
1
+
⋯
)
w
2
+
…
(
c
N
−
1
+
c
2
N
−
1
+
c
−
1
+
⋯
)
w
2
(
N
−
1
)
\begin{aligned} &\quad f\left(2 \frac{2 \pi}{N}\right) \\ =& \cdots+c_{0} w^{0}+c_{1} w^{2}+\cdots+c_{N-1} w^{2(N-1)}+c_{N} w^{2 N}+c_{N+1} w^{2(N+1)}+\cdots \\ =&\left(c_{0}+c_{N}+c_{-N}+c_{2 N}+\cdots\right) w^{0}+\\ &\left(c_{1}+c_{N+1}+c_{-N+1}+c_{2 N+1}+\cdots\right) w^{2}+\\ & \ldots \\ &\left(c_{N-1}+c_{2 N-1}+c_{-1}+\cdots\right) w^{2(N-1)} \end{aligned}
==f(2N2π)⋯+c0w0+c1w2+⋯+cN−1w2(N−1)+cNw2N+cN+1w2(N+1)+⋯(c0+cN+c−N+c2N+⋯)w0+(c1+cN+1+c−N+1+c2N+1+⋯)w2+…(cN−1+c2N−1+c−1+⋯)w2(N−1)
虽然
w
w
w的次数比较高,但是利用
w
N
=
1
w^{N}=1
wN=1,会发现,
w
2
n
(
n
=
0
,
1
,
⋯
,
N
−
1
)
w^{2 n}(n=0,1, \cdots, N-1)
w2n(n=0,1,⋯,N−1)一定对应
w
n
(
n
=
0
,
1
,
⋯
,
N
−
1
)
w^{n}(n=0,1, \cdots, N-1)
wn(n=0,1,⋯,N−1)中的一个
所以我们也可以用
w
0
,
w
1
,
⋯
,
w
N
−
1
w^{0}, w^{1}, \cdots, w^{N-1}
w0,w1,⋯,wN−1表示
f
(
2
2
π
N
)
f\left(2\frac{2 \pi}{N}\right)
f(2N2π)
同理
f
(
k
2
π
N
)
f(k\frac{2\pi}{N})
f(kN2π) 也一样
所以我们就可以改写一下
f
(
t
)
=
∑
n
=
0
N
−
1
c
n
e
j
n
t
f
0
=
f
(
0
2
π
N
)
=
∑
n
=
0
N
−
1
c
n
w
0
n
f
1
=
f
(
1
2
π
N
)
=
∑
n
=
0
N
−
1
c
n
w
1
n
…
f
N
−
1
=
f
(
(
N
−
1
)
2
π
N
)
=
∑
n
=
0
N
−
1
c
n
w
(
N
−
1
)
n
\begin{aligned} &f(t)=\sum_{n=0}^{N-1} c_{n} e^{j n t} \\ &f_{0}=f\left(0 \frac{2 \pi}{N}\right)=\sum_{n=0}^{N-1} c_{n} w^{0 n} \\ &f_{1}=f\left(1 \frac{2 \pi}{N}\right)=\sum_{n=0}^{N-1} c_{n} w^{1 n} \\ &\ldots \\ &f_{N-1}=f\left((N-1) \frac{2 \pi}{N}\right)=\sum_{n=0}^{N-1} c_{n} w^{(N-1) n} \end{aligned}
f(t)=n=0∑N−1cnejntf0=f(0N2π)=n=0∑N−1cnw0nf1=f(1N2π)=n=0∑N−1cnw1n…fN−1=f((N−1)N2π)=n=0∑N−1cnw(N−1)n
这就是N元1次方程组了
接着我们就可以写成矩阵的形式
[
f
0
f
1
…
f
N
−
1
]
=
[
1
1
1
⋯
1
1
w
w
2
⋯
w
N
−
1
⋯
1
w
N
−
1
w
2
(
N
−
1
)
⋯
w
(
N
−
1
)
(
N
−
1
)
]
[
c
0
c
1
…
c
N
−
1
]
\left[\begin{array}{c} f_{0} \\ f_{1} \\ \ldots \\ f_{N-1} \end{array}\right]=\left[\begin{array}{ccccc} 1 & 1 & 1 & \cdots & 1 \\ 1 & w & w^{2} & \cdots & w^{N-1} \\ & & \cdots & & \\ 1 & w^{N-1} & w^{2(N-1)} & \cdots & w^{(N-1)(N-1)} \end{array}\right]\left[\begin{array}{c} c_{0} \\ c_{1} \\ \ldots \\ c_{N-1} \end{array}\right]
⎣⎢⎢⎡f0f1…fN−1⎦⎥⎥⎤=⎣⎢⎢⎡1111wwN−11w2⋯w2(N−1)⋯⋯⋯1wN−1w(N−1)(N−1)⎦⎥⎥⎤⎣⎢⎢⎡c0c1…cN−1⎦⎥⎥⎤
F
N
=
[
1
1
1
⋯
1
1
w
w
2
⋯
w
N
−
1
⋯
1
w
N
−
1
w
2
(
N
−
1
)
⋯
w
(
N
−
1
)
(
N
−
1
)
]
F_N=\begin{bmatrix} 1&1&1&\cdots & 1\\ 1&w&w^2&\cdots & w^{N-1}\\ &&\cdots&\\ 1&w^{N-1}&w^{2(N-1)}&\cdots & w^{(N-1)(N-1)} \end{bmatrix}
FN=⎣⎢⎢⎡1111wwN−11w2⋯w2(N−1)⋯⋯⋯1wN−1w(N−1)(N−1)⎦⎥⎥⎤叫做傅立叶矩阵
于是我们可以求逆来计算系数
[
c
0
c
1
…
c
N
−
1
]
=
F
N
−
1
[
f
0
f
1
…
f
N
−
1
]
\left[\begin{array}{c} c_{0} \\ c_{1} \\ \ldots \\ c_{N-1} \end{array}\right]=F_{N}^{-1}\left[\begin{array}{c} f_{0} \\ f_{1} \\ \ldots \\ f_{N-1} \end{array}\right]
⎣⎢⎢⎡c0c1…cN−1⎦⎥⎥⎤=FN−1⎣⎢⎢⎡f0f1…fN−1⎦⎥⎥⎤
接下来讲一下如何求逆
首先
w
‾
=
e
−
2
π
j
N
=
w
−
1
\overline{w}=e^{-\frac{2\pi j}{N}}=w^{-1}
w=e−N2πj=w−1
F
N
F_N
FN的每个元素
F
i
j
=
w
i
w
j
F_{i j}=w^{i} w^{j}
Fij=wiwj
所以
F
N
T
=
F
N
F_{N}^{T}=F_{N}
FNT=FN
共轭转置
F
N
H
=
[
1
1
1
⋯
1
1
w
‾
w
‾
2
⋯
w
‾
N
−
1
⋯
1
w
‾
N
−
1
w
‾
2
(
N
−
1
)
⋯
w
‾
(
N
−
1
)
(
N
−
1
)
]
F_N^{H}=\begin{bmatrix} 1&1&1&\cdots & 1\\ 1&\overline{w}&\overline{w}^2&\cdots & \overline{w}^{N-1}\\ &&\cdots&\\ 1&\overline{w}^{N-1}&\overline{w}^{2(N-1)}&\cdots & \overline{w}^{(N-1)(N-1)} \end{bmatrix}
FNH=⎣⎢⎢⎡1111wwN−11w2⋯w2(N−1)⋯⋯⋯1wN−1w(N−1)(N−1)⎦⎥⎥⎤
F
N
F
N
H
=
f
i
j
F_{N} F_{N}^{H}=f_{i j}
FNFNH=fij
f
i
j
=
∑
k
=
0
N
−
1
w
i
k
w
ˉ
k
j
=
∑
k
=
0
N
−
1
w
k
(
i
−
j
)
f_{i j}=\sum_{k=0}^{N-1} w^{i k} \bar{w}^{k j}=\sum_{k=0}^{N-1} w^{k(i-j)}
fij=k=0∑N−1wikwˉkj=k=0∑N−1wk(i−j)
f
i
j
=
{
N
,
i
=
j
1
−
w
N
(
i
−
j
)
1
−
w
i
−
j
,
i
≠
j
=
{
N
,
i
=
j
0
,
i
≠
j
f_{ij}=\left\{\begin{matrix} N,i=j\\\frac{1-w^{N(i-j)}}{1-w^{i-j}} ,i\neq j\end{matrix}\right. =\left\{\begin{matrix} N,i=j\\ 0,i\neq j \end{matrix}\right.
fij={N,i=j1−wi−j1−wN(i−j),i=j={N,i=j0,i=j
F
N
F
N
H
=
N
E
F
N
−
1
=
1
N
F
N
H
\begin{aligned} &F_{N} F_{N}^{H}=N E \\ &F_{N}^{-1}=\frac{1}{N} F_{N}^{H} \end{aligned}
FNFNH=NEFN−1=N1FNH
[
c
0
c
1
⋯
c
N
−
1
]
=
1
N
F
N
H
[
f
0
f
1
…
f
N
−
1
]
\left[\begin{array}{c} c_{0} \\ c_{1} \\ \cdots \\ c_{N-1} \end{array}\right]=\frac{1}{N} F_{N}^{H}\left[\begin{array}{c} f_{0} \\ f_{1} \\ \ldots \\ f_{N-1} \end{array}\right]
⎣⎢⎢⎡c0c1⋯cN−1⎦⎥⎥⎤=N1FNH⎣⎢⎢⎡f0f1…fN−1⎦⎥⎥⎤
有时候会看到网上离散傅立叶变换是
X
[
k
]
=
∑
n
=
0
N
−
1
x
[
n
]
e
−
k
2
π
n
i
N
(
k
=
0
,
1
,
⋯
,
N
−
1
)
x
[
n
]
=
1
N
∑
k
=
0
N
−
1
X
[
k
]
e
n
2
π
k
j
N
\begin{aligned} &X[k]=\sum_{n=0}^{N-1} x[n] e^{-k \frac{2 \pi n i}{N}}(k=0,1, \cdots, N-1) \\ &x[n]=\frac{1}{N} \sum_{k=0}^{N-1} X[k] e^{n \frac{2 \pi k j}{N}} \end{aligned}
X[k]=n=0∑N−1x[n]e−kN2πni(k=0,1,⋯,N−1)x[n]=N1k=0∑N−1X[k]enN2πkj
其实本质上是一样的
X
[
k
]
=
∑
n
=
0
N
−
1
x
[
n
]
w
−
k
n
X[k]=\sum_{n=0}^{N-1} x[n] w^{-k n}
X[k]=n=0∑N−1x[n]w−kn
于是对应关系如下
[
x
[
0
]
x
[
1
]
⋯
x
[
N
−
1
]
]
=
[
f
0
f
1
⋯
f
N
−
1
]
\begin{bmatrix} x\left[0 \right ]\\ x\left[1 \right ]\\ \cdots\\ x\left[N-1 \right ] \end{bmatrix} =\begin{bmatrix} f_0\\ f_1\\ \cdots\\ f_{N-1} \end{bmatrix}
⎣⎢⎢⎡x[0]x[1]⋯x[N−1]⎦⎥⎥⎤=⎣⎢⎢⎡f0f1⋯fN−1⎦⎥⎥⎤
[
X
[
0
]
X
[
1
]
⋯
X
[
N
−
1
]
]
=
N
[
c
0
c
1
⋯
c
N
−
1
]
\begin{bmatrix} X\left[0 \right ]\\ X\left[1 \right ]\\ \cdots\\ X\left[N-1 \right ]\end{bmatrix}=N\begin{bmatrix} c_0\\ c_1\\ \cdots\\ c_{N-1} \end{bmatrix}
⎣⎢⎢⎡X[0]X[1]⋯X[N−1]⎦⎥⎥⎤=N⎣⎢⎢⎡c0c1⋯cN−1⎦⎥⎥⎤