傅里叶变换主要分为连续和离散两大块。对连续时间信号的分析,从周期信号的傅里叶级数(FS)展开到统一的傅里叶变换(FT),是一套完整地体系。离散时间信号的傅里叶分析和连续时间信号的分析非常像,但确实是不同,没法统一地表示,主要区别在“求和”和“积分”上。FS,FT,DFS,DTFT,DFT构成了整个傅里叶分析的体系。
不管是哪种变换,都满足“周期-离散”,“非周期-连续”的对应关系。这个关系对帮助记忆非常有用。
分析方法 | 缩写 | 变换过程 时域信号 → 频域信号 |
---|---|---|
傅里叶级数 | FS | 连续周期 → 非周期离散 |
傅里叶变换 | FT | (引入
δ
(
ω
)
\delta(\omega)
δ(ω))连续周期 → 非周期离散 连续非周期 → 非周期连续 |
离散傅里叶级数 | DFS | 离散周期 → 周期离散 |
离散时间傅里叶变换 | DTFT | 离散非周期 → 周期连续 |
离散傅里叶变换 | DFT | 离散非周期 → 离散非周期 (本质)离散周期 → 周期离散 |
连续时间的分析得从傅里叶级数开始讲起。
f ( t ) = f ( t + T 0 ) f ( t ) = ∑ n = − ∞ + ∞ a n e − j n ω 0 f(t) = f(t + {T_0})\;\;\;\;\;f(t) = \sum\limits_{n = - \infty }^{ + \infty } {{a_n}{e^{ - jn{\omega _0}}}} f(t)=f(t+T0)f(t)=n=−∞∑+∞ane−jnω0
任何周期为
T
0
T_0
T0(频率为
f
0
f_0
f0,角频率为
ω
0
\omega_0
ω0)的周期信号,都可以用角频率为
ω
0
\omega_0
ω0整数倍的复指数信号
e
−
j
n
ω
0
e^{ - jn{\omega _0}}
e−jnω0线性表示。
比如余弦信号
A
c
o
s
(
ω
0
t
)
Acos(\omega_0t)
Acos(ω0t)傅里叶级数展开可以表示为:
A
c
o
s
(
ω
0
t
)
=
A
2
(
e
−
j
ω
0
t
+
e
j
ω
0
t
)
Acos(\omega_0t)={A \over 2}\left( {{e^{ - j{\omega_0}t}} + {e^{j{\omega_0}t}}} \right)
Acos(ω0t)=2A(e−jω0t+ejω0t)
实信号的傅里叶变换得到的幅度谱总是偶对称的,相位谱总是奇对称的。一个余弦信号能分解成两个共轭的复指数信号,如下图所示。
随着时间
t
t
t的增加,它们在复平面上不断转动,但是它们的矢量和总是落在实轴上,对外表现出来就是一个实信号。
这也是为什么有“负频率”存在的原因,这里的“负”指的是复指数信号的角频率是负数,与“正频率”的信号是共轭关系。相互成共轭关系的复指数信号一同构成实信号。
傅里叶级数仅限于对周期信号的分析,对于非周期信号,可以把信号的周期看作无穷大,基于这样的想法,可以从傅里叶级数的分析合成式推广到傅里叶变换对。以下是傅里叶级数的分析合成式:
a n = 1 T 0 ∫ T 0 f ( t ) e − j n ω 0 t d t f ( t ) = ∑ n = − ∞ + ∞ a n e j n ω 0 {a_n} = {1 \over {{T_0}}}\int\limits_{{T_0}} {f(t){e^{ - jn{\omega _0}t}}dt} \;\;\;\;f(t) = \sum\limits_{n = - \infty }^{ + \infty } {{a_n}{e^{jn{\omega _0}}}} an=T01T0∫f(t)e−jnω0tdtf(t)=n=−∞∑+∞anejnω0
a n a_n an表示傅里叶级数中与基波成 n n n次谐波关系的复指数信号的系数。把它们写在一起可以得到:
f ( t ) = ∑ n = − ∞ + ∞ ( 1 T 0 ∫ T 0 f ( t ) e − j n ω 0 t d t ) e j n ω 0 f(t) = \sum\limits_{n = - \infty }^{ + \infty } {\left( {{1 \over {{T_0}}}\int\limits_{{T_0}} {f(t){e^{ - jn{\omega _0}t}}dt} } \right){e^{jn{\omega _0}}}} \; f(t)=n=−∞∑+∞⎝⎛T01T0∫f(t)e−jnω0tdt⎠⎞ejnω0
= ∫ − ∞ + ∞ ( ∫ − ∞ + ∞ f ( t ) e − j n ω 0 t d t ) e j n ω 0 d f = \int_{ - \infty }^{ + \infty } {\left( {\int_{ - \infty }^{ + \infty } {f(t){e^{ - jn{\omega _0}t}}dt} } \right){e^{jn{\omega _0}}}df} =∫−∞+∞(∫−∞+∞f(t)e−jnω0tdt)ejnω0df
当 T 0 T_0 T0趋于无穷时, f 0 f_0 f0趋于无穷小,原来的求和就需要改为积分,微分变量是从原来的 1 / T 0 1/T_0 1/T0转变过来的 d f df df。
= 1 2 π ∫ − ∞ + ∞ ( ∫ − ∞ + ∞ f ( t ) e − j n ω 0 t d t ) e j n ω 0 d ω = {1 \over {2\pi }}\int_{ - \infty }^{ + \infty } {\left( {\int_{ - \infty }^{ + \infty } {f(t){e^{ - jn{\omega _0}t}}dt} } \right){e^{jn{\omega _0}}}d\omega } =2π1∫−∞+∞(∫−∞+∞f(t)e−jnω0tdt)ejnω0dω
d f df df到 d ω d\omega dω需要乘以 2 π 2\pi 2π,所以最后傅里叶变换的合成式里就有一个 1 / 2 π 1/2\pi 1/2π的系数。
X ( j ω ) = ∫ − ∞ + ∞ f ( t ) e − j ω t d t f ( t ) = 1 2 π ∫ − ∞ + ∞ X ( j ω ) e j ω t d ω X(j\omega ) = \int_{ - \infty }^{ + \infty } {f(t){e^{ - j\omega t}}dt} \;\;\;\;\;\;f(t) = {1 \over {2\pi }}\int_{ - \infty }^{ + \infty } {X(j\omega ){e^{j\omega t}}d\omega } X(jω)=∫−∞+∞f(t)e−jωtdtf(t)=2π1∫−∞+∞X(jω)ejωtdω
在引入了冲激信号
δ
(
t
)
\delta(t)
δ(t)之后,周期信号和非周期信号的傅里叶变换得到了统一。周期信号做傅里叶变换的问题在于傅里叶变换的分析式是在无穷范围内的积分,周期信号做这样的积分无法收敛。
周期信号可以分解成多个复指数信号之和。所以我们只要能表示出复指数信号的傅里叶变换就可以得到周期信号的傅里叶变换。再结合傅里叶变换的频移性质:
e j ω 0 t x ( t ) ⇔ X ( j ( ω − ω 0 ) ) {e^{j{\omega _0}t}}x(t) \Leftrightarrow X\left( {j\left( {\omega - {\omega _0}} \right)} \right) ejω0tx(t)⇔X(j(ω−ω0))
我们只要知道"1"的傅里叶变换就能得到复指数信号的傅里叶变换。具体的求解过程有人写过,文章中给出了比较完整的推导过程,这里就不详细说了,结果是下面这个:
1 ⇔ 2 π δ ( ω ) 1 \Leftrightarrow 2\pi \delta \left( \omega \right) 1⇔2πδ(ω)
这个结果也很自然成立,把 2 π δ ( ω ) 2\pi \delta \left( \omega \right) 2πδ(ω)代入到傅里叶变换合成式里很明显就能成立。
F ( A cos ( ω 0 t ) ) = A 2 ⋅ 2 π δ ( ω − ω 0 ) + A 2 ⋅ 2 π δ ( ω + ω 0 ) {\mathcal F}\left( {A\cos ({\omega _0}t)} \right) = {A \over 2} \cdot 2\pi \delta \left( {\omega - {\omega _0}} \right) + {A \over 2} \cdot 2\pi \delta \left( {\omega + {\omega _0}} \right) F(Acos(ω0t))=2A⋅2πδ(ω−ω0)+2A⋅2πδ(ω+ω0)
所以周期信号的傅里叶变换的结果会包含 2 π δ ( ω − ω ′ ) 2\pi \delta \left( {\omega - {\omega'}} \right) 2πδ(ω−ω′)的冲激信号,而且每个冲激信号前面的系数正好是对应的傅里叶级数的各个系数。
离散时间的傅里叶变换和连续时间的傅里叶变换有很多相似的地方,但它们俩又是两套完全不同的分析体系,最大的区别在于从“积分”变为了“求和”。
傅里叶变换的本质是在频域对信号进行正交分解。在连续时间信号的情况下,对一个频率为
ω
0
\omega_0
ω0的周期信号来说,就是将它投影到
ω
0
\omega_0
ω0、
2
ω
0
2\omega_0
2ω0、
3
ω
0
3\omega_0
3ω0等这些与基频成谐波关系的频率上去。
连续的情况下,谐波是无限的.而在离散的情况下,周期为
N
N
N的数字序列,基频可以表示为
2
π
/
N
2\pi/N
2π/N,由于复指数信号的周期性:
e − j 2 π / N = e − j 2 π ( N + 1 ) / N {e^{ - j2\pi /N}} = {e^{ - j2\pi (N + 1)/N}} e−j2π/N=e−j2π(N+1)/N
所以在离散的情况下,一个周期为N的序列,只能在频域上分解为N个不同的复指数序列。
X ~ [ k ] = ∑ n = 0 N − 1 x ~ [ n ] W N k n x ~ [ n ] = 1 N ∑ n = 0 N − 1 X ~ [ k ] W N − k n \widetilde X[k] = \sum\limits_{n = 0}^{N - 1} {\widetilde x[n]W_N^{kn}} \;\;\;\;\widetilde x[n] = {1 \over N}\sum\limits_{n = 0}^{N - 1} {\widetilde X[k]W_N^{ - kn}} X [k]=n=0∑N−1x [n]WNknx [n]=N1n=0∑N−1X [k]WN−kn
上面是离散傅里叶级数的分析式和合成式,
W
N
k
n
W_N^{kn}
WNkn是对
e
−
j
2
π
k
n
N
e^{-j2\pi\frac{kn}{N}}
e−j2πNkn的简记,也叫做旋转因子。
离散傅里叶级数,不管是时域的数字序列还是频域的复指数序列都是周期的,
x
~
[
n
]
\widetilde x[n]
x
[n]和
X
~
[
n
]
\widetilde X[n]
X
[n]上的波浪线表示它们是周期信号。
先直接给出离散傅里叶变换的分析式和合成式:
X
[
k
]
=
∑
n
=
0
N
−
1
x
[
n
]
W
N
k
n
,
0
≤
k
≤
N
−
1
X[k] = \sum\limits_{n = 0}^{N - 1} {x[n]W_N^{kn}} ,\;\;0 \le k \le N - 1
X[k]=n=0∑N−1x[n]WNkn,0≤k≤N−1
x
[
n
]
=
1
N
∑
n
=
0
N
−
1
X
[
k
]
W
N
−
k
n
,
0
≤
n
≤
N
−
1
x[n] = {1 \over N}\sum\limits_{n = 0}^{N - 1} {X[k]W_N^{ - kn}} ,\;\;0 \le n \le N - 1
x[n]=N1n=0∑N−1X[k]WN−kn,0≤n≤N−1
离散傅里叶变换也是为了处理非周期序列的分析问题,这里干脆就直接把非周期序列看作是周期序列,相当于从离散傅里叶级数中截取一个周期长度的序列来表示。这就是DFT固有的周期性。
课本上在讲DFT之前还讲了DTFT,这是正统的分析有限长序列的频谱的方法。它也是通过离散傅里叶级数,令N趋于无穷得到的。下面是DTFT的分析式和合成式:
x [ n ] = 1 2 π ∫ 2 π X ( e j ω ) e j ω n d ω X ( e j ω ) = ∑ n = − ∞ + ∞ x [ n ] e − j ω n x[n] = {1 \over {2\pi }}\int\limits_{2\pi } {X\left( {{e^{j\omega }}} \right){e^{j\omega n}}d\omega } \;\;\;\;X\left( {{e^{j\omega }}} \right) = \sum\nolimits_{n = - \infty }^{ + \infty } {x[n]{e^{ - j\omega n}}} x[n]=2π12π∫X(ejω)ejωndωX(ejω)=∑n=−∞+∞x[n]e−jωn
DTFT得到的频谱是周期连续的频谱,并且是以 2 π 2\pi 2π为周期,就像下面这样:
如果将这个有限长序列按照它的长度
N
N
N进行周期延拓,相当于将它和一个周期为
N
N
N的冲激串(由单位冲激函数组成的序列)卷积。时域卷积相当于频域相乘。时域周期为
N
N
N的冲激串在频域就是周期为
2
π
/
N
2\pi/N
2π/N的冲激串。所以有限长序列的DFT相当于在其DTFT的频谱上采样。