傅里叶变换与短时傅里叶变换
在了解短时傅里叶变换之前,首先要知道是什么是傅里叶变换( fourier transformation,FT),傅里叶变换就是将一个信号分解为不同频率的复指数信号的和,例如我们要对一段钢琴曲进行傅里叶变换,它的结果能够告诉我们这一段时间内按下了那些琴键(简单假设为不同琴键对应不同频率的声音),注意我们处理的时长是整个时间段。傅里叶变换的公式可由下面给出:
F ( ω ) = F [ s ( t ) ] = ∫ − ∞ + ∞ s ( t ) e − j ω t d t F(\omega)=\mathcal{F}[s(t)]=\int_{-\infty}^{+\infty} s(t)e^{-j\omega t}dt F(ω)=F[s(t)]=∫−∞+∞s(t)e−jωtdt
可以看出来,傅里叶变换得到的是一个谱,它是不同频率下对应的幅度谱和相位谱,幅度谱我们用的比较多。利用傅里叶变换能够对信号
进行分析。根据信号是否为周期信号,以及时域上是否连续,又可以分为傅里叶级数展开、离散时间傅里叶变换、离散傅里叶变换等等,在此不再赘述,《信号与系统》和《数字信号处理》的相关书籍介绍很多。
下面是短时傅里叶变换,(short-time fourier transformation,STFT),有时候也叫加窗傅里叶变换,时间窗口使得信号只在某一小区间内有效,这就避免了传统的傅里叶变换在时频局部表达能力上的不足,使得傅里叶变化有了局部定位能力。公式如下:
Ω ( t , f ) = Γ [ s ( t ) ] = ∫ − ∞ + ∞ s ( τ ) ω ( τ − t ) e − j 2 π f τ d τ \Omega(t,f)=\Gamma[s(t)]=\int_{-\infty}^{+\infty} s(\tau)\omega (\tau-t)e^{-j2\pi f \tau }d\tau Ω(t,f)=Γ[s(t)]=∫−∞+∞s(τ)ω(τ−t)e−j2πfτdτ
还是以钢琴音乐的信号分析,虽然傅里叶变换能够告诉我们这段音乐中包含那些琴键的声音,但是我们无法知道是在哪些时间点按下这些琴键的。傅里叶变换是一种频域分析共工具,而短时傅里叶变换就是为了解决以上问题而提出的一种时频域方法,后面还有人提出了小波变换。
mailab中可以采用stft函数和spectrogram函数来实现,当然也可以自己动手实现。
什么是窗?
在信号处理中,我们经常听到海明窗(hamming window)、汉宁窗&#