当前位置: 主页 > 程序 >

小波变换教程(二)

时间:2017-10-28  作者:haden   点击:
【摘要】简单、快速理解小波变换。

 

 

原文:ROBI POLIKAR. THE ENGINEER'S ULTIMATE GUIDE TO WAVELET ANALYSIS:The Wavelet Tutorial

网址:http://users.rowan.edu/~polikar/WAVELETS/WTtutorial.html

译文转自:http://blog.csdn.net/alihouzi/article/details/45190303

 

傅里叶变换(FT)和短时傅里叶变换(STFT)基础

基本原理

让我们对文章的第一部分做个回顾。

基本上,我们要用小波变换来处理非平稳信号,即那些频率分量随时间变换而变换的信号。上文我已经说过傅立叶变换不适合处理这些非平稳信号,并且举了例子来佐证。再做一个快速的回顾吧,看下面这个例子:假定我们有两个不同的信号,再假设他们都有相同的频谱分量,只有一点不同,其中一个信号含有的四个频率分量在整个信号周期内都存在,另外一个也有相同的四个频率分量,但出现的时间各不相同。两个信号的傅立叶变换将会是一样的,如同在文章的第一部分中所讲到的那个例子。虽然这两个信号是完全不同的,但他们的傅立叶变换却是相同的!这一点很明显告诉我们不能用傅立叶变换来处理非平稳信号。但是这是为什么呢?换句话说,为什么完全不同的两个信号却有同样的傅立叶变换呢?傅立叶变换到底是怎么变换的?

信号处理中的一个重要里程碑:傅立叶变换!!

基于以下两个原因,我不想深究傅立叶变换的细节:

  1. 这个课题对本教程来说太广了。

  2. 它不是我们主要关注的对象。
     

不过,基于以下原因,我将会在文中涉及一些要点:

  1. 为了理解小波变换,你需要傅立叶变换作为背景知识。

  2. 它是到目前为止最重要的信号处理工具,已经被用了很多很多年了。
     

在十九世纪(1822年,不过你并不需要知道这么确切的时间,相信我,绝对比你能想起来的时间还早得多),法国数学家 J.傅立叶,发现所有周期信号都可以表示为无限的周期复指数函数的和。在他发现了这个著名的周期函数性质之后,其想法被推广到第一个非周期函数,然后是周期和非周期的离散信号。在这之后,傅立叶变换就成了在计算机中非常适合的计算工具。1965年,出现了一个叫做快速傅立叶变换的新算法,从此傅立叶变换更加流行了。
(在这里我要感谢博士提供了非常有用的信息)

傅立叶变换将信号分解为具有不同频率的复指数函数,可以用以下两个公式来解释它的变换过程:


Figure 2.1

在上式中,t表示时间,f表示频率,x表示要分析的信号。注意到x(t)表示信号的时域,X(f)表示信号的频域,这个约定用来区别对信号的两种表示。(1)公式叫做 x(t) 的傅立叶变换,(2)公式叫做 X(f) 的傅立叶逆变换,其结果是x(t)。用过傅立叶变换的人对这些已经很熟悉了,但不幸的是,很多人虽然用到了这些公式,却没有理解它的基本原理。现在仔细看公式:信号是一些指数项的累加和,每个项对应特定的频率,然后在整个时域内整合起来(这里的“整个时域”将在下面进行介绍)。公式中的指数项还可以被写成下面这样:

cos(2 * pi * f * t)+j * sin(2 * pi * f * t) ---------- (3)

上面的表达式以一个频率为f的余弦信号作为实部,一个频率为f的正弦信号作为虚部。所以我们实际要做的是用一些复数表达式叠加出原始信号,这些复数表达式包含了频率为f的正弦和余弦分部。然后我们对乘积积分,即我们把乘积中的所有的点叠加起来。如果积分结果(只不过某种无限求和)的值很大,那么我们可以这样说:信号x(t)在频率f处有一个大的频谱分量。信号主要是由频率为f的分量组成。如果积分结果的值较小,就意味着信号中频率为f的分量很少。如果积分结果为0,表明信号中根本不存在频率为f的分量。这里很有意思,让我们看看积分是怎么回事:信号是由一些不同频率的正弦项叠加起来的,如果信号中频率为f的分量幅值较大,那么这个分量就和正弦项重叠,他们的积就会(相对)较大,这表明信号x有一个频率为f的主要分量。

不过,如果信号中不含频率为f的分量,则乘积结果为0,这表明信号没有频率为的分量。如果频率为f的分量不是信号的主要组成部分,则乘积会(相对)较小。这就说明频率为f的分量在信号中的幅值很小,不是信号中的主要组成分量。现在,(1)变换公式中的积分方式已经有些过时了。(1)公式中左边是一个对频率的函数,因此,(1)式的积分是由每一个频率值计算出来的。

注意!!因为积分是从负无穷到正无穷,所以积分在所有时间内有效。这说明了不管频率为f的分量何时出现,都将会影响积分结果。换句话说,不管频率为的分量出现在时刻t1还是t2,都将对积分结果产生相同的影响。这就是为什么傅立叶变换不适合分析随时间变化,频率改变的信号,即非平稳信号。当且仅当频率为f的分量一直存在(对所有的),傅立叶变换得到的结果才有意义。傅立叶变换可以给出某个频率分量存在与否,其结果不取决于信号出现的时间。需要知道的是,一个平稳的信号才优先用傅立叶变换进行处理。第一部分中给出的例子现在已经讲得很明白了,这里我再次给出:看下式:

x(t)=cos(2 * pi * 5 * t)+cos(2 * pi * 10 * t)+cos(2 * pi * 20 * t)+cos(2 * pi * 50 * t)

信号中含有四个频率分量,所有分量在信号的整个周期内都存在。


Figure 2.2

这里是它的傅立叶变换。频率轴被剪切过了,因为理论上来说它是无穷的(仅指连续傅立叶变换,实际上我们在这里做的是离散傅立叶变换,频率轴最少要达到采样频率的两倍处,变换过的信号是对称的。不过现在这些都不重要)。


Figure 2.3

上图中出现了四个尖峰,对应四个不同的频率。

现在,看下图,信号是余弦信号,仍然有四个频率分量,不过这四个分量出现在不同时刻:


Figure 2.4

下面是它的傅立叶变换:


Figure 2.5

在上图中,与你想象的一样,图形与前一个信号的傅立叶变换几乎一样,仔细看,图中也有四个尖峰对应四个频率。我可能把这两张图弄得看起来比较像,但这不并不是有意为之。尖峰中出现的噪声所代表的频率分量在信号中是存在的但是由于它们的幅值很小,不是组成信号的主要分量,我们在图中看到的这些,是由于频率突变产生的。特别需要注意的是,信号中的频域都在是改变的(有一些合适的滤波手段可以将频域中的噪声去掉,但是这些与我们要讲的话题无关,如果你需要有更详细的信息,请给我发邮件)。

现在你应该理解了傅立叶变换的基本概念,什么地方可以用什么地方不可以用。正如你从上面的图中所看到的,傅立叶变换不能很好的区分两个信号。傅立叶变换之后的结果基本一致,因为他们都是由相同的频率分量组成的。因此,对非平稳信号来说,例如具有时变性的信号,傅立叶变换并不是一个合适的工具。

请将这个性质记在心里。不幸的是,许多用傅立叶变换的人并不思考这些。他们假定他们处理的信号都是平稳的,但在实际中却经常不是。当然,如果你对频率分量的发生时间不感兴趣,只关心哪些频率分量存在,傅立叶变换还是一个很合适的分析工具。

那么,我们知道了不能用(哦,实际上可以用,但是却不应该用)傅立叶变换处理非平稳信号,我们应该怎么做呢?

还记得吗,我曾经提过小波变换刚刚应用了年左右,你可能会想,那些研究者们是否十年前才注意这种非平稳信号。

很明显不是。

很明显在发现小波变换之前他们还是做了些什么?

是的,他们确实做了些事情。

他们想出了线性时频表示

短时傅里叶变换

那么,我们怎样把这些时间信息加到频率图中去呢?让我们更进一步的看一下这个问题。

傅立叶变换有什么缺点?它不适用于非平稳信号。让我们想一下这个问题:我们能不能假定部分非平稳信号是稳定的呢?

答案是肯定的。

看上面第三幅图,每个的时间段内,信号都是平稳的。

你可能会问下面这个问题?

怎样确定我们假定信号为平稳的那段时间足够短呢?

如果它确实很短,那么它就太短了,我们用它什么也干不了,实际上,这也很正常。我们要用物理定律来玩这个游戏。

如果我们假定信号为稳定的这个时间段很短,那么我们可以从窄窗中来观察信号,窗口要窄到我们从窗里看到的信号确实是平稳的。

研究者们最终确定的这个数学逼近,作为傅立叶变换的一个修改版本,叫做短时傅立叶变换。

短时傅立叶变换和傅立叶变换只有一个微小的不同点。在短时傅立叶变换中,信号被分为足够小的片段,这些片段的信号都可以看成平稳信号。基于这个原因,就需要一个窗函数。窗的宽度必须和信号片段的宽度相等,这样它的平稳性才有效。

这个窗必须位于信号的最前端,即窗函数必须在时刻存在。让我们假定窗宽度是T秒,在t=0时刻,窗函数与第一个T/2秒重叠(我假定所有的单元都以秒为单位)。然后把窗函数和信号相乘,通过这一步,只有前面T/2秒的信号被选出来了,使用合适的窗口权重(如果窗口为矩形窗,幅值为1,那么乘积与原始信号相等)。然后这个乘积就可以看成另外一个信号,对它再做傅立叶变换。换句话说,就像对其他任何信号做傅立叶变换一样,对这个乘积也做傅立叶变换。

变换的结果是前面T/2秒时间内的傅立叶变换。如果这部分的信号是稳定的,那么变换结果就是对前面T/2秒内信号的真实频率响应。

接下来,把这个窗移到一个新位置(假定信号为t1秒),与信号相乘,然后做变换。重复这个过程,直到信号结束。

接下来这个定义概括了上面讲的所有内容:


Figure 2.6

请仔细看上面的公式,x(t)是信号本身,w(t)是窗函数,*t是向量共轭。如同你在公式中看到的,短时傅立叶变换只不过是对乘了一个窗函数的信号做傅立叶变换。

对不同的 t' 和 f 计算 STFT 系数。

下面这幅图有助于你更好的理解这一点:


Figure 2.7

彩色的类似高斯函数的是窗函数。t=t1’时刻的窗为红色,t=t2’时刻的窗为蓝色,t=t3’ 的窗为绿色。这些都是对不同时刻的不同的傅立叶变换的响应。因此,我们就得到了信号的一个时频表示(TFR)

可能理解这一点最好的方式是举例子。首先,因为我们的变换是对时间和频率的函数(不像傅立叶变换,仅仅是对频率的函数),它是二维的(如果加上幅度则是三维)。以下图所示的非平稳信号为例:


Figure 2.8

在这个信号中,在不同时刻有四个频率分量。0-250ms内信号的频率为300Hz,其余每个250ms的间隔的信号频率分别为200Hz,100Hz和50Hz。很明显,这是一个非平稳信号,让我们看一看它的短时傅立叶变换:


Figure 2.9

正如所期望的,这个二维图像(加上幅度则为三维),x和y轴分别代表时间和频率。忽略图中坐标轴的个数,因为结果被归一化处理了,我们现在对这些不感兴趣。只是查看时频表示图的形状。

首先,图像以频率坐标轴的中线为轴对称。还记得吗,信号的傅立叶变换也是对称的,虽然没有画出来。因为短时傅立叶变换只不过是傅立叶变换的一个加窗版本,那么就不要惊讶于短时傅立叶变换结果也是对称的。对称部分对应负的频率,这时一个很奇怪的概念,也很难理解,幸运的是,它并不重要。这幅图足够说明短时傅立叶变换和傅立叶变换都是对称的。

前面的四个尖峰才是我们要关注的。注意到四个尖峰分别是对四个频率分量的响应。还要注意到,不像傅立叶变换,这四个尖峰在时间轴上位于不同的位置。原始信号的四个频率分量也都出现在不同的时间段内。

现在我们有了信号的一个时频表示。我们不仅知道信号中都有什么频率分量,还知道各自出现的时刻。

这相当伟大,不是吗?

不过,也不能全这么说!

你可能迷惑了,既然短时傅立叶变换给出了信号的时频表示,为什么我们还需要小波变换?上面所举的例子中并没有明显体现出短时傅立叶变换的问题。当然,要举比较典型的例子才能更好的解释概念嘛。

短时傅立叶变换的问题是它的解又会归结到海森堡测不准原理上。这个原理最初是应用在移动粒子的动量和位置的测量上,也可以被用在信号的时频分析上。简单的说,这个原理揭示了我们不能获取信号绝对精确的时频表示。举例来说,我们不知道在某个瞬间哪个频率分量存在。我们知道的是在一个时间段内某个频带的分量存在,这是一个有关分辨率的问题。

短时傅立叶变换中出现的问题,在窗函数宽度上也存在。用正确的术语来说,这个窗函数的宽度作为窗口的支撑。如果窗口宽度很窄,那么就是一个密集支撑。在小波世界里会经常用到这个术语,后文将会看到。

下面说明了整个过程:

还记得傅立叶变换在时域内不存在分辨率的问题,例如我们确切的知道哪个频率分量存在。相应的在时域内也不存在时间分辨率的问题,因为我们知道每一时刻信号的确切值。相反地,傅立叶变换中的时间分辨率和时域中的频率分辨率都为0,因为没有关于它们的信息。因为在傅立叶变换中时我们用的窗口是它的核心窗—exp{jwt}函数,这个函数存在的区间为从负无穷到正无穷,所以傅立叶变换能够给出完美的频率分辨率。但是在短时傅立叶变换中,我们用的窗口长度有限,它仅仅覆盖了信号的一部分,因此导致了频率分辨率较差。我在这里说频率分辨率差,意思是我们不能确切的知道信号中哪些频率分量存在,我们只知道哪些频段的分量存在。

傅立叶变换中用到的内核窗函数允许我们获得一个完美的频率分辨率,因为窗函数本身具有无限宽度。短时傅立叶变换用到的窗宽度长度有限,因此不能获得完美的频率分辨率。你可能会问,我们为什么不像傅立叶变换用无限长的窗口一样,而在短时傅立叶变换中却用有限长的窗口进行分析呢?那么,你浪费了所有的时间,你可能还停留在傅立叶变换那里,思路还没有到达短时傅立叶变换这里来。为使长话短说,我们面临下面这样一个困境:

如果我们有了一个无限长的窗口,然后做傅立叶变换,会得到完美的频率分辨率,但是结果中不包含时间信息。更深一步,为了获得信号的平稳性,我们必须要有一个宽度足够短的窗函数,在这个很短的时间内,信号时平稳的。窗口越短,时间分辨率越高,信号的稳定性越高,但是频率分别率却越来越低。

窄窗=>高时间分辨率,低频率分辨率
宽窗=>高频率分辨率,低时间分辨率

为了更明白的理解这个问题,让我们看一些例子:我现在有四个不同宽度的窗函数,我们将一一用这些窗函数做傅立叶变换,看看到底发生了什么:

我们用到的窗函数是一个简单的高斯函数,如下式:

w(t)=exp(-a * (t^2) / 2);

其中,a代表窗口宽度,t代表时间。接下来这幅图显示了四个用宽度a来决定的不同支撑域的窗函数。请忽略a的值,因为用来计算的时间间隔同时决定了函数。注意四幅图的宽度。上面这个例子中的时间以秒为单位,a=0.001,接下来显示用不同的窗口进行快速傅立叶变换后的图形。


Figure 2.10

首先看第一个最窄的窗口。我们期望的结果是变换结果应具有好的时间分别率和差的频率分辨率。


Figure 2.11

上面的图显示了快速傅立叶变换结果。为了以一个更好的角度看图,我们的图以鸟瞰图显示。注意到四个尖峰在时间上被准确的区分开了,还要注意,在频率轴,每个尖峰都横跨了一个频率带,而不是对应一个确切的频率值。现在让我们看看更宽一点的窗函数,看第三幅图(第二幅图在第一个例子中已经展示过了)。


Figure 2.12

注意到,不像第一幅图,在时间轴上,四个尖峰没有很好的的区分开来。但是在频域内分辨率却明显提高了。现在让我们看看最宽的窗口宽度,看看到底发生了什么:


Figure 2.13

现在任何人都不应该再感到惊奇了,因为本来我们就知道时间分辨率会超级差(我的意思是差到不能再差)。

这些例子应该展示了快速傅立叶变换存在的分辨率问题。每个将要用到快速傅立叶变换的人都会面临这个问题。用什么样的窗函数?用窄窗可以得到较高的时间分辨率,但是较低的频率分辨率,用宽窗仍然也会面临稳定性的问题。问题集中到如何选择窗函数上来了。这个窗要能够在整个分析过程中一直可用。答案当然是只与应用相关:如果原始信号中的频率分量已经被区分出来了,那么我们就可以牺牲一部分频率分辨率来追求更高的时间分辨率。但是如果情况不是这样的话,那么选择一个好的窗函数比选择一个值得投资的股票更难。

现在,你应该理解为什么要提出小波变换了吧?我们后文中将会看到,小波变换在一定程度上解决了这个分辨率的问题。

第二部分结束了。教程的第三部分主要讲连续小波变换。如果到目前为止你还没有碰到什么麻烦,上面讲的东西你都能理解,那么你可以开始这个理解小波变换基本理论的终极挑战了。

 
顶一下
(8)
100%
踩一下
(0)
0%
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
验证码: 点击我更换图片

推荐内容