赞
踩
简 介: 本学习的课程中我们学习了八种常见的变换方式,除了这八种常见的变换方式,在工程上也有一些实际应用的变换方式,本文将从对于频谱的分析入手对于小波变换的理论和应用进行一定的介绍。
关键词
: 小波变换,频谱
傅里叶变换常用于分析信号的频谱,对于平稳的信号来说,傅里叶变换会非常清晰地显示出信号的频率。
以 y ( t ) = sin ( 30 π t ) + sin ( 40 π t ) y\left( t \right) = \sin \left( {30\pi t} \right) + \sin \left( {40\pi t} \right) y(t)=sin(30πt)+sin(40πt)为例,通过matlab能够容易的画出时域和频域上的图像:
▲ 图1.1 信号y(t)=sin(30πt)+sin(40πt)的时域和频域图像
从图像中我们可以清楚地看到,原信号就是由两个频率的三角函数组成。这里FT显示了其快速便捷的特点。
但是如果信号变为非平稳的信号(可能存在变频),这时FT的效果就并不能够令人满意,以
与
两个信号为例,这两个信号都不止存在一种频率,而且也并不是由无穷的三角函数变换而成,我们简单的将两个信号频率的出现次序进行调换,在matlab上得到如下结果:
▲ 图1.2 信号y1(t)的时域和频域图像
▲ 图1.3 信号y2(t)的时域和频域图像
可以发现两个信号的频谱近乎完全一致,但是两个信号之间却有着很大的差异。本质在于FT只能够对于这段信号上总体包含哪些频率的波形进行分析,但是对于这些波形出现的时刻却没有加以记录,从而出现了这种时域上相差极大,但是频谱近乎完全一致的情况。
而在自然界中的情况则会更加复杂,频率平稳的波形大多存在于人为制造,大多数的信号都是非平稳频率的波形,对于这些波形,我们不仅希望知道包含哪种频率的分量,也希望能够记录下信号频率随时间变化的关系。这种对于信号处理的需求最终催生了小波变换的产生。
一个比较简单的想法就是人为的在傅里叶变换上补充一个时间维度的量来记录时域信息。借鉴FFT对于信号处理的步骤,我们也可以对信号进行周期截断,并对于每个区间内的信号进行FT变换,就能够得到一部分的时域特征。
对于之前的 y 1 ( t ) y_1 \left( t \right) y1(t)信号进行以 t 0 = 1.3 s t_0 = 1.3s t0=1.3s的截断并对于每一段进行FT变换:
▲ 图1.4 信号y1(t)进行T0=1.3s截断的时域和频域图像
从matlab得到的频谱来看可以分析得到:在0<t≤1.3时,频谱主要由一种频率构成,当1.3<t≤2.6时可以发现频谱上出现了两组近乎峰值相同的峰,可以认定这一短时间内是两种频率混合主导,其他时间段也可以依次分析得到。
然而这又导致了一个问题:即如何较好的选择截断周期的时间。如果时间取得较小,那么这一段时间内的时域信息就会很少,经过FT变换之后会导致频域的分辨率过低。同样的,如果时间取得较大,时域里的信息包含的很多,又不能够达到区分时域的目的。
总而言之,如果使用STFT,则需要对于信号本身有一定的认识,在什么区域出现什么频率要现有一定的判断,然后再通过截断分别做FT的方式来区分时域信息。即没有一个统一的标准能够对于所有信号做统一处理,这是STFT的劣势所在。
小波可以被简单的描述为一种函数,这种函数在有限的时间范围内变化,且平均值为0。从而意味着小波至少具有以下两个性质:
1. 仅持续有限的时间,有突变的频率和振幅。
2. 在有限时间范围内平均值为0。
从而我们许多的常见函数都可以被认为是小波,常见的一些窗口信号都可以被认为是小波。
ϕ ( t ) = e i ω 0 t ⋅ e − t 2 2 \phi \left( t \right) = e^{i\omega _0 t} \cdot e^{ - {{t_2 } \over 2}} ϕ(t)=eiω0t⋅e−2t2
▲ 图2.1 Morlet小波图像
简单来说,Morlet小波是高斯包络下的单频率正弦函数
其他常见的小波还有Daubechies 小波 Mexican Hat小波 Meyer小波等,在这里不一一介绍。所有的小波都具有波形集中的特点,即在某一个时域内集中了波形的绝大部分,其他时域波形基本为0的特点。这一个特点也为之后的小波变换奠定了基础。
如果认为FT是将sin(nωt)与cos(nωt)作为一组基底,那么小波变化就是将小波作为一组基底,由于小波变换的初衷就是为了体现时域信息,故而在小波变换中相比于FT我们增加了一个变量,来展现时域上的特点。
小波变换的表达式如下:
W
T
(
a
,
τ
)
=
1
a
∫
−
∞
∞
f
(
t
)
⋅
ϕ
(
t
−
τ
a
)
d
t
WT\left( {a,\tau } \right) = {1 \over {\sqrt a }}\int_{ - \infty }^\infty {f\left( t \right) \cdot \phi \left( {{{t - \tau } \over a}} \right)dt}
WT(a,τ)=a
1∫−∞∞f(t)⋅ϕ(at−τ)dt
其中:a称为尺度,用来描述小波函数的伸缩,τ称为平移量,用来描述小波函数的平移尺度。尺度的倒数与频率成正比,平移量τ就对应了时间。
首先我们不妨先固定一个尺度a(频率),将小波信号经过平移后与原函数进行卷积,我们就可以得到在时域的什么地点存在着与该频率相符的谐波。然后再将尺度a遍历一遍就可以知道在每个位置都包含哪些频率的成分谐波。
类似的我们使用matlab中的小波变换功能对于文章【1.1】部分提到的问题进行操作:
在小波变换的过程中我们选择带宽参数为3,中心频率也为3的复Morlet小波作为基波,经过变换得到了如下的图像:
▲ 图2.2 y(t)经过cmor3-3小波变换的图像
从图中我们可以清楚地看到四条直线,在0-0.2s频率为50的谐波最突出,0.2s-0.5s频率为100的谐波最突出,0.5s-0.8s频率为200的谐波最突出,0.8s-1s频率为150的谐波最突出。以上我们完美的解决了时域信息的问题,得到了时域和频域的双重信息。
即使我们将一些谐波在时域上进行混叠:
(注:时域重叠的部分谐波累加)
▲ 图2.3 y(t)经过cmor3-3小波变换图像
也可以非常清晰的观察到,最终的得到的结果与设定的原函数时域完全符合。由此可见小波变换的功能之强大。
我们知道每个小波都集中在某一个时域内,也代表着仅有某个频率才能够与这个小波相匹配。
如果我们再简化一些,我们可以将小波视为一个时域和频域的双重滤波器,只有在时域和频域上都满足一定要求的波形才能够通过滤波器显现出来。所以我们将频率遍历到波形的所有频率,时域遍历到波形的全部时间就可以得到想要得到的信息。至于滤波器的选择,则可以根据不同的波形特点选择不同的小波进行操作即可。
将具有不连续点的周期函数(如矩形脉冲)进行傅立叶级数展开后,选取有限项进行合成。当选取的项数越多,在所合成的波形中出现的峰起越靠近原信号的不连续点。当选取的项数很大时,该峰起值趋于一个常数,大约等于总跳变值的9%。在工程上通常认为小于0.1%的浮动误差才可以被忽略,Gibbs现象产生的9%的跳变属于不可忽略的较大误差,如何消除Gibbs现象也成为了工程上需要解决的问题。
有学者通过对于产生Gibbs现象的波形先进行自适应滤波,再对与滤波进行基于α-Trous算法的二进小波变换。较好的消除了Gibbs现象。
▲ 图3.1 小波变换消除Gibbs现象
图像压缩的实质就是减少或者以尽量少的比特信息来表示原始图像。经过小波变换后,将代编码的图像划分为空间分辨率不同,频率特性不同和方向特性不同的三种子带信号。
由于小波变换能够分辨出出现频率的多少,故可以通过对于出现频率少的系数采用粗量化方式,对于出现频率多的采用细量化方式。由于人眼对于对角线方向的高频部分不敏感,这一部分可以直接进行舍弃。而且由于小波变换是可逆的,所以重构图像之后可以完全恢复为原图像。
▲ 图3.2 小波变换压缩图片流程
▲ 图3.3 小波变换对于图片的压缩效果
在分析语音频谱时通常会采用短时傅里叶变换和小波变换,短时傅里叶变换得到的三维频谱有固定的分辨率,而小波变换得到的三维语谱图在低频部分有较高的分辨率而在高频部分有较高的时间分辨率。对于分析语音信号是十分有利的。而且小波变换能够比较准确的区分出单元音,双元音,辅音等等汉语的语音特征,为分析语音提供了工具支撑。
由于小波变换既能够提取频域信息,也能够提取时域信息,成为了分析信号的一种几位强大的工具,小波变换也的确应用在了各个领域,为分析信号提供了强大的工具,并发挥了重要的作用。希望将来能够看到更多有关于小波变换的应用能够为科技的发展带来巨大的进步。
PS:有一些之前的想法想跟老师分享:
在采样过程中如果由于采样的频率限制无法避免频率混叠现象的时候,通常采用的是抗混叠滤波器的做法,即直接去除一部分的频谱信息。有没有可能通过一些操作尽可能多的保留频谱的性质还能避免频率混叠现象呢?
利用性质:
通过取恰当的a就能够让频谱收缩到原来的1/a倍。这时即使仍然存在频率混叠现象,其混叠程度也会比之前小得多。所以问题就在于如何将f(t)变换为f(at)。这一点在计算机上处理离散信号时并不困难,实际上我们也在作业中做过类似的matlab实验题(对音频进行操作)。但是如果要设计一个系统想要完成f(t)变换为f(at),从系统函数的角度来看近乎是不可能的,由于系统函数是固定的,意味着:
H
(
s
)
=
L
[
f
(
a
t
)
]
L
[
f
(
t
)
]
=
1
a
F
(
s
a
)
F
(
s
)
H\left( s \right) = {{L\left[ {f\left( {at} \right)} \right]} \over {L\left[ {f\left( t \right)} \right]}} = {{{1 \over a}F\left( {{s \over a}} \right)} \over {F\left( s \right)}}
H(s)=L[f(t)]L[f(at)]=F(s)a1F(as)
为不变的函数,而比较显然的是H(s)与F(s)是相关的,从而违反了系统函数不变的特性,所以这个转换没有办法对于所有的f(t)适用。所以不存在一个系统能够完成这种转换。这种想法也因此作罢没能写成论文。不过觉得是一个比较有意思的思考,希望可以提供给老师作为一个小点子可以放进PPT中,当成一个例子介绍给同学也不错。(虽然我也不知道分析的对不对)
● 相关图表链接:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。