小波变换教程一、序言欢迎来到这个小波变换的入门教程。小波变换是一个相对较新的概念(大概十年的样子),但是有关于它的文章和书籍却不少。这其中大部分都是由搞数学的人写给其他搞数学的人看的,不过,仍然有大部分搞数学的家伙不知道其他同行们讨论的是什么(我的一个数学教授就承认过)。换言之,大多数介绍小波变换的文献对那些小波新手们来说用处不大(仅仅为个人观点)。当我刚开始学习小波变换的时候,曾经为了弄明白这个神奇的领域到底说的是什么困扰了好多天,因为在这个领域的入门书籍少之又少。为此我决定为那些小波新手们写这个入门级的教程。我自己当然也是一个新手,也有很多理论性的细节没有弄清楚。不过,考虑到其工程应用性,我觉得没有必要弄清楚所有的理论细节。在这篇教程中,我将试图给出一些小波理论的基本原理。我不会给出这些原理和相关公式的证明,因为我假定预期的读者在读这个教程时并不需要知道这些。不过,感兴趣的读者可以直接去索引(所列的书籍)中获取更为深入的信息。在这篇文档中,我假定你没有任何相关知识背景。如果你有,请忽略以下的信息,因为都是一些很琐碎的东西。如果你发现教程中有任何不一致或错误的信息,请联系我。我将乐于看到关于教程的任何评论。二、变换什么首先,我们为什么需要(对信号做)变换,到底什么是变换?原始信号中有一些信息是很难获取的,为了获得更多的信息,我们就需要对原始信号进行数学变换。在接下来的教程中,我将时域内的信号视为原始信号,经过数学变换后的信号视为处理信号。可用的变换有很多种,其中傅立叶变换可能是最受欢迎的一种。实际中很多原始信号都是时域内的信号,也就是说不管信号是如何测得的,它总是一个以时间为变量的函数。换言之,当我们画信号图的时候,横轴代表时间(独立变量),纵轴代表信号幅度(非独立变量)。当我们画信号的时域图时,我们得到了信号的时幅表示。对大多数信号处理应用来说,这种表示经常不是最好的表示。在很多时候,大量特殊的信息是隐藏在信号的频率分量中的。信号的频谱图表示的一般是信号中的频率分量。频谱图展示了原始信号中存在哪些频率分量。直觉上,我们都知道频率意味着某种事物的变化速率。如果某种东西(用正确的技术术语来说是一个数学或物理变量)变化的很快,我们说它的频率高,如果它变换的不快,我们就说它的频率低。如果这个变量一直保持不变,我们说它的频率为0,或者说没有频率。举例来说,日报的频率就比月刊高(因为它出版快)。频率用周期/秒,或者用一个更广泛的说法,赫兹来衡量。举例来说,我们日常生活中用的电的频率是60Hz(世界上的其他国家是50Hz)。这意味着如果我们想要画一条电流曲线的话,我们将会看到的是1秒内出现的50个重复的正弦波。现在,观看以下这些图。第一幅图中正弦信号的频率是3Hz,第二幅是10Hz,第三幅则是50Hz。那么我们怎样测量频率呢?或者我们怎样找到一个信号中所含的频率分量呢?答案是傅立叶变换(FT)。如果对时域内的信号做傅立叶变换,就会得到信号的幅频表示。也就是说,我们现在画图的话,横轴就是频率,纵轴则是信号的幅度。这种图告诉我们信号中存在哪些频率分量。频率轴从0开始直到正无穷。每一个频率都对应着一个幅度。举例来说,如果我们对房间里正在使用的电流信号做傅立叶变换,频谱图中将会在50Hz处出现一个尖峰,其它频率对应的幅值则为0,因为电流信号中只包含了50Hz的频率分量。当然,(实际应用中)没有一个信号的傅立叶变换是这么简单的。对大多数应用来说,信号中包含的频率分量都大于一个。下图展示了50Hz信号的傅立叶变换。这里有一点需要注意:图1.4给出了两幅图,第二幅显示的其实是第一幅图的前半部分,这是因为实数的频谱图是左右对称的(这里你不理解也没关系)。图1.4中上方的图展示了这一点。不过,因为对称部分的后一半只不过是前一半的镜像,它并没有提供更多的信息,因此,这部分经常不画在图里。下文中出现的大部分频谱图,我只画前半部分。三、为什么我们需要频率信息(1111)?通常,我们可以容易的从频域中看到一些在时域中看不到的信息。让我们举一个生物信号的例子。假如我们正在观看一个心电图,心脏病专家一般都熟知一些典型的健康心电图。如果某个心电图与一般的心电图有较大的偏差,这往往是发病的征兆。在心电图的时域信号中一般很难找到这些病情。心脏病专家们一般用记录在磁带上的时域心电图来分析心电信号。最近,新的心电记录仪/分析仪还可以提供心电图的频域信息,通过这些信息,他们就可以确定病症是否存在。对频域图进行分析能使他们更容易的诊断病情。上面只是一个说明了为何频率幅值有用的简单例子。当前,傅立叶变换已经被用于不同的领域,这些领域包括工程学的各个分支。虽然傅立叶变换是最流行的数学变换,但它并不是唯一的。工程师和数学家们还经常会用到很多其他的变换。如希尔伯特变换、短时傅立叶变换(后文对此有详细阐述)、魏格纳分布和雷登变换,当然还有我们要讲的特征变换——小波变换。这些变换只不过是工程师和数学家们所用到的变换中的一小部分。每一种变换都有自己的应用领域,也都各有优缺点,小波变换也不例外。为了更好的理解小波变换的必要性,让我们更详细的探讨一下傅立叶变换。傅立叶变换是一种可逆变换,即它允许原始信号和变换过的信号之间互相转换。不过,在任意时刻只有一种信息是可用的,也就是说,在傅立叶变换后的频域中不包含时间信息,逆变换后的时域中不包含时间信息。说到这里,脑袋里很自然的就会提出这个问题,有没有一种变换可以同时提供时间和频率信息呢?我们马上就会知道,答案是具体问题具体分析。回想一下,傅立叶变换给出了信号中包含的频率信息,即它可以告诉我们原始信号中不同频率的信号到底有多少,但是并没有告诉我们某个频率信号是在何时出现的。在处理平稳信号时,我们不需要知道这些。让我们进一步探讨一下平稳这个概念,因为它在信号分析中具有重要意义。如果某个信号中的频率分量一直保持不变,则我们叫这类信号为平稳信号。换句话说,静态信号中的频率分量一直保持不变。这种情况下,就不需要知道频率分量是什么时候出现的,因为所有的频率分量出现在信号的每一刻!!!以下面这个信号为例:x(t)=cos(2*pi*10*t)+cos(2*pi*25*t)+cos(2*pi*50*t)+cos(2*pi*100*t)这是一个平稳信号,因为频率为10,25,50和100Hz的频率分量出现在整个时域内。如下图所示:图1.2下图为它的傅立叶变换:图1.3图1.3中的上图是图1.2的频谱图,下图为上图的放大,仅仅显示了我们感兴趣部分的频率信息。四个频谱分量分别对应着10,25,50和100Hz。与图1.3不同,下图所示的信号就是一个非平稳的信号。图1.4所示的信号,它的频率一直在改变,这种信号被称为变频信号,是一种非平稳信号。图1.4四、为什么我们需要频率信息(2222)?让我们再看一个例子,图1.5显示了一个包含四个频率分量的信号,它们分别在不同时刻出现,因此这是一个非平稳信号。0-300ms时是一个100Hz的正弦波,300-600ms时则是一个50Hz的正弦波,600-800ms时是一个25Hz的正弦波,最后的200ms内是一个10Hz正弦波。图1.5下图是它的傅立叶变换:图1.6不要担心图中出现那些毛刺,那是由于信号中频率的突变引起的,在这篇文章里这些没有意义。注意到那些高频分量的幅度比低频分量大,这是因为高频信号比低频信号持续时间更长一些(分别为300ms和200ms)(信号中各频率分量的确切值并不重要)。除了那些毛刺,图中的一切看起来都是正常的,有四个尖峰,对应原始信号中的四个频率分量,应该是正确的…错!当然了,也不完全错,但起码不完全对。对图1.2,考虑以下问题:各个频率分量都是在什么时刻出现的?答案是在所有时刻!还记得平稳信号吗?所有频率分量在信号的整个周期内一直存在,10Hz的信号一直存在,50Hz的信号亦然,100Hz的信号亦然。现在,让我们来考虑一下图1.4或1.5展示的非平稳信号。各个频率分量都是在什么时刻出现的?对于图1.6来说,我们知道,在第一个时间段内出现的是最高频率的分量,在最后一个时间段内出现的是最低频率的分量。图1.5中信号的频率分量一直在变,因此,对这些信号来说,各个频率分量并没有出现在任意时刻。现在,比较一下图1.3和1.6,二者的相似之处是显而易见的,在图中都显示了四个几乎一样的频率分量,即10,25,50和100Hz。除了1.6中的那些毛刺和两幅图中各频率分量的幅值(这些幅值可以做归一化处理),两幅频谱图几乎是一致的,虽然相应的时域信号之间差别很大。两个信号都包含了相同的频率分量,但是前者中的各频率分量出现在信号的整个周期内,而后者的频率分量则在不同的时间段内出现。那么,是什么导致两个完全不同的原始信号经傅立叶变换后的波形这么相像呢?回想一下,傅立叶变换仅仅给出了信号的频谱分量,但是却没有给出这些频谱分量的出现时间。因此,对于非平稳信号来说,傅立叶变换是不合适的,但有一个例外:只有当我们仅仅关心信号中是否包含某个频率分量而不关心它出现的时间的时候,傅立叶变换才可以用于处理非平稳信号。但是,如果这些信息是我们需要的(假设),如果我们想知道频率分量出现的确切时间,傅立叶变换就不是合适的选择了。对实际应用来说,很难把两者的区分开来,因为现实中平稳的和非平稳的信号都很多。举例来说,几乎所有的生物信号都是非平稳的,这其中著名的就是心电图(ECG)、脑电图(EEG)和肌电图(EMG)。请注意,傅立叶变换仅仅给出了信号的频率分量信息,仅此而已,无它。当需要对频谱分量进行时间定位时,则需要一个可以得到信号的时频表示的数学变换。五、终极解决方案:小波变换小波变换是这样一种变换:它提供了信号的时频表示(还有一些变换可以提供这些信息,如短时傅立叶变化,魏格纳分布等等)。在任一刻出现的特殊的频谱分量都有特殊的意义。这种情况下,如果知道了这些特殊的频谱分量出现的时间会比较有益。举例来说,在脑电图中,一个事件相关电位的潜伏期是主要关注点(事件相关电位是指大脑对某一特定刺激的反应,例如闪灯,这种反应的潜伏期是从刺激的开始到反应发生这段时间)。小波变换可以同时提供时间和频率信息,因此给出了信号的一种时频表示。但是小波变换到底是如何变换的仍然是一个不同的有趣故事,需要在理解了短时傅立叶变换(STFT)之后再解释。小波变换是被用来替代短时傅立叶变换(STFT)的。我们将在后面详细阐述STFT。现在可以说,一些在STFT中遇到的有关分辨率的问题,可以用小波变换解决。为了长话短说,我们略过一些时域信号的高通和低通滤波处理,这些滤波器用来滤除信号中的低频和高频部分分量。这个过程是重复进行的,每一刻都可以从信号中滤除一些频率分量。这里解释一下滤波过程是如何工作的:假定我们有一个信号,其中最高频分量为1000Hz。第一步,我们通过高通和低通滤波器把信号分成两部分(滤波器必须满足某些特定的条件,即允许条件),结果产生了同一信号的两个不同版本,0-500Hz的信号(低通)和500-1000Hz的信号(高通)。然后,我们可以拿任意一部分(通常是低频部分)或者二者来做相同的处理。这个过程叫做分解。假设我们拿低频部分做了处理,现在我们就有了3列数据,分别为0-250Hz,250-500Hz和500-1000Hz。然后再对低通滤波过的信号做高通和低通滤波处理,现在我们就有了4列数据,分别为0-125Hz,125-250Hz,250-500Hz和500-1000Hz。我们持续进行这个处理过程,直到将信号分解到一个预定义的级别。这样我们就有了一系列信号,这些信号实际上表示相同的信号,但是每一个序列都有不同的频带。我们知道哪些信号对应哪个频段,如果我们将这些信号放在一起画出三维图,一个轴表示时间,频率在另外一个轴上,幅度在第三个轴上。这幅图会告诉我们在某时刻出现的是什么频率的信号(这里有一个问题,叫做“不确定性原理”,即我们不能确切的知道哪个频率出现在哪个时间点上,我们仅仅知道那个频段出现在哪个时间段内,后文中将有更多关于此的介绍)。不过,我仍然想用一个简明扼要