本文主要是我在学习GNN的时候补充的信号与系统的内容,暂且本文的内容够用,如果后续还有那就后面补充。
我看这部分内容没有做数学推导,主要是考虑在应用层面的内容,最主要的在于理解这是个什么东西。
当然由于学无止境,我难免会有些东西理解的错误或者没有写明白的部分,希望各位多多指教。
对了宝贝儿们,卑微小李的公众号【野指针小李】已开通,期待与你一起探讨学术哟~摸摸大!
一个信号输入进入一个系统后,可以有多种方式描述(分析)这个信号,每种方式有不同的角度,不同的角度叫做域(domain),在信号与系统中常用的域有时域(time domain) 和 频域(frequency domain)
时域(time domain)简单来说就是随着时间变化信号的变化,时域是客观存在的域,也是唯一客观的域。其自变量为时间 t t t,因变量为信号的变化,用 x ( t ) x(t) x(t)描述信号在不同时刻取值的函数。
频域(frequency domain)是把时域波形做傅里叶变换(Fourier Transform)等变换后,得到复频域的表达式。其波形为频谱图,描述频率变化和幅度变化的关系,自变量是频率,因变量是该频率信号的幅度。
我这里盗用知乎大佬的一个图,在图上做一些改动,原谅我这个灵魂画师,后面补上链接。
这个图详细阐述了时域与频域之间的关系,我们输入的信号是红色的波形,在时域上的表示是红色这样,通过傅里叶变换后变成了一系列的正弦信号,每个正弦信号对应一个频率,每一个频率的信号都有不同的振幅,将振幅刻画在频域上就是深蓝色的图形。
至于什么是傅里叶变换,大家不要慌,我们先把基础的内容讲了,最后讲傅里叶变换。
复变函数部分最主要的是欧拉公式:
e i x = c o s x + i s i n x e^{ix}=cosx + isinx eix=cosx+isinx
其目的在于:使用复指数信号来表示正弦信号。
先上个图:
我个人认为,为什么要将正弦信号映射到复频域,是因为如果输入的信号在时域上是无限宽的,那么没有办法表达出来,但是在复频域上,只需要考虑绕原点旋转了几圈。
当然,3B1B的解释是,如果不在复频域,那么所有的运动都会是如下这样:
就会只在实数轴上运动,并不会展现原有的模样,比如这样:
这一部分网上已经有很多大佬用栗子简介讲解了,我也就只是照葫芦画瓢一下。
就好比我们买了一杯珍珠椰果奶茶,我们想分析这杯珍珠椰果奶茶里面的成分,包含了多少珍珠,多少椰果,多少奶,多少茶,多少水,于是我们将其丢进一个滤波器中,该滤波器可以分别提取出来不同的配方,这就是傅里叶变换(Fourier transform)。
但是我们不可能分别干吃珍珠、椰果、奶、茶、水,我们想要的是珍珠椰果奶茶,所以分析好成分和比例后,按照这些比例把这些成分通过之前的滤波器再组合在一起,获得珍珠椰果奶茶,这就是傅里叶反变换(inverse Fourier transform)。
大家注意中间浅蓝色密密麻麻的信号,将红色信号分解为这些密密麻麻的浅蓝色信号是傅里叶变换,而将这些信号组合在一起构成红色信号是傅里叶反变换。
有了上面的内容后,那么可以开始详细说一下我对傅里叶变换与反变换的理解了。
根据前人(傅里叶与狄利赫里)的经验表明,满足狄利赫里条件的周期条件的周期信号,可以分解为一组成谐波关系的正弦信号,对于这个正弦信号,只需要三个量即可确定该运动的状态。
正弦信号公式为:
y = A s i n ( ω t + ϕ ) = A s i n ( θ + ϕ ) y = Asin(\omega t + \phi) = Asin(\theta + \phi) y=Asin(ωt+ϕ)=Asin(θ+ϕ)
其中, A A A:正弦波的幅值; ω \omega ω:角速度或者角频率; ϕ \phi ϕ:初始相位角; t t t:时刻; θ \theta θ:转角
我们根据欧拉公式将正弦信号投影至复频域,得到复指数:
e j w t e^{jwt} ejwt
由于之前的定义,我们先给出傅里叶变换与傅里叶反变换的公式:
其中, x ( t ) x(t) x(t):待分析的周期信号, a k a_k ak:第k个谐波成分的幅值与初始相位(也可以说是频率 k k k对于的幅值与初始相位), k k k:特定频率, 2 π t T 2\pi \frac{t}{T} 2πTt: t t t时刻相位补偿。
我相信不止我一个人最开始看到这两个公式是一头雾水,但是慢慢看下面的解释。
我们先忘记上面看到的这两个公式,就当你根本没见识过。
我们先从 k = 0 k=0 k=0这个频率的信号来看:
根据3B1B的描述, k = 0 k=0 k=0这一点对应的信号是整个图形的重心,如下图:
也就是说 a 0 a_0 a0是一个周期中所有输出值(信号)的平均数。
当我们将输入值(信号数量)放的无限大的时候,那么这个平均数是越来越趋近于真实值的,于是可以构成一个积分:
a 0 = ∫ 0 1 x ( t ) d t x ( t ) = ∑ k = − ∞ + ∞ a k e j k 2 π T t \begin{aligned} &a_0=\int_0^1x(t)dt \\ &x(t)=\sum_{k=-\infty}^{+\infty}a_k e^{jk \frac{2\pi}{T} t} \end{aligned} a0=∫01x(t)dtx(t)=k=−∞∑+∞akejkT2πt
这里 [ 0 , 1 ] [0,1] [0,1]指的是一个周期,即 T T T,对应的 1 T = 1 \frac{1}{T}=1 T1=1。
而关于这个结论的证明如下:
我们将 x ( t ) x(t) x(t)展开:
∫ 0 1 x ( t ) d t = ∫ 0 1 ( . . . + a − 1 e − 1 ⋅ 2 π T j t + a 0 e 0 ⋅ 2 π T j t + a 1 e 1 ⋅ 2 π T j t + . . . ) d t \int_0^1 x(t)dt = \int_0^1(...\ + \ a_{-1} e^{-1·\frac{2\pi}{T} jt} + a_0 e^{0·\frac{2\pi}{T} jt} + a_1 e^{1·\frac{2\pi}{T} jt} + ...)dt ∫01x(t)dt=∫01(... + a−1e−1⋅T2πjt+a0e0⋅T2πjt+a1e1⋅T2πjt+...)dt
由于区间相同,和的积分等于积分的和,所以将积分代入:
∫ 0 1 x ( t ) d t = . . . + ∫ 0 1 a − 1 e − 1 ⋅ 2 π T j t d t + ∫ 0 1 a 0 e 0 ⋅ 2 π T j t d t + ∫ 0 1 a 1 e 1 ⋅ 2 π T j t d t + . . . \int_0^1 x(t) dt = ...\ +\int_0^1 \ a_{-1} e^{-1·\frac{2\pi}{T} jt} dt + \int_0^1 a_0 e^{0·\frac{2\pi}{T} jt}dt + \int_0^1 a_1 e^{1·\frac{2\pi}{T} jt} dt + ... ∫01x(t)dt=... +∫01 a−1e−1⋅T2πjtdt+∫01a0e0⋅T2πjtdt+∫01a1e1⋅T2πjtdt+...
既然我们把这个表达式给拆分开了,那么我们就可以得出一个结论:所有信号的平均值等于每个信号平均值的和。
上面这句话可能有点拗口,不过没关系,我们接着看,这个时候我们需要使用一个理论:
要找到特定频率下的信号能量,就以该频率围绕一个圆旋转信号,然后沿着这条路径求一堆点的平均数。
这个圆就是说的复平面上的圆,将这句话转换成图表示如下:
这个展示的是以该频率围绕一个圆旋转信号一个周期的情况,其平均值为0,我们将这个理论代入上面拆开后的积分中,以一个周期进行循环,那么我们会得到一个神奇的结论:从 − ∞ -\infty −∞到 + ∞ +\infty +∞,除了0这个频率以外,其余频率全为0。
因为0频率这个点 e 0 = 1 e^0=1 e0=1,导致在这个周期内有 a 0 a_0 a0这个值,其余全为0,于是我们通过这个方式计算出了如下结果:
∫ 0 1 x ( t ) d t = a 0 \int_0^1 x(t) dt =a_0 ∫01x(t)dt=a0
有了上面的理论后,我们将其推广开,我们需要得到的是每一个频率 k k k的初始相位与振幅 a k a_k ak。
这个时候我们只需要使得频率 k k k不旋转即可,那么就乘以 e − k ⋅ 2 π T i t e^{-k · \frac{2\pi}{T} it} e−k⋅T2πit
于是我们的式子就变为了:
a k = ∫ 0 1 x ( t ) e − k ⋅ 2 π T i t d t = ∫ 0 1 ( . . . + a k − 1 e − 1 ⋅ 2 π T j t + a k e 0 ⋅ 2 π T j t + a k + 1 e 1 ⋅ 2 π T j t + . . . ) d t a_k=\int_0^1x(t) e^{-k · \frac{2\pi}{T} it}dt = \int_0^1(...\ + \ a_{k-1} e^{-1·\frac{2\pi}{T} jt} + a_k e^{0·\frac{2\pi}{T} jt} + a_{k+1} e^{1·\frac{2\pi}{T} jt} + ...)dt ak=∫01x(t)e−k⋅T2πitdt=∫01(... + ak−1e−1⋅T2πjt+ake0⋅T2πjt+ak+1e1⋅T2πjt+...)dt
这样我们也就同样解出了 a k a_k ak。
即:
a k = 1 T ∫ T x ( t ) e − j k ω t d t = 1 T ∫ T x ( t ) e − j k 2 π T t d t a_k=\frac{1}{T} \int_T x(t)e^{-jk \omega t}dt=\frac{1}{T} \int_T x(t)e^{-jk \frac{2 \pi}{T} t}dt ak=T1∫Tx(t)e−jkωtdt=T1∫Tx(t)e−jkT2πtdt
这就是傅里叶变换。
当每个 a k a_k ak解出来后,我们再将其求和,那么就得到了总的信号 x ( t ) x(t) x(t):
x ( t ) = ∑ k = − ∞ + ∞ a k e j k ω t = ∑ k = − ∞ + ∞ a k e j k 2 π T t x(t) = \sum_{k=-\infty}^{+\infty}a_k e^{jk\omega t} = \sum_{k=-\infty}^{+\infty}a_k e^{jk \frac{2\pi}{T} t} x(t)=k=−∞∑+∞akejkωt=k=−∞∑+∞akejkT2πt
这就是傅里叶反变换。
上面的内容我觉得最主要的是:
[1]3Blue1Brown.【官方双语】微分方程概论-第四章:但什么是傅立叶级数呢?-从热流到画圈圈[EB/OL].https://www.bilibili.com/video/BV1vt411N7Ti,2019-08-08.
[2]李狗嗨.为什么傅里叶变换可以把时域信号变为频域信号?[EB/OL].https://www.zhihu.com/question/279808864/answer/552617806,2020-03-11.
[3]DBinary.如何理解卷积与傅里叶变换的关系?[EB/OL].https://www.zhihu.com/question/340004682/answer/798510348,2019-08-22.
[4]百度百科.时域频域[EB/OL].https://baike.baidu.com/item/%E6%97%B6%E5%9F%9F%E9%A2%91%E5%9F%9F/9399325?fr=aladdin,2020-10-10.
[5]MoSanAI.时域和频域的关系[EB/OL].https://blog.csdn.net/sinat_28442665/article/details/84887231,2018-12-07.