小波变换(一): 为什么需要小波?
系列文章列表
本文是《小波变换》系列的第1篇,主要介绍为什么需要小波.
- 小波变换(一): 为什么需要小波?
- 小波变换(二): 小波基函数,母小波和父小波
- 小波变换(三): 从实例代码看Haar小波分解和重构
- 小波变换(四): 常用小波特点及二维小波变换
- 小波变换(五): 小波,傅里叶与卷积的关系
从傅里叶变换的不足之处开始说起
理解本文需要先理解傅里叶变换,默认正处在理解了傅里叶但还没理解小波的道路上。
我们知道傅里叶变化可以分析信号的频谱,那么为什么还要提出小波变换?答案就是方沁园所说的,“对非平稳过程,傅里叶变换有局限性”。
看如下的该信号:
做完FFT(快速傅里叶变换)后,可以在频谱上看到清晰的四条线,信号包含四个频率成分。
一切没有问题。但是,如果是频率随着时间变化的非平稳信号呢?
最上边的是频率始终不变的平稳信号。而下边两个则是频率随着时间改变的非平稳信号,它们同样包含和最上信号相同频率的四个成分。做FFT后,我们发现这三个时域上有巨大差异的信号,频谱(幅值谱)却非常一致。
我们从频谱上无法区分下边两个非平稳信号,因为它们包含的四个频率的信号的成分确实是一样的,只是出现的先后顺序不同。
对于这样的非平稳信号,只知道包含哪些频率成分是不够的,我们还想知道各个成分出现的时间。知道信号频率随时间变化的情况,各个时刻的瞬时频率及其幅值——这也就是时频分析。
短时傅里叶变换(Short-Time Fourier Transform, STFT)
一个简单可行的方法就是——加窗。我又要套用方沁园同学的描述了,“把整个时域过程分解成无数个等长的小过程,每个小过程近似平稳,再傅里叶变换,就知道在哪个时间点上出现了什么频率了。”这就是短时傅里叶变换。
看图:
时域上分成一段一段做FFT,不就知道频率成分随着时间的变化情况了吗!用这样的方法,可以得到一个信号的时频图了:
图上既能看到10Hz, 25 Hz, 50 Hz, 100 Hz四个频域成分,还能看到出现的时间。两排峰是对称的,所以大家只用看一排就行了。
是不是棒棒的?时频分析结果到手。但是STFT依然有缺陷。
使用STFT存在一个问题,我们应该用多宽的窗函数?
- 窗口太窄:窗内的信号太短,会导致频率分析不够精准,频率分辨率差。
- 窗口太宽:时域上又不够精细,时间分辨率低。
这里使用窗口为一个高斯函数的形式,为窗口的长度,t为时间。
用窄窗,时频图在时间轴上分辨率很高,几个峰基本成矩形,而用宽窗则变成了绵延的矮山。但是频率轴上,窄窗明显不如下边两个宽窗精确。
对于时变的非稳态信号,高频适合小窗口,低频适合大窗口。然而STFT的窗口是固定的,在一次STFT中宽度不会变化,所以STFT还是无法满足非稳态信号变化的频率的需求。
小波级数展开与小波变换
STFT是给信号加窗,分段做FFT;而小波直接把傅里叶变换的基给换了——将无限长的三角函数基换成了有限长的会衰减的小波基。这样不仅能够获取频率,还可以定位到时间了。
小波是指能量有限,在时域中是有限长的,会衰减的,较为集中的波函数。小波级数展开就是使用一组小波函数作为基函数进行的级数展开。
再复习一下傅里叶级数和傅里叶变换。
- 对于连续性周期信号,使用基函数 进行傅里叶级数展开。
- 对于连续性非周期信号(自然信号),使用傅里叶变换进行频域分析。
- 对于离散性非周期信号(采样的自然信号),使用离散傅里叶变换进行频域分析。
对于连续的信号,以为基函数的小波变换公式为:
对于离散的信号,以为基函数,进行小波级数展开:
注意二者的小波基函数或者,本质是一样的。
- ,以及都起到缩放函数的作用,因此都是尺度因子,对应于傅里叶变换中的的倒数(周期)。
- ,以及是平移因子。
事实上,给了我们公式(5),并不能用于信号处理的实践应用,你需要看小波变换(二): 小波基函数,母小波和父小波。
接下来你可能想看: 小波变换(二): 小波基函数,母小波和父小波
参考内容
- 形象易懂讲解算法I-小波变换
- 《The Wavelet Tutorial》小波教程 中文翻译(上)
- python实现小波变换的一个简单例子
- 小波变换和motion信号处理(一)
- 小波变换和motion信号处理:第二篇