蘭華 李蘭
摘 要:主要論述了小波分析中的快速算法——Mallat算法和單子帶重構算法。對Mallat分解起點的實用性、濾波器的濾波方法做了更加通俗的說明,并比較了Mallat算法與單子帶重構算法的分析差別,論述了它們在各自實際工程中的應用場合。
關鍵詞:小波分析;Mallat算法;單子帶重構算法;濾波器
中圖分類號:TH123 文獻標識碼:A DOI:10.15913/j.cnki.kjycx.2015.24.017
如果利用某種儀器測量信號,那么,鑒于精度(分別率)的限制,得到的信號只能是實際信號的一個近似表示,即可將f(t)看作屬于某個空間Vj。如果信號f(t)中有噪聲,例如某個尖峰信號,要想把信號濾掉(一般的噪聲頻率比有用信號的頻率高),就需要把f(t)中屬于Vj但不屬于更低一層空間Vj+1的部分去掉(濾波),這時就產生了小波的概念,即將信號映射到Vj+1上。
小波分析屬于時頻分析的一種,它具有多分辨分析(MRA—Multiresolution Analysis)的特點,而且在時域和頻域都具有表征信號局部特征的能力,所以,被譽為“信號分析中的顯微鏡”。
多分辨分析為深刻理解小波原理和小波構造提供了一個極好的框架。由多分辨分析理論發(fā)展出了小波分解和重構的快速算法,它是法國學者Mallat最先提出來的,所以,被稱為“Mallat算法”。該算法能極大地減少小波變換的計算量,將小波理論與工程應用聯(lián)系起來,使其走向更廣闊的應用領域。
1 Mallat算法分解起點分析
將具有某種性質元素的集合或具有某種性質的元素組成的一個類稱為空間。如果空間為V0=W1⊕V1=W1⊕W2⊕V2=W1⊕W2⊕…⊕WJ⊕VJ,那么,設f(t)為向量,f(t)∈V0空間,則f(t)=D1f(t)+D2f(t)+…+DJf(t)+AJf(t),f(t)在V0空間的投影系數(shù)C0=A0f,f(t)在Vj空間的投影系數(shù)Cj=Ajf.
采用Mallat算法分解V0空間的f(t),則有低頻分解概貌
部分Ajf= H(2t-k)Aj-1f,高頻分解細節(jié)部分Djf= H(2t-k)
Aj-1f.Mallat分解算法如圖1所示。
Mallat算法是分解系數(shù)的快速算法,很多人在使用Mallat算法時,都不太清楚其分析起點的真正意義,只是把采集到的f(t)數(shù)據直接輸入濾波器中分解,但并不知道為什么可以這樣做。
事實上,其分析起點是這樣來的:設φ0,k(t)為空間V0的尺度基函數(shù),由圖1可知,Mallat算法分解的起點應該是系數(shù)C0,k=〈f(t),φ0,k(t)〉=〈f(t),φ(t-k)〉.不過,當采樣間隔足夠小時,φ(t-k)相當于δ(t-k)的表現(xiàn),所以,當尺度為0時,可取C0,k≈f[n].因此,在實際應用中,通常都是將連續(xù)信號f(t)在滿足香農定理時的數(shù)字采樣得到的序列f[n]作為C0,k的近似表示,即直接取為C0,k=f[n].
由此可知,分解的起點變成了f[n],這樣分解和重構都變成了針對f[n]的運算。這樣,便可以利用離散小波變換的方法直接分析需要研究的序列f[n],從而將它分解到不同的尺度中去,并觀察它的特征。
2 Mallat算法中的濾波器
采用Mallat算法多級分解每一級,實際上是分解出一部分高頻細節(jié)部分Djf,剩余的低頻概貌部分Ajf再傳遞給下一級進行類似的分解。不同級之間分解得到的高頻細節(jié)之間是正交的,所以,它們也是不相關的。這種分解操作就像實際生活中的“剝洋蔥”,每剝去一層“洋蔥皮”,就剝掉了洋蔥的一點“細節(jié)”,剝去一層皮后的洋蔥與未剝之前的洋蔥相比,整體形狀相似,只是大小不同,因此,可以說前者是后者的概貌部分,這便是“低頻概貌”和“高頻細節(jié)”的形象比喻。分解的層數(shù)越少,j越小,Ajf包含的細節(jié)成分就越多,信號就越清楚,分辨率就越高;反之j越大,包含的細節(jié)就越少,只有信號的輪廓,信號就越模糊,分辨率就越低。
在Mallat算法中,信號的頻段是由向小波濾波器被連續(xù)降半劃分到指定的尺度(層)上的。
其濾波器的工作方式通俗的解釋為:因為卷積和內積都滿足交換結合律,所以,在Mallat算法中,系數(shù)Cj=〈f(t),φi,m(t)〉通過低頻濾波器分解一層相當于空間Vj尺度基函數(shù)φi,m(t)先與濾波器卷積變?yōu)棣読+1,m(t),然后f(t)與Vj+!上的尺度基函數(shù)φi+1,m(t)內積,這樣分解結果就變成了f(t)在更低一層尺度空間Vj+!上的投影系數(shù)Cj+1.同理,Cj通過高頻濾波器分解,結果相當于f(t)在更低一層細節(jié)空間Wj+!上的投影系數(shù)dj+1不斷分解Cj.濾波器這樣不斷地工作便實現(xiàn)了Mallat分解。
3 Mallat算法與單子帶重構算法的比較
如圖2所示,單子帶重構算法是參考文獻[7]中首先提出來,它認為,由于Mallat算法中隔點采樣會使得頻率折疊,而在單子帶重構算法中,子帶和具有與初始系數(shù)相同的尺度可以避免頻率折疊的問題發(fā)生,所以,分解信號的表達會更為準確。
單子帶重構是建立在Mallat算法之上的,它的思路是先將信號按照Mallat分解算法分解,得到各尺度上的小波系數(shù),然后將各子帶上的小波系數(shù)分別重構至與原信號相同的尺度。
在尺度空間Vj中,被稱為尺度因子的j與空間分辨率有直接的對應關系——j越小,包含的細節(jié)成分就越多,分辨率就越高;相反,j越大,包含的細節(jié)成分就越少,而且只有信號的輪廓,保留下來的低頻概貌部分就越平滑,逼近的效果就越差,信號就越模糊。因此,當利用Mallat算法分析信號時,分解的尺度越大,越能看到信號的輪廓而看不到細節(jié)的東西,而單子帶重構算法卻不是這樣的。
舉一個簡單例子直觀地分析兩者的差別。假設用Mallat算法分解一個包含頻率為5 Hz、35 Hz、75 Hz和含有150 Hz瞬態(tài)響應的4個頻率的信號f(t),則f(t)=sin(10πt)+sin(70πt)+sin(150πt)+10e-30t sin(300πt).
在400 Hz的采樣頻率上取800個點,選db1小波利用Mallat算法(調用Matlab小波工具箱相關函數(shù)進行分析)將信號f(t)分解為3層,如圖3所示。
由圖3可知,利用Mallat算法分解信號,分解的層數(shù)越多,尺度越大,信號越模糊,就只能看到信號的輪廓而沒有細節(jié)部分。此外,由于每分解一層分辨率降低一定的比例,表述子帶的時域長度也會以同等比例縮小。這就像用比例尺來描述兩點之間的實際距離一樣,假設兩點間的距離為10 km,如果比例尺中的1 cm表示1 km,那么,需要用10 cm來表示這兩點之間的距離;如果比例尺中的1 cm表示2 km,需要用5 cm表示這兩點的距離。但是,這樣做,表示的精度就會降低。
應用Mallat算法分解信號時,只能從其子帶中看到信號的輪廓,即低頻概貌。如果要精確地分析各個子帶,比如想分析信號具體突變點的位置等,就需要使用單子帶重構算法。如果使用單子帶重構算法分析信號f(t),其結果如圖4所示。
由圖4可知,各個子帶與原信號有相同的時域長度,這是因為子帶信號的分辨率與原信號相同,即子帶與原信號有相同
的尺度。這樣,采用單子帶重構算法分析的各個子帶就相當于分別分析原始信號在不同頻段上的投影分量(每分解一層,子帶信號帶寬縮小1倍)。因此,單子帶重構算法分解的各個子帶可以表示原信號在各個頻段上的投影,以便于分析原信號的特征(比如突變點的位置等)。在單子帶重構算法中,子帶信號的突變點和極值點與原始信號f(tI)有對應關系,所以,不僅可以利用它檢測微弱瞬態(tài)成分,還可以精確地確定其發(fā)生的時間點。
單子帶重構算法將各個子帶重構到了與原始信號相同的尺度,這對研究子帶有非常重要的意義。事實上,Matlab小波工具箱“wavemenu”所使用的分析算法就是單子帶重構算法。
4 結論
Mallat算法具有很大的實用價值,主要用于觀察信號的概貌、信號壓縮和信號去噪。信號壓縮即利用數(shù)據量較少的小波系數(shù)去記錄大量的原始信號;信號去噪主要就是利用Mallat算法分解信號,通過設定閾值對各尺度上的小波系數(shù)作除噪處理,之后通過Mallat算法重構信號達到去噪的目的。由文中的分析、對比情況可知,如果要具體地分析原始信號的特征,比如信號特征的提取、故障診斷等,就需要使用單子帶重構算法,一方面,它可以解決Mallat算法帶來的頻率折疊問題;另一方面,子帶回歸到了原始信號的尺度,便于分析原信號在各個頻段的特征。
參考文獻
[1]邸繼征.小波分析原理[M].北京:科學出版社,2010.
[2]胡友強.數(shù)據驅動的多元統(tǒng)計故障診斷及應用[D].重慶:重慶大學,2010.
[3]董振興.交流驅動系統(tǒng)無傳感器矢量控制及故障診斷研究[D].上海:上海交通大學,2001.
[4]劉濤,曾祥利,曾軍.實用小波分析入門[M].北京:國防工業(yè)出版社,2006.
[5]劉穎.在役管線腐蝕故障圖像識別方法研究[D].沈陽:東北大學,2008.
[6]邵克勇,蔡苗苗,李鑫.基于小波分析及奇異值差分譜理論的滾動軸承故障診斷[J].制造業(yè)自動化,2013(08).
[7]楊建國.小波分析及其工程應用[M].北京:機械工業(yè)出版社,2005.
〔編輯:白潔〕