羅海濤
(廣東外語(yǔ)外貿(mào)大學(xué)信息學(xué)院,廣州 510420)
MATLAB 環(huán)境下小波分析應(yīng)用
羅海濤
(廣東外語(yǔ)外貿(mào)大學(xué)信息學(xué)院,廣州 510420)
MATLAB作為功能強(qiáng)大的數(shù)學(xué)軟件,在很多領(lǐng)域有著成功的應(yīng)用;在數(shù)字信號(hào)處理、語(yǔ)音信號(hào)處理方面,其大量的函數(shù)極大地簡(jiǎn)化編程、計(jì)算,提高了效率;小波分析是近30多年來(lái)發(fā)展起來(lái)的新興學(xué)科,是傅立葉變換突破性的發(fā)展,為很多領(lǐng)域和工程應(yīng)用提供全新的工具;在MATLAB環(huán)境下,集成了小波分析工具箱,可以很方便地進(jìn)行小波分析、計(jì)算、分解信號(hào);同時(shí),還可以根據(jù)需要,把新構(gòu)造的小波添加到工具箱。
MATLAB是MATrix LABoratory的縮寫,可直譯為矩陣實(shí)驗(yàn)室,是美國(guó)MathWorks公司出品的數(shù)學(xué)軟件,是一個(gè)用于數(shù)值計(jì)算、數(shù)據(jù)分析、數(shù)據(jù)可視化等的交互式環(huán)境,目前常用的版本都包括MATLAB和Simulink兩大部分。其中Simulink是一個(gè)軟件包,提供了一個(gè)可視化開發(fā)環(huán)境,常用于系統(tǒng)模擬、嵌入式系統(tǒng)開發(fā)等方面。
正如其名稱(矩陣實(shí)驗(yàn)室)所顯示的,MATLAB的基本數(shù)據(jù)單位是矩陣,包括向量,MATLAB可以進(jìn)行矩陣和向量運(yùn)算、繪制函數(shù)圖形和數(shù)據(jù)圖形、實(shí)現(xiàn)算法、創(chuàng)建用戶界面、連接運(yùn)行其他編程語(yǔ)言的程序等。MATLAB具有強(qiáng)大的數(shù)據(jù)處理、圖形繪制、圖像處理能力,其具體應(yīng)用領(lǐng)域包括工程計(jì)算、控制設(shè)計(jì)、數(shù)字信號(hào)處理與通訊、圖像處理、信號(hào)檢測(cè)、金融建模設(shè)計(jì)與分析等領(lǐng)域。
本文采用MATLAB的小波分析工具來(lái)分析語(yǔ)音信號(hào),對(duì)語(yǔ)音信號(hào)進(jìn)行分解并獲取相關(guān)的特征,用于進(jìn)一步的分析和識(shí)別。
不同于傳統(tǒng)的建立在Fourier變換基礎(chǔ)上的信號(hào)分析,小波分析是近30多年來(lái)發(fā)展起來(lái)的新興學(xué)科,是傅立葉變換突破性的發(fā)展,為很多領(lǐng)域和工程應(yīng)用提供了全新的工具。小波分析是在特定的函數(shù)空間,用一種方法構(gòu)造一種稱為小波的基函數(shù),即小波基,對(duì)給定的函數(shù)或者信號(hào)進(jìn)行展開與逼近,進(jìn)行“局部”的分析,因而小波變換有“數(shù)學(xué)顯微鏡”之稱,這個(gè)是Fou?rier變換不能夠做到的。小波分析還解決了Fourier變換不能解決的許多困難問題,它是函數(shù)信號(hào)分析發(fā)展史上里程碑式的進(jìn)展。
其思想類似于多采樣率的濾波器組,對(duì)一個(gè)函數(shù)或者信號(hào)進(jìn)行多次濾波分解,得到小波分解結(jié)果,而這些結(jié)果體現(xiàn)了不同頻率濾波器的濾波輸出。
本文在MATLAB環(huán)境下,采用離散小波進(jìn)行信號(hào)分析,通過(guò)小波分解,從原始信號(hào)中發(fā)現(xiàn)和提取有用信息。
在MATLAB環(huán)境下,集成了小波工具箱,工具箱中已經(jīng)有一些小波和小波包,可以直接用來(lái)進(jìn)行信號(hào)分解。
在命令窗口依次輸入如下幾條指令:
前面兩條指令是把系統(tǒng)中的信號(hào)“noisbump”載入,該信號(hào)實(shí)際上包含了噪聲信號(hào),第3條指令用小波工具箱中的“db2”小波對(duì)信號(hào)進(jìn)行分解,最后一條指令畫出圖形,得到圖1所示的圖形。
圖1 信號(hào)“noisbump”的小波分解結(jié)果
左邊的圖形實(shí)際上是小波包樹,共3級(jí),也就是上述指令對(duì)信號(hào)進(jìn)行了3級(jí)小波分解,右邊的圖形是根節(jié)點(diǎn)(節(jié)點(diǎn)0)的數(shù)據(jù)圖形,也就是原始信號(hào)波形,可以看出其中包含了噪聲。圖中分別點(diǎn)擊(1)節(jié)點(diǎn)和(2)節(jié)點(diǎn),得到如圖2和圖3所示圖形。
圖2 節(jié)點(diǎn)(1)數(shù)據(jù)波形
圖3 節(jié)點(diǎn)(2)數(shù)據(jù)波形
其中圖2是把原始信號(hào)高頻噪聲過(guò)濾后得到的數(shù)據(jù)波形,稱之為離散逼近,相當(dāng)于把原始含噪信號(hào)波形“磨光”后的波形。圖3則是把原始信號(hào)低頻部分過(guò)濾后得到的數(shù)據(jù)波形,稱之為離散細(xì)節(jié),相當(dāng)于疊加在原始信號(hào)中的噪聲。如果點(diǎn)擊(3)節(jié)點(diǎn),得到與圖2類似的波形,相當(dāng)于對(duì)圖2的離散逼近圖形進(jìn)一步“打磨”,使它變得更加“光滑”,相當(dāng)于圖2數(shù)據(jù)波形的離散逼近。點(diǎn)擊(4)節(jié)點(diǎn),則相當(dāng)于把圖2的離散逼近波形中的高頻分量進(jìn)一步過(guò)濾出來(lái),或者可以理解為把其中“噪聲”進(jìn)一步過(guò)濾,相當(dāng)于圖2數(shù)據(jù)波形的離散細(xì)節(jié)。依此類推,節(jié)點(diǎn)(5)波形相當(dāng)于節(jié)點(diǎn)(2)數(shù)據(jù)波形的離散逼近,是節(jié)點(diǎn)(2)數(shù)據(jù)波形“打磨”的結(jié)果;節(jié)點(diǎn)(6)波形相當(dāng)于節(jié)點(diǎn)(2)數(shù)據(jù)波形的離散細(xì)節(jié),相當(dāng)于節(jié)點(diǎn)(2)數(shù)據(jù)波形中的高頻分量,或者是其中的“噪聲”。其余各級(jí)也是這樣。
從上述分析可以看出,小波實(shí)際上是對(duì)原始信號(hào)進(jìn)行濾波分解,對(duì)每一個(gè)節(jié)點(diǎn)的分解都分成低頻和高頻部分,低頻部分稱為離散逼近,高頻部分稱為離散細(xì)節(jié),這樣的分解可以無(wú)限地進(jìn)行下去。可見,小波分解把原始信號(hào)和噪聲進(jìn)行了分離,適合于信號(hào)去除噪聲,條件是噪聲頻率高于信號(hào)頻率,而這正是大多數(shù)噪聲的特點(diǎn)。
在MATLAB工具箱中,其實(shí)有的小波工具可以直接去除信號(hào)中的噪聲。在命令窗口輸入如下指令:
前面兩條指令是把系統(tǒng)中的信號(hào)“noisbloc”載入,該信號(hào)實(shí)際上包含了噪聲信號(hào),第3條指令用小波工具箱中的“sym4”小波對(duì)信號(hào)進(jìn)行分解,分解到第3級(jí),最后一條指令畫出圖形,得到下圖4所示的圖形。
圖4 信號(hào)“noisbloc”原始波形
圖5 信號(hào)“noisbloc” 消除噪聲后波形
再輸入如下指令:
前4條指令設(shè)置了全局閾值,后面指令根據(jù)閾值對(duì)原始數(shù)據(jù)進(jìn)行去除噪聲的操作,并把最后結(jié)果圖形畫出來(lái),得到如圖5所示波形,從圖中可以看出,該波形相當(dāng)于圖4波形的噪聲被消除后得到的波形。
上述過(guò)程用到的小波都是工具箱中現(xiàn)有的小波,也可以根據(jù)需要,自己設(shè)計(jì)小波、添加到系統(tǒng)中,然后用自己的小波來(lái)分解函數(shù)或者信號(hào)。以我設(shè)計(jì)構(gòu)造的一個(gè)小波為例,大概需要以下幾個(gè)步驟:
首先,根據(jù)小波設(shè)計(jì)構(gòu)造方法,構(gòu)造小波,例如:
小波函數(shù)實(shí)際上是尺度濾波器,放置到一個(gè)MAT?LAB程序代碼文件,即“.m”文件中,例如ndbwavf.m文件。
其次,當(dāng)前文件夾設(shè)置為ndbwavf.m文件所在文件夾,命令窗口執(zhí)行命令:
把小波添加到系統(tǒng)中,‘ndbwavf’是文件名,‘ndb’是新添加的小波名字。
最后,把小波文件 ndbwavf.m復(fù)制到 C:MAT?LAB7 oolboxwaveletwavelet文件夾即可。
這樣添加以后,就可以像使用系統(tǒng)自帶的小波一樣來(lái)使用新添加的小波。
MATLAB作為一款功能強(qiáng)大的數(shù)學(xué)軟件,廣泛應(yīng)用于數(shù)值分析、計(jì)算、工程與科學(xué)繪圖、控制系統(tǒng)的設(shè)計(jì)與仿真、數(shù)字圖像處理、數(shù)字信號(hào)處理等領(lǐng)域。尤其是其具有完備的圖形處理功能,可以方便地實(shí)現(xiàn)計(jì)算結(jié)果和編程的可視化,還有功能豐富的應(yīng)用工具箱(如信號(hào)處理工具箱、通信工具箱等),為用戶提供了大量方便實(shí)用的處理工具。小波分析是當(dāng)前應(yīng)用數(shù)學(xué)和工程學(xué)科中一個(gè)迅速發(fā)展的新領(lǐng)域,經(jīng)過(guò)近40年的探索研究,其數(shù)學(xué)理論基礎(chǔ)已經(jīng)建立,而且已經(jīng)相當(dāng)完備。小波變換實(shí)際上是空間(時(shí)間)和頻率的局部變換,能有效地從信號(hào)中提取有用信息,并且通過(guò)伸縮和平移等運(yùn)算功能,對(duì)函數(shù)或信號(hào)進(jìn)行多尺度的細(xì)化分析,這些正是經(jīng)典的Fourier變換無(wú)法解決的難題。小波分析是時(shí)間—尺度分析和多分辨分析的一種新技術(shù),它在信號(hào)分析、語(yǔ)音和圖像分析識(shí)別、計(jì)算機(jī)視覺、數(shù)據(jù)壓縮等方面有著廣泛的應(yīng)用。在MATLAB環(huán)境下,可以方便進(jìn)行小波分析、計(jì)算,對(duì)信號(hào)進(jìn)行分解和合成。對(duì)語(yǔ)音信號(hào)的處理同樣適合于MATLAB環(huán)境,因?yàn)槠溆泻芏嘧x寫音頻文件的函數(shù),例如,目前大量應(yīng)用wav格式的音頻文件,用wavread函數(shù)可以一次全部讀入。如果采用C或者C++,需要編寫很多的代碼并進(jìn)行大量的檢驗(yàn),才能保證正確的讀入,寫音頻文件同樣如此。因此,MATLAB處理音頻文件有著很高的效率。
[1]Haitao Luo.Local Thresholding De-noise Speech Signal.Fifth International Conference on Digital Image Processing(ICDIP 2013)[C],8878-48.
[2]羅海濤.wav格式與數(shù)據(jù)獲取.電腦知識(shí)與技術(shù)[J].2016,12-27(9):211-213
[3]張國(guó)華,張文娟,薛鵬翔.小波分析與應(yīng)用基礎(chǔ)[M].西北工業(yè)大學(xué)出版社,2006.8.
[4]劉明才.小波分析及其應(yīng)用[M].清華大學(xué)出版社,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;小波;小波分析;信號(hào)處理
1007-1423(2017)28-0057-04
10.3969/j.issn.1007-1423.2017.28.015
羅海濤(1967-),男,廣東興寧人,碩士,研究方向?yàn)樾盘?hào)處理、語(yǔ)音識(shí)別
2017-07-25
2017-09-26
MATLAB;Wavelet;Wavelet Analysis;Signal Processing