从傅里叶变换到小波变换,并不是一个完全抽象的东西,可以讲得很形象。小波变换有着明确的物理意义,如果我们从它的提出时所面对的问题看起,可以整理出非常清晰的思路。
下面我就按照傅里叶-->短时傅里叶变换-->小波变换的顺序,讲一下为什么会出现小波这个东西、小波究竟是怎样的思路。(反正题主要求的是通俗形象,没说简短,希望不会太长不看。。)
一、傅里叶变换
关于傅里叶变换的基本概念在此我就不再赘述了,默认大家现在正处在理解了傅里叶但还没理解小波的道路上。(在第三节小波变换的地方我会再形象地讲一下傅里叶变换)
下面我们主要将傅里叶变换的不足。即我们知道傅里叶变化可以分析信号的频谱,那么为什么还要提出小波变换?答案就是方沁园所说的,“对非平稳过程,傅里叶变换有局限性”。看如下一个简单的信号:<img src="https://i-blog.csdnimg.cn/blog_migrate/56416c4fdb58c1f0cc26a532d96e113a.png" data-rawwidth="597" data-rawheight="284" class="origin_image zh-lightbox-thumb" width="597" data-original="https://pic1.zhimg.com/da6c4b8ce1672d4997000eb08444824c_r.jpg">做完FFT(快速傅里叶变换)后,可以在频谱上看到清晰的四条线,信号包含四个频率成分。做完FFT(快速傅里叶变换)后,可以在频谱上看到清晰的四条线,信号包含四个频率成分。
一切没有问题。但是,如果是频率随着时间变化的非平稳信号呢?
<img src="https://i-blog.csdnimg.cn/blog_migrate/0884d1747873ce997ddc63266d4c538b.png" data-rawwidth="690" data-rawheight="612" class="origin_image zh-lightbox-thumb" width="690" data-original="https://pic1.zhimg.com/def600cea95fa10e3872e88dc8059d6c_r.jpg">
如上图,最上边的是频率始终不变的平稳信号。而下边两个则是频率随着时间改变的非平稳信号,它们同样包含和最上信号相同频率的四个成分。
做FFT后,我们发现这三个时域上有巨大差异的信号,频谱(幅值谱)却非常一致。尤其是下边两个非平稳信号,我们从频谱上无法区分它们,因为它们包含的四个频率的信号的成分确实是一样的,只是出现的先后顺序不同。
可见,傅里叶变换处理非平稳信号有天生缺陷。它只能获取一段信号总体上包含哪些频率的成分,但是对各成分出现的时刻并无所知。因此时域相差很大的两个信号,可能频谱图一样。
然而平稳信号大多是人为制造出来的,自然界的大量信号几乎都是非平稳的,所以在比如生物医学信号分析等领域的论文中,基本看不到单纯傅里叶变换这样naive的方法。
<img src="https://i-blog.csdnimg.cn/blog_migrate/129853d7a4740e6ad781f89e8bf66a32.png" data-rawwidth="429" data-rawheight="287" class="origin_image zh-lightbox-thumb" width="429" data-original="https://pic3.zhimg.com/e71310fc73e7beba589b76264564abee_r.jpg">上图所示的是一个正常人的事件相关电位。对于这样的非平稳信号,只知道包含哪些频率成分是不够的,我们还想知道上图所示的是一个正常人的事件相关电位。对于这样的非平稳信号,只知道包含哪些频率成分是不够的,我们还想知道各个成分出现的时间。知道信号频率随时间变化的情况,各个时刻的瞬时频率及其幅值——这也就是时频分析。
二、短时傅里叶变换(Short-time Fourier Transform, STFT)
一个简单可行的方法就是——加窗。我又要套用方沁园同学的描述了,“把整个时域过程分解成无数个等长的小过程,每个小过程近似平稳,再傅里叶变换,就知道在哪个时间点上出现了什么频率了。”这就是短时傅里叶变换。
看图:
<img src="https://i-blog.csdnimg.cn/blog_migrate/99f5cba6b84cf3a99c89f638a569ca92.png" data-rawwidth="844" data-rawheight="449" class="origin_image zh-lightbox-thumb" width="844" data-original="https://pic3.zhimg.com/7f4ac3c30283e657406d6661300478a2_r.jpg">时域上分成一段一段做FFT,不就知道频率成分随着时间的变化情况了吗!时域上分成一段一段做FFT,不就知道频率成分随着时间的变化情况了吗!
用这样的方法,可以得到一个信号的时频图了:
<img src="https://i-blog.csdnimg.cn/blog_migrate/cc38b58a65373748df5a3c12baa034af.png" data-rawwidth="649" data-rawheight="492" class="origin_image zh-lightbox-thumb" width="649" data-original="https://pic1.zhimg.com/fec492fbcf67ddde4cb6017b62497bf4_r.jpg"> ——此图像来源于“THE WAVELET TUTORIAL”——此图像来源于“THE WAVELET TUTORIAL”
图上既能看到10Hz, 25 Hz, 50 Hz, 100 Hz四个频域成分,还能看到出现的时间。两排峰是对称的,所以大家只用看一排就行了。
是不是棒棒的?时频分析结果到手。但是STFT依然有缺陷。
使用STFT存在一个问题,我们应该用多宽的窗函数?
窗太宽太窄都有问题:<img src="https://i-blog.csdnimg.cn/blog_migrate/1ec469fa5f767612897f7a295928dfa7.png" data-rawwidth="627" data-rawheight="312" class="origin_image zh-lightbox-thumb" width="627" data-original="https://pic4.zhimg.com/479dd3f809656bf154456868b65e73b3_r.jpg">
<img src="https://i-blog.csdnimg.cn/blog_migrate/eee4f5f37eab8b176b53cb8031a87397.png" data-rawwidth="609" data-rawheight="350" class="origin_image zh-lightbox-thumb" width="609" data-original="https://pic3.zhimg.com/9da6c3e9704c32bfb7b53b995532878e_r.jpg">窗太窄,窗内的信号太短,会导致频率分析不够精准,频率分辨率差。窗太宽,时域上又不够精细,时间分辨率低。窗太窄,窗内的信号太短,会导致频率分析不够精准,频率分辨率差。窗太宽,时域上又不够精细,时间分辨率低。
(这里插一句,这个道理可以用海森堡不确定性原理来解释。类似于我们不能同时获取一个粒子的动量和位置,我们也不能同时获取信号绝对精准的时刻和频率。这也是一对不可兼得的矛盾体。我们不知道在某个瞬间哪个频率分量存在,我们知道的只能是在一个时间段内某个频带的分量存在。 所以绝对意义的瞬时频率是不存在的。)
看看实例效果吧:<img src="https://i-blog.csdnimg.cn/blog_migrate/36cbb085c6f02165b137935ff7db50de.png" data-rawwidth="608" data-rawheight="292" class="origin_image zh-lightbox-thumb" width="608" data-original="https://pic1.zhimg.com/565a3c57d43c8f2f78a5b1dc0de66e34_r.jpg">
<img src="https://i-blog.csdnimg.cn/blog_migrate/bc9d77960790f8505646f3cc7a93869a.png" data-rawwidth="604" data-rawheight="295" class="origin_image zh-lightbox-thumb" width="604" data-original="https://pic3.zhimg.com/c7d2d230a8c4766569c5a77fac901eea_r.jpg"><img src="https://i-blog.csdnimg.cn/blog_migrate/f92d3677c9958113a9b51cc47ec1a54d.png" data-rawwidth="614" data-rawheight="281" class="origin_image zh-lightbox-thumb" width="614" data-original="https://pic2.zhimg.com/39822d6589c4486a0a91a148e0a3e571_r.jpg"> ——此图像来源于“THE WAVELET TUTORIAL”
——此图像来源于“THE WAVELET TUTORIAL”
上图对同一个信号(4个频率成分)采用不同宽度的窗做STFT,结果如右图。用窄窗,时频图在时间轴上分辨率很高,几个峰基本成矩形,而用宽窗则变成了绵延的矮山。但是频率轴上,窄窗明显不如下边两个宽窗精确。
所以窄窗口时间分辨率高、频率分辨率低,宽窗口时间分辨率低、频率分辨率高。对于时变的非稳态信号,高频适合小窗口,低频适合大窗口。然而STFT的窗口是固定的,在一次STFT中宽度不会变化,所以STFT还是无法满足非稳态信号变化的频率的需求。
三、小波变换
那么你可能会想到,让窗口大小变起来,多做几次STFT不就可以了吗?!没错,小波变换就有着这样的思路。
但事实上小波并不是这么做的(关于这一点,方沁园同学的表述“小波变换就是根据算法,加不等长的窗,对每一小部分进行傅里叶变换”就不准确了。小波变换并没有采用窗的思想,更没有做傅里叶变换。)
至于为什么不采用可变窗的STFT呢,我认为是因为这样做冗余会太严重,STFT做不到正交化,这也是它的一大缺陷。
于是小波变换的出发点和STFT还是不同的。STFT是给信号加窗,分段做FFT;而小波直接把傅里叶变换的基给换了——将无限长的三角函数基换成了有限长的会衰减的小波基。这样不仅能够获取频率,还可以定位到时间了~
转载于:https://my.oschina.net/u/2963604/blog/2962840