罗海涛
(广东外语外贸大学信息学院,广州 510420)
MATLAB 环境下小波分析应用
罗海涛
(广东外语外贸大学信息学院,广州 510420)
MATLAB作为功能强大的数学软件,在很多领域有着成功的应用;在数字信号处理、语音信号处理方面,其大量的函数极大地简化编程、计算,提高了效率;小波分析是近30多年来发展起来的新兴学科,是傅立叶变换突破性的发展,为很多领域和工程应用提供全新的工具;在MATLAB环境下,集成了小波分析工具箱,可以很方便地进行小波分析、计算、分解信号;同时,还可以根据需要,把新构造的小波添加到工具箱。
MATLAB是MATrix LABoratory的缩写,可直译为矩阵实验室,是美国MathWorks公司出品的数学软件,是一个用于数值计算、数据分析、数据可视化等的交互式环境,目前常用的版本都包括MATLAB和Simulink两大部分。其中Simulink是一个软件包,提供了一个可视化开发环境,常用于系统模拟、嵌入式系统开发等方面。
正如其名称(矩阵实验室)所显示的,MATLAB的基本数据单位是矩阵,包括向量,MATLAB可以进行矩阵和向量运算、绘制函数图形和数据图形、实现算法、创建用户界面、连接运行其他编程语言的程序等。MATLAB具有强大的数据处理、图形绘制、图像处理能力,其具体应用领域包括工程计算、控制设计、数字信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。
本文采用MATLAB的小波分析工具来分析语音信号,对语音信号进行分解并获取相关的特征,用于进一步的分析和识别。
不同于传统的建立在Fourier变换基础上的信号分析,小波分析是近30多年来发展起来的新兴学科,是傅立叶变换突破性的发展,为很多领域和工程应用提供了全新的工具。小波分析是在特定的函数空间,用一种方法构造一种称为小波的基函数,即小波基,对给定的函数或者信号进行展开与逼近,进行“局部”的分析,因而小波变换有“数学显微镜”之称,这个是Fou⁃rier变换不能够做到的。小波分析还解决了Fourier变换不能解决的许多困难问题,它是函数信号分析发展史上里程碑式的进展。
其思想类似于多采样率的滤波器组,对一个函数或者信号进行多次滤波分解,得到小波分解结果,而这些结果体现了不同频率滤波器的滤波输出。
本文在MATLAB环境下,采用离散小波进行信号分析,通过小波分解,从原始信号中发现和提取有用信息。
在MATLAB环境下,集成了小波工具箱,工具箱中已经有一些小波和小波包,可以直接用来进行信号分解。
在命令窗口依次输入如下几条指令:
前面两条指令是把系统中的信号“noisbump”载入,该信号实际上包含了噪声信号,第3条指令用小波工具箱中的“db2”小波对信号进行分解,最后一条指令画出图形,得到图1所示的图形。
图1 信号“noisbump”的小波分解结果
左边的图形实际上是小波包树,共3级,也就是上述指令对信号进行了3级小波分解,右边的图形是根节点(节点0)的数据图形,也就是原始信号波形,可以看出其中包含了噪声。图中分别点击(1)节点和(2)节点,得到如图2和图3所示图形。
图2 节点(1)数据波形
图3 节点(2)数据波形
其中图2是把原始信号高频噪声过滤后得到的数据波形,称之为离散逼近,相当于把原始含噪信号波形“磨光”后的波形。图3则是把原始信号低频部分过滤后得到的数据波形,称之为离散细节,相当于叠加在原始信号中的噪声。如果点击(3)节点,得到与图2类似的波形,相当于对图2的离散逼近图形进一步“打磨”,使它变得更加“光滑”,相当于图2数据波形的离散逼近。点击(4)节点,则相当于把图2的离散逼近波形中的高频分量进一步过滤出来,或者可以理解为把其中“噪声”进一步过滤,相当于图2数据波形的离散细节。依此类推,节点(5)波形相当于节点(2)数据波形的离散逼近,是节点(2)数据波形“打磨”的结果;节点(6)波形相当于节点(2)数据波形的离散细节,相当于节点(2)数据波形中的高频分量,或者是其中的“噪声”。其余各级也是这样。
从上述分析可以看出,小波实际上是对原始信号进行滤波分解,对每一个节点的分解都分成低频和高频部分,低频部分称为离散逼近,高频部分称为离散细节,这样的分解可以无限地进行下去。可见,小波分解把原始信号和噪声进行了分离,适合于信号去除噪声,条件是噪声频率高于信号频率,而这正是大多数噪声的特点。
在MATLAB工具箱中,其实有的小波工具可以直接去除信号中的噪声。在命令窗口输入如下指令:
前面两条指令是把系统中的信号“noisbloc”载入,该信号实际上包含了噪声信号,第3条指令用小波工具箱中的“sym4”小波对信号进行分解,分解到第3级,最后一条指令画出图形,得到下图4所示的图形。
图4 信号“noisbloc”原始波形
图5 信号“noisbloc” 消除噪声后波形
再输入如下指令:
前4条指令设置了全局阈值,后面指令根据阈值对原始数据进行去除噪声的操作,并把最后结果图形画出来,得到如图5所示波形,从图中可以看出,该波形相当于图4波形的噪声被消除后得到的波形。
上述过程用到的小波都是工具箱中现有的小波,也可以根据需要,自己设计小波、添加到系统中,然后用自己的小波来分解函数或者信号。以我设计构造的一个小波为例,大概需要以下几个步骤:
首先,根据小波设计构造方法,构造小波,例如:
小波函数实际上是尺度滤波器,放置到一个MAT⁃LAB程序代码文件,即“.m”文件中,例如ndbwavf.m文件。
其次,当前文件夹设置为ndbwavf.m文件所在文件夹,命令窗口执行命令:
把小波添加到系统中,‘ndbwavf’是文件名,‘ndb’是新添加的小波名字。
最后,把小波文件 ndbwavf.m复制到 C:MAT⁃LAB7 oolboxwaveletwavelet文件夹即可。
这样添加以后,就可以像使用系统自带的小波一样来使用新添加的小波。
MATLAB作为一款功能强大的数学软件,广泛应用于数值分析、计算、工程与科学绘图、控制系统的设计与仿真、数字图像处理、数字信号处理等领域。尤其是其具有完备的图形处理功能,可以方便地实现计算结果和编程的可视化,还有功能丰富的应用工具箱(如信号处理工具箱、通信工具箱等),为用户提供了大量方便实用的处理工具。小波分析是当前应用数学和工程学科中一个迅速发展的新领域,经过近40年的探索研究,其数学理论基础已经建立,而且已经相当完备。小波变换实际上是空间(时间)和频率的局部变换,能有效地从信号中提取有用信息,并且通过伸缩和平移等运算功能,对函数或信号进行多尺度的细化分析,这些正是经典的Fourier变换无法解决的难题。小波分析是时间—尺度分析和多分辨分析的一种新技术,它在信号分析、语音和图像分析识别、计算机视觉、数据压缩等方面有着广泛的应用。在MATLAB环境下,可以方便进行小波分析、计算,对信号进行分解和合成。对语音信号的处理同样适合于MATLAB环境,因为其有很多读写音频文件的函数,例如,目前大量应用wav格式的音频文件,用wavread函数可以一次全部读入。如果采用C或者C++,需要编写很多的代码并进行大量的检验,才能保证正确的读入,写音频文件同样如此。因此,MATLAB处理音频文件有着很高的效率。
[1]Haitao Luo.Local Thresholding De-noise Speech Signal.Fifth International Conference on Digital Image Processing(ICDIP 2013)[C],8878-48.
[2]罗海涛.wav格式与数据获取.电脑知识与技术[J].2016,12-27(9):211-213
[3]张国华,张文娟,薛鹏翔.小波分析与应用基础[M].西北工业大学出版社,2006.8.
[4]刘明才.小波分析及其应用[M].清华大学出版社,2005.9.
Application of Wavelet Analysis in MATLAB
LUO Hai-tao
(School of Informatics,Guangdong University of Foreign Studies,Guangzhou 510420)
As a powerful software,MATLAB is used widely in varies areas.Its build-in functions simplifies coding,calculating,and therefore is ef⁃fective.Wavelet analysis is new developed technique in recent 30 years,it also is break-through development of Fourier transform.Tools of wavelet are integrated into the MATLAB system,are very convenient to analyze,calculate and decompose speech signal.And new wave⁃let can be added into the system if needed。
MATLAB;小波;小波分析;信号处理
1007-1423(2017)28-0057-04
10.3969/j.issn.1007-1423.2017.28.015
罗海涛(1967-),男,广东兴宁人,硕士,研究方向为信号处理、语音识别
2017-07-25
2017-09-26
MATLAB;Wavelet;Wavelet Analysis;Signal Processing