一、信号处理:时域与频域
时域(Time Domain)是我们生活中常见的信号表示方式,以横轴为时间,纵轴为信号该时刻的强度(幅度),就可以得到一张时域图。打个比方,通过每时每刻的震动强度可以得到音频的时域图,或者画一张每小时的车流量,或者每日的降水量的图,也是时域图。
频域(Frequency Domain)则是一种数学上描述信号的方式。在频域中,唯一存在的波形是正弦波(Sine Wave,此处指代余弦和正弦这样的简谐波总称),通过不断叠加不同周期的正弦波,我们认为我们可以拟合所有的时域信号。画成图的话,频域是横轴为频率,纵轴为幅度的一个图形。

那么我们为什么需要频域呢?一方面,将复杂信号拆分为不同频率的正弦波,可以更简洁地对其进行表示。另一方面,通过频率分离,我们可以做到一些滤波操作。例如,一段音频里既有男生在说话,也有女生在说话,我们想把男女生的声音分开,而女生的声音频率要比男生的高,于是就可以根据频率来划分。保留男生的低频声音的滤波叫做低通滤波,而保留女生的高频声音的滤波叫做高通滤波。
二、傅里叶变换
2.1 傅里叶变换的本质
傅里叶变换的总公式如下:
F ( ω ) = ∫ − ∞ + ∞ f ( t ) e − i ω t d t F(\omega) =\int_{-\infty}^{+\infty} f(t)e^{-i\omega t}dt F(ω)=∫−∞+∞f(t)e−iωtdt
其中 ω \omega ω表示频率,而 t t t表示时间,这个操作就是把信号从时域转到频域上。
这个可怕的式子到底是什么意思呢?在这里非常推荐3Blue1Brown的图解。
让我们回到高中学过,或者高中的你正在学的复数概念。复数是二维的数,在横轴的实数轴上,又添加了一条纵轴的虚数轴。而单位虚数 i = − 1 i=\sqrt{-1} i=−1。
著名欧拉公式就是 e i x = cos x + i sin x e^{ix}=\cos x + i \sin x eix=cosx+isinx,这个公式有一个重要的几何意义,那就是 e i x e^{ix} eix代表着在复平面上,从(1,0)出发,沿着圆心为原点,半径为1的单位圆逆时针走 x x x个单位的圆周,所落到的点代表的复数。
由此可知:
- h ( t ) = e i t h(t)=e^{it} h(t)=eit 代表一个每秒走1个单位的圆周的,在圆周上逆时针运动的点的轨迹函数。
- h ( t ) = e − i t h(t)=e^{-it} h(t)=e−it是顺时针运动的轨迹函数。
- h ( t ) = e − i ω t h(t)=e^{-i\omega t} h(t)=e−iωt是每 1 ω \frac{1}{\omega} ω1秒走1单位圆周(或者说每秒走 ω \omega ω单位圆周),在圆周上逆时针运动的点的轨迹函数。
- h ( t ) = f ( t ) e − i ω t h(t)=f(t)e^{-i\omega t} h(t)=f(t)e−iωt,则相当于我们将时域图上,横轴为时间,纵轴为幅度的 f ( t ) f(t) f(t),画到了圆上。时间从轴变成了角度,幅度从轴变成了幅长(到原点的距离)。圆上的一圈,我们能画原时域图 1 ω \frac{1}{\omega} ω1秒的内容。

对于一个正弦波,大部分情况下只要你无限地画下去,它在圆周上都会分布得比较均匀,除了……当 1 ω \frac{1}{\omega} ω1秒恰好是原正弦波的一个周期时。此时,时域图上波峰的位置会在圆的一侧,而波谷的位置会在另一侧,就像这样:

那么这时,我们将这个图形上所有的点都加起来,也就是,找它们二维上的几何平均点(质心),就可以近似得到原函数在 ω \omega ω这个频率下的正弦波有多大的强度。而这种正弦波在原函数中持续时间越长(画了越多圈上图的图案),得到的 F ( ω ) = ∫ − ∞ + ∞ f ( t ) e − i ω t d t F(\omega) =\int_{-\infty}^{+\infty} f(t)e^{-i\omega t}dt F(ω)=∫−∞+∞f(t)e−iωtdt也会越大。由此,我们就得到了原时域信号在不同频率下的强度。
同样,也存在频域到时域上的傅里叶逆变换:
f ( t ) = 1 2 π ∫ − ∞ ∞ F ( ω ) e i ω t d ω f(t) = \frac{1}{2\pi} \int_{-\infty}^{\infty} F(\omega) e^{i\omega t} d\omega f(t)=2π1∫−∞∞F(ω)eiωtdω
2.2 从线性代数角度看离散傅里叶变换
能够被存储下来的信号,往往没有真正的连续形式,故实际中用得更多的,是离散傅里叶变换。既然离散了,我们显然也没办法把所有频率都做一遍了,此时可以近似地用 2 k π n ( k ∈ { 0 , . . . , n − 1 } \frac{2k\pi}{n}(k \in \{0,...,n-1\} n2kπ(k∈{
0,...,n−1}这一套频率来近似地拟合,下面我们记记 W n = e 2 π n i W_n=e^{\frac{2\pi}{n}i} Wn=en2πi。
假设我们在时域上有一组采样点 f ( t 0 ) , . . . , f ( t n − 1 ) f(t_0),...,f(t_{n-1}) f(t0),...,f(tn−1),离散傅里叶变换的公式为:
F ( W n k ) = ∑ j = 0 n − 1 f ( t j ) W n − k j F(W_n^k)=\sum_{j=0}^{n-1} f(t_j) W_n^{-kj} F(Wnk)=j=0∑n−1f(tj)Wn−kj
相应地,逆傅里叶变换的公式为:
f ( t j ) = 1 n ∑ k = 0 n − 1 F ( W n k ) W n k j f(t_j) = \frac{1}{n}\sum_{k=0}^{n-1} F(W_n^k)W_n^{kj} f(tj)=n1k=0∑n−1F(Wnk)Wnkj
如果把傅里叶变换写成矩阵形式,就是这样:
( F ( 0 ) ⋮ F ( n − 1 ) ) = ( W n − 0 ⋯ W n − ( n − 1 ) ⋮ ⋱ ⋮ W n − ( n − 1 ) ⋯ W n − ( n − 1 ) 2 ) ( f ( t 0 ) ⋮ f ( t n − 1 ) ) \begin{pmatrix} F(0) \\ \vdots \\ F(n-1) \end{pmatrix}= \begin{pmatrix} W_n^{-0} & \cdots & W_n^{-(n-1)} \\ \vdots & \ddots & \vdots \\ W_n^{-(n-1)} & \cdots & W_n^{-(n-1)^2} \end{pmatrix} \begin{pmatrix} f(t_0) \\ \vdots \\ f(t_{n-1}) \end{pmatrix}
F(0)⋮F(n−1)
=
Wn−0⋮Wn−(n−1)⋯⋱⋯Wn−(n−1)⋮Wn−(n−1)2

最低0.47元/天 解锁文章
649

被折叠的 条评论
为什么被折叠?



