王鑫
江南大學(xué)物聯(lián)網(wǎng)工程學(xué)院 江蘇 無(wú)錫 214122
小波工具箱使用圖形化工具和命令行函數(shù)擴(kuò)展MATLAB技術(shù)的計(jì)算環(huán)境,可以用于開(kāi)發(fā)基于小波的算法,進(jìn)行信號(hào)和圖像的分析、綜合、去噪和壓縮等運(yùn)算[1]。
小波工具箱支持對(duì)小波屬性和小波應(yīng)用的交互式研究。這對(duì)于語(yǔ)音和音頻處理、圖像和視頻處理、生物成像以及通信和地球物理學(xué)中的一維和二維應(yīng)用是非常有益的[2]。
通過(guò)對(duì)小波工具箱的目錄結(jié)構(gòu)和源代碼的深入分析,研究小波工具箱的體系結(jié)構(gòu)和實(shí)現(xiàn)技術(shù)。這樣的實(shí)踐有助于學(xué)生對(duì)小波理論的深入理解。
從小波理論可以知道,如果尺度函數(shù)φ是緊支的,那么對(duì)應(yīng)的尺度濾波器W的長(zhǎng)度是有限的,就可以被看做一個(gè)FIR濾波器[3]。小波工具箱將這個(gè)FIR濾波器保存為系統(tǒng)預(yù)定義的數(shù)據(jù)文件。載入這個(gè)數(shù)據(jù)文件,即可獲得尺度濾波器W。從尺度濾波器W出發(fā),定義4個(gè)FIR濾波器,如表1所示。
表1 分解濾波器和重構(gòu)濾波器
從計(jì)算小波濾波器的wfilters函數(shù)的源代碼可知,上述4個(gè)濾波器的計(jì)算方案如圖1所示。首先,對(duì)W進(jìn)行歸一化,即可求得Lo_R。從Lo_R出發(fā),使用qmf函數(shù)和wrev函數(shù),即可求得Hi_R、Lo_D和Hi_D。其中,qmf函數(shù)使得Hi_R和Lo_R是正交鏡像濾波器,wrev的作用是翻轉(zhuǎn)Hi_R和Lo_R的系數(shù)。因此,Hi_D和Lo_D也是正交鏡像濾波器。
在完成小波函數(shù)ψ(t)、尺度函數(shù)φ(t)或者小波濾波器的定義的基礎(chǔ)上,即可進(jìn)行各種小波分析的任務(wù):連續(xù)小波分析、離散小波分析和小波包分析。
將小波理論應(yīng)用于實(shí)際的工程問(wèn)題中,使用較多的是離散小波變換。在小波工具箱中,離散小波變換的分析-分解函數(shù)主要有dwt函數(shù)(單級(jí)離散小波變換)和wavedec函數(shù)(多級(jí)小波分解),重構(gòu)-綜合函數(shù)主要有idwt函數(shù)(單級(jí)逆離散小波變換)、waverec函數(shù)(多級(jí)小波重構(gòu))和wrcoef函數(shù)(從小波系數(shù)重構(gòu)單個(gè)分解分支)。這些函數(shù)之間的計(jì)算關(guān)系如圖2和圖3所示。
圖2和圖3中,s為原始信號(hào);Ak(0≤k≤j)為第k級(jí)逼近;Dk(1≤k≤j)為第k級(jí)細(xì)節(jié);cAk(1≤k≤j)為第k級(jí)逼近系數(shù),cDk(1≤k≤j)為第k級(jí)細(xì)節(jié)系數(shù),[cAj,cDj,…,cD1]為第j級(jí)小波分解,j≤1。
從源代碼可以得出,wavedec函數(shù)是通過(guò)遞歸地執(zhí)行dwt函數(shù)來(lái)實(shí)現(xiàn)的。具體來(lái)說(shuō):第一步,從信號(hào)s開(kāi)始,分別與用于逼近的低通分解濾波器Lo_D和用于細(xì)節(jié)的高通分解濾波器Hi_D進(jìn)行卷積運(yùn)算,然后分別進(jìn)行二進(jìn)采樣(降采樣)來(lái)獲得逼近系數(shù)cA1和細(xì)節(jié)系數(shù)cD1。下一步,使用相同的方案對(duì)逼近系數(shù)cA1進(jìn)行分割,即用cA1代替s,對(duì)其作第一步的運(yùn)算,即可求得cA2和cD2,依此類(lèi)推。信號(hào)s的第j級(jí)小波分解具有以下結(jié)構(gòu):[cAj,cDj,…,cD1]。該過(guò)程如圖4所示。
waverec函數(shù)是通過(guò)遞歸地執(zhí)行idwt函數(shù)來(lái)實(shí)現(xiàn)的。從第j級(jí)的逼近系數(shù)cAj和細(xì)節(jié)系數(shù)cDj開(kāi)始,通過(guò)插入零(增采樣)并將結(jié)果與重構(gòu)濾波器卷積,逆離散小波變換重構(gòu)cAj-1。該過(guò)程如圖5所示。
生成小波包的函數(shù)為wpfun函數(shù)。在小波工具箱中,當(dāng)使用正交小波的時(shí)候,生成小波包的計(jì)算方案:首先,獲得對(duì)應(yīng)于小波的2個(gè)濾波器h(n)和g(n),它們的長(zhǎng)度為2N;然后,根據(jù)方程①和②進(jìn)行計(jì)算,可以得到函數(shù)序列(Wn(x),n=0,1,2,…)。
其中,W0(x)=φ(x)是對(duì)應(yīng)的尺度函數(shù),W1(x)=ψ(x)是對(duì)應(yīng)的小波函數(shù)。
MATLAB支持面向?qū)ο蟮木幊谭缎蚚4]。在小波工具箱中,一些面向?qū)ο蟮木幊烫卣饔糜谛〔ò臉?shù)結(jié)構(gòu)。在小波工具箱中定義了四類(lèi)對(duì)象:類(lèi)WTBO(小波工具箱對(duì)象),類(lèi)NTREE(新樹(shù)),類(lèi)DTREE(數(shù)據(jù)樹(shù))和類(lèi)WPTREE(小波包樹(shù))。這些對(duì)象的層次組織描述如圖6所示。
WTBO類(lèi)是一個(gè)抽象類(lèi)。工具箱中的任何對(duì)象都以WTBO為父類(lèi),并且繼承了WTBO類(lèi)的方法和域。
NTREE類(lèi)專用于樹(shù)操作(如節(jié)點(diǎn)標(biāo)簽、節(jié)點(diǎn)分割和節(jié)點(diǎn)合并等操作),它也是一個(gè)抽象類(lèi)。
DTREE類(lèi)專用于具有關(guān)聯(lián)數(shù)據(jù)的樹(shù):向量或矩陣。這個(gè)類(lèi)也是一個(gè)抽象類(lèi),而且這個(gè)類(lèi)的一些方法必須重載。
WPTREE類(lèi)的目的是管理一維和二維的小波包。小波工具箱使用WPTREE對(duì)象用來(lái)構(gòu)造小波包。
從小波工具箱的目錄結(jié)構(gòu)和源代碼出發(fā),深入研究小波工具箱的體系結(jié)構(gòu)和實(shí)現(xiàn)技術(shù)。小波工具箱實(shí)現(xiàn)一維和二維的小波定義、連續(xù)小波變換、離散小波變換以及小波包分析等功能。限于篇幅,重點(diǎn)闡述一維的情況。二維的情況可以由一維的情況進(jìn)行類(lèi)推。
在小波包分析的實(shí)現(xiàn)中,小波工具箱將面向?qū)ο蟮木幊谭缎屯昝赖貞?yīng)用于科學(xué)軟件,是科學(xué)軟件開(kāi)發(fā)的一個(gè)范例,對(duì)學(xué)生開(kāi)發(fā)專業(yè)軟件也具有較大的指導(dǎo)意義。
[1]The Mathworks Inc. Wavelet Toolbox User’s Guide[Z].2009
[2]王大凱,彭進(jìn)業(yè).小波分析及其在信號(hào)處理中的應(yīng)用[M].北京:電子工業(yè)出版社,2006
[3]樊啟斌.小波分析[M].武漢:武漢大學(xué)出版社,2008
[4]The Mathworks Inc. Object-Oriented Programming[Z].2009