傅里叶变换那点事
精读这一篇文章,你就可以深刻理解傅里叶变换的原理
本文首发于微信公众号振动信号研究所
周期信号的频谱-傅里叶级数
由信号的正交分解 可知一个周期为 T T T 的信号 f ( t ) f(t) f(t) 在区间 ( t 0 , t 0 + T ) (t_0, t_{0+T}) (t0,t0+T) 内可以表示为完备的正交函数集的线性组合,进而可以得到被表示的周期信号的频谱,包括幅值谱和相位谱,可以有单边谱和双边谱两种表示形式。具体描述参考文章: 为什么会有负频率,单边谱与双边谱的区别和联系
非周期信号的频谱-傅里叶变换
在工程中非周期信号往往更常见,那么如何求解非周期信号的频谱呢?
下面的讨论要求我们具有如下储备知识:三角函数集 { 1 , c o s ( Ω t ) , c o s ( 2 Ω t ) , . . . , s i n ( Ω t ) , s i n ( 2 Ω t ) , . . . } \{1, cos(\Omega t), cos(2\Omega t),...,sin(\Omega t), sin(2\Omega t),...\} {1,cos(Ωt),cos(2Ωt),...,sin(Ωt),sin(2Ωt),...}, 和虚指数函数集 { e j n Ω t , n ∈ Z } \{e^{jn\Omega t}, n\in Z\} {ejnΩt,n∈Z} , 是两类典型的区间 ( t 0 , t 0 + T ) ( T = 2 π / Ω ) (t_0, t_0+T)(T=2\pi / \Omega) (t0,t0+T)(T=2π/Ω) 上的完备的正交函数集。以他们为基对周期为 T T T 的信号进行分解可以得到离散的频谱,即直流分量和一系列谐波分量之和,且两个相邻的谐波分量间隔(即谱线间隔)为 Ω \Omega Ω ,且 Ω \Omega Ω 与 T T T 的关系为 T = 2 π / Ω T=2\pi / \Omega T=2π/Ω 。
为了得到非周期信号的频谱,我们还要接受这样一个抽象的事实:非周期信号可以看做是周期无穷大的周期信号。周期无穷大的周期信号,意味着我们目之所及能看到的都是非周期信号。
回顾:对周期为
T
T
T 的信号进行分解得到的傅里叶系数
F
n
F_n
Fn 可以表示为下式
F
n
=
1
T
∫
−
T
2
T
2
f
(
t
)
e
−
j
n
Ω
t
d
t
F_n = \frac{1}{T}{\int_{-\frac{T}{2}}^{\frac{T}{2}}f(t)e^{\:\it -j n\Omega t}\rm d \it t}
Fn=T1∫−2T2Tf(t)e−jnΩtdt
若
f
(
t
)
f(t)
f(t) 为非周期信号,则我们需要把周期
T
T
T 看成无穷大,此时, 谱线间隔 $\Omega\enspace (\Omega=2\pi /T) $ 是趋于
0
0
0 的,由于谱线间隔趋于
0
0
0 ,所以非周期信号的频谱为连续谱。上式中
F
n
F_n
Fn 可以看成是关于
n
Ω
n\Omega
nΩ 的函数,自变量
n
Ω
n\Omega
nΩ 每次跳变量为
Ω
\Omega
Ω (
Ω
\Omega
Ω趋于
0
0
0), 为了将
F
n
F_n
Fn 表示成连续函数(因为此时已经是连续谱了,再用离散的函数表示不合适),转换方式如下:
- 将自变量 n Ω n\Omega nΩ 表示为 ω \omega ω ,即 ω = n Ω \omega = n\Omega ω=nΩ
- 此时跳变量 Ω \Omega Ω 为无穷小量 d ω \rm d\omega dω,即 d ω = Ω \rm d\omega =\Omega dω=Ω
在
T
→
∞
T\to\infty
T→∞ 时,系数
F
n
F_n
Fn 也是趋于
0
0
0 的,这意味着连续谱中的所有系数都是无穷小量,但这些无穷小量之间又有明显的相对大小之分,为了观测到这些相对大小且让数值更有意义,在连续谱中,我们观测
F
n
/
(
1
/
T
)
F_n/(1/T)
Fn/(1/T) ,这个量表示的是频谱密度函数(单位频率上的频谱)。将转换后的连续变量
ω
\omega
ω 带入
F
n
/
(
1
/
T
)
F_n/(1/T)
Fn/(1/T) ,可以得到:
lim
T
→
∞
F
n
1
/
T
=
lim
T
→
∞
F
n
T
=
lim
T
→
∞
∫
−
T
2
T
2
f
(
t
)
e
−
j
n
Ω
t
d
t
=
∫
−
∞
∞
f
(
t
)
e
−
j
ω
t
d
t
\begin{align*} \lim _{T \rightarrow \infty} \frac{F_n}{1 / T}&=\lim _{T \rightarrow \infty} F_n T\\ &=\lim _{T \rightarrow \infty} \int_{-\frac{T}{2}}^{\frac{T}{2}} f(t) \mathrm{e}^{-j n \Omega t} \mathrm{~d} t\\ &=\int_{-\infty}^{\infty} f(t) \mathrm{e}^{-j \omega t} \mathrm{~d} t \end{align*}
T→∞lim1/TFn=T→∞limFnT=T→∞lim∫−2T2Tf(t)e−jnΩt dt=∫−∞∞f(t)e−jωt dt
工程上习惯用
F
(
j
ω
)
F(j\omega)
F(jω) (有的地方直接用
F
(
ω
)
F(\omega)
F(ω) 表示)表示对信号
f
(
t
)
f(t)
f(t) 进行上述变换的结果,如下式,就是大名鼎鼎的傅里叶变换:
F
(
j
ω
)
=
∫
−
∞
∞
f
(
t
)
e
−
j
ω
t
d
t
F(j\omega)=\int_{-\infty}^{\infty} f(t) \mathrm{e}^{-j \omega t} \mathrm{~d} t
F(jω)=∫−∞∞f(t)e−jωt dt
式中
F
(
j
ω
)
F(j\omega)
F(jω) 是
ω
\omega
ω 的函数,表示进行傅里叶变换后得到的频谱密度函数,简称频谱密度或频谱,注意这里和周期信号的傅里叶级数表示的频谱是有本质区别的。
F
(
j
ω
)
F(j\omega)
F(jω) 一般是复函数,所以又可以表示为:
F
(
j
ω
)
=
∣
F
(
j
ω
)
∣
⋅
e
j
φ
(
ω
)
F(j\omega) = |F(j\omega)|\cdot \mathrm{e}^{j \varphi(\omega)}
F(jω)=∣F(jω)∣⋅ejφ(ω)
式中
∣
F
(
j
ω
)
∣
|F(j\omega)|
∣F(jω)∣ 称为幅度频谱,是关于频率
ω
\omega
ω 的偶函数,
φ
(
ω
)
\varphi(\omega)
φ(ω) 称为相位频谱,是关于频率
ω
\omega
ω 的奇函数。
傅里叶反变换
根据傅里叶级数,
f
(
t
)
f(t)
f(t) 可以表示为各傅里叶系数与对应“基函数”的乘积进行叠加,如下式:
$$
\begin{align*}
f(t) &=\sum_{n=-\infty}^{\infty}F_n\rm e^{:\it j n\Omega t}\
&= \sum_{n=-\infty}^{\infty}F_n:T:\rm e^{:\it j n\Omega t}:\frac{1}{T}\
\end{align*}
KaTeX parse error: Can't use function '$' in math mode at position 4: 在 $̲T\to\infty$ 时,有…
f(t) = \frac{1}{2\pi}\int_{-\infty}^{\infty}F(j\omega):\rm e^{:\it j \omega t}:\rm d\omega
$$
上式称为傅里叶反变换式。
而且有意思的是,傅里叶变换与逆变换的过程是无损的,无论你怎么变,信号表示的信息量是一样的。
傅里叶级数到傅里叶变换过渡的例子
采样函数Sa(x)介绍
在讲傅里叶级数到傅里叶变换过渡的例子之前,先介绍一个很有用的函数,被称为采样函数,其表达式为:
Sa
(
x
)
=
sin
(
x
)
x
\operatorname{Sa}(x)=\frac{\operatorname{sin}(x)}{x}
Sa(x)=xsin(x)
这个函数它长这样:
这里只画出了在 [ − 20 , 20 ] [-20, 20] [−20,20] 区间内的函数曲线,该函数的过零点是 ( k π , 0 ) , k = ± 1 , ± 2 , . . . (k \pi,0), k=\pm1,\pm2,... (kπ,0),k=±1,±2,... 该函数振荡衰减,在无穷远处,函数值是无限趋于0的。
这里先抛出一个问题供大家思考:如何求解下面的积分?
∫
−
∞
+
∞
sin
x
x
d
x
\int_{-\infty}^{+\infty} \frac{\sin x}{x} \rm d \it x
∫−∞+∞xsinxdx
求周期脉冲信号的频谱
有一幅度为1,脉冲宽度为 τ \tau τ 的周期矩形脉冲,其周期为T,如下图所示,求其频谱。
周期信号的频谱是离散谱,可以直接代入公式求解,得到系数 F n F_n Fn 的表达式如下:
F n = 1 T ∫ − T 2 T 2 f ( t ) e − j n Ω t d t = 1 T ∫ − τ 2 τ 2 e − j n Ω t d t = 1 T e − j n Ω t − j n Ω ∣ − τ 2 τ 2 = 2 T sin ( n Ω τ 2 ) n Ω = τ T sin n Ω τ 2 n Ω τ 2 = τ T Sa ( n Ω τ 2 ) F_{n}=\frac{1}{T} \int_{-\frac{T}{2}}^{\frac{T}{2}} f(t) \mathrm{e}^{-j n \Omega t} \mathrm{~d} t=\frac{1}{T} \int_{-\frac{\tau}{2}}^{\frac{\tau}{2}} \mathrm{e}^{-j n \Omega t} \mathrm{~d} t=\left.\frac{1}{T} \frac{\mathrm{e}^{-j n \Omega t}}{-j n \Omega}\right|_{-\frac{\tau}{2}} ^{\frac{\tau}{2}}=\frac{2}{T} \frac{\sin \left(\frac{n \Omega \tau}{2}\right)}{n \Omega}=\frac{\tau}{T} \frac{\sin \frac{n \Omega \tau}{2}}{\frac{n \Omega \tau}{2}}=\frac{\tau}{T} \operatorname{Sa}\left(\frac{n \Omega \tau}{2}\right) Fn=T1∫−2T2Tf(t)e−jnΩt dt=T1∫−2τ2τe−jnΩt dt=T1−jnΩe−jnΩt∣ ∣−2τ2τ=T2nΩsin(2nΩτ)=Tτ2nΩτsin2nΩτ=TτSa(2nΩτ)
为了更清晰地认识到它的频谱长什么样子,我们令
T
=
4
τ
T=4\tau
T=4τ ,此时频谱间隔为
Ω
=
2
π
T
=
2
π
4
τ
\Omega=\frac{2\pi}{T}=\frac{2\pi}{4\tau}
Ω=T2π=4τ2π
在
n
Ω
τ
/
2
=
k
π
n \Omega \tau/2=k\pi
nΩτ/2=kπ 时,频谱有过零点,此时
n
Ω
=
2
k
π
/
τ
n \Omega =2k\pi/\tau
nΩ=2kπ/τ
,
k
=
±
1
,
±
2...
,k=\pm1,\pm2...
,k=±1,±2... 所以两零点间的谱线间隔数为:
2
π
/
τ
Ω
=
2
π
/
τ
2
π
/
4
τ
=
4
\frac{2\pi/\tau}{\Omega}=\frac{2\pi/\tau}{2\pi/4\tau}=4
Ω2π/τ=2π/4τ2π/τ=4
结合采样函数的特点,画出频谱
F
n
Fn
Fn 如下图所示(这里的频谱可以看成是系数的函数,既不是幅值谱也不是相位谱):
求非周期信号的频谱(频谱密度函数)
上面的例子中,令 T = 4 τ T=4\tau T=4τ ,使我们对周期信号的频谱有个基本认识。那么如果令 T = 8 τ T=8\tau T=8τ 、 T = 16 τ T=16\tau T=16τ ,甚至 T → ∞ T\to\infty T→∞ 呢?直接上结果吧:
当周期
T
→
∞
T\to\infty
T→∞ 时,周期脉冲信号则变成了门函数,所有的系数
F
n
Fn
Fn 都无限接近0,所以为了区分这些无穷小量之间的相对大小,我们用频谱密度函数来表示非周期信号的频谱,即:
F
(
j
ω
)
=
lim
T
→
∞
F
n
T
=
τ
Sa
(
ω
τ
2
)
F(j\omega)=\lim _{T \rightarrow \infty} F_n T=\tau \operatorname{Sa}\left(\frac{\omega \tau}{2}\right)
F(jω)=T→∞limFnT=τSa(2ωτ)
其系数函数(频谱图)、幅值谱、相位谱长这样:
这就是门函数的傅里叶变换,得到的结果竟是取样函数的形状!如果你只能记住一个函数的傅里叶变换的结果,那么我强烈建议你记住门函数的傅里叶变换结果,因为它真的是太重要了。
利用傅里叶变换求采样函数的反常积分
还记得刚刚抛出的问题吗:如何求解下面的反常积分?
∫
−
∞
+
∞
sin
x
x
d
x
\int_{-\infty}^{+\infty} \frac{\sin x}{x} \rm d \it x
∫−∞+∞xsinxdx
这个积分的求解显然不那么简单,但是我们如果学了傅里叶变换,也就顺带掌握了一种求解方法(这种求解方法的重要性显然比傅里叶变换本身次要的太多了)。求解过程如下:
令门函数的宽度取值为
τ
=
2
\tau=2
τ=2 ,则其傅里叶变换为:
F
(
j
ω
)
=
2
Sa
(
ω
)
F(j\omega)=2 \operatorname{Sa}(\omega)
F(jω)=2Sa(ω)
那么其傅里叶逆变换为:
f
(
t
)
=
1
2
π
∫
−
∞
∞
F
(
j
ω
)
e
j
ω
t
d
ω
=
1
π
∫
−
∞
∞
Sa
(
ω
)
e
j
ω
t
d
ω
f(t) = \frac{1}{2\pi}\int_{-\infty}^{\infty}F(j\omega)\:\rm e^{\:\it j \omega t}\:\rm d\omega= \frac{1}{\pi}\int_{-\infty}^{\infty}\operatorname{Sa}(\omega)\:\rm e^{\:\it j \omega t}\:\rm d\omega
f(t)=2π1∫−∞∞F(jω)ejωtdω=π1∫−∞∞Sa(ω)ejωtdω
令
t
=
0
t=0
t=0 ,则有:
f
(
0
)
=
1
π
∫
−
∞
∞
Sa
(
ω
)
d
ω
=
1
π
∫
−
∞
∞
sin
ω
ω
d
ω
f(0)= \frac{1}{\pi}\int_{-\infty}^{\infty}\operatorname{Sa}(\omega)\:\:\rm d\omega=\frac{1}{\pi}\int_{-\infty}^{\infty} \frac{\sin \omega}{\omega} \rm d \it \omega
f(0)=π1∫−∞∞Sa(ω)dω=π1∫−∞∞ωsinωdω
又因为
f
(
0
)
=
1
f(0)=1
f(0)=1 ,所以该反常积分结果就是
π
\pi
π 。