1. 程式人生 > >【轉載】小波變換與傅立葉變換

【轉載】小波變換與傅立葉變換

一、基的概念
    小波函式和正餘弦函式都是基,訊號都可以分成無窮多個他們的和。而展開係數就是基與訊號之間的內積,更通俗的說是投影。展開係數大的,說明訊號和基是足夠相似的,這就是相似性檢測的思想。但我們必須明確的是,傅立葉是0-2π標準正交基,而小波是-inf到inf之間的基。因此,小波在實軸上是緊的。而傅立葉的基(正弦或餘弦)與此相反。而小波能不能成為Reisz基,或標準穩定的正交基,還有其它的限制條件。此外,兩者相似的還有就是帕斯瓦爾定理(時頻能量守恆)。
注:帕斯瓦爾的物理意義可以這樣看,週期訊號可以等效為各次諧波的疊加,因此傅立葉係數(也就是各次諧波的功率)的平方求和與原訊號的功率是相等的。如果是復指數形式的傅立葉級數,因為復指數函式的功率等於其係數的模的平方,直接把傅立葉係數平方求和就行;如果是三角形式的傅立葉級數,因為三角函式的功率等於其係數的模的平方的一半,需要把各次諧波傅立葉係數平方求和的一半與直流分量的平方相加。


二、離散化的處理
    傅立葉變換,是一種數學的精妙描述。但計算機實現,卻是一步步把時域和頻域離散化而來的。第一步,時域離散化,我們得到離散時間傅立葉變換(DTFT),頻譜被週期化;第二步,再將頻域離散化,我們得到離散週期傅立葉級數(DFS),時域進一步被週期化。第三步,考慮到週期離散化的時域和頻域,我們只取一個週期研究,也就是眾所周知的離散傅立葉變換(DFT)。這裡說一句,DFT是沒有物理意義的,它只是我們研究的需要。藉此,計算機的處理才成為可能。


    下面我們談談小波。所有滿足容許性條件(從-INF到+INF積分為零)的函式,都可以成為小波。小波作為尺度膨脹和空間移位的一組函式也就誕生了。但連續取值的尺度因子和平移因子,在時域計算量和頻域的混疊來說,都是極為不便的。用更為專業的俗語,叫再生核。也就是,對於任何一個尺度a和平移因子b的小波,和原訊號內積,所得到的小波係數,都可以表示成,在a,b附近生成的小波,投影后小波係數的線性組合。這就叫冗餘性。這時的連續小波是與正交基毫無關係的東西,它頂多也只能作為一種積分變換或基。但它的顯微鏡特點和相似性檢測能力,已經顯現出來了。為了進一步更好的將連續小波變換離散化,以下步驟是一種有效方法。第一步,尺度離散化。一般只將a二進離散化,此時b是任意的。這樣小波被稱為二進小波。第二步,離散b。怎麼離散化呢?b取多少才合適呢?於是,叫小波取樣定理的東西,就這樣誕生了。也就是小波平移的最小距離(取樣間隔),應該大於二倍小波基的最高頻率。所以b取尺度的整數倍就行了。也就是越胖的小波,對應頻譜越窄,平移量應該越大,取樣間隔越大。當然,第一二兩步的頻域理解,即在滿足頻域視窗中心是3倍的頻域視窗半徑的前提下,頻域就在統計上是完美二分的(但很多小波滿足不了這個條件,而且頻域視窗能量不集中,所以只是近似二分的)。這時的小波變換,稱為離散二進小波變換。第三步,引入穩定性條件。也就是經過變換後訊號能量和原訊號能量有什麼不等式關係。滿足穩定性條件後,也就是一個小波框架產生成了可能。他是數值穩定性的保證。一個稍弱的穩定條件,就是0<A<=B<+INF,並且小波函式線性無關,此時小波基稱為Reisz基。並且,如果變換後能量守恆,(A=B=1),並且線性無關,這就是標準離散正交小波基。這種分解也就是大家熟知的直和分解。若A和B不相等,且相差很大,我們就說小波不是緊框架的,所以雙正交,對偶小波也就自然而然引進來了。若A和B不相等,但又相差不大,這時穩定重構也是可能的,這時成為幾乎緊框架的。(好像說這樣小波有櫓棒性特點,也就是粗略分解,但卻精確重構。)經過3步,我們最終地得到了一個二進離散化穩定的小波變換,這正是我們要的結果。


三、快速演算法
    如果說現代數字訊號處理革命的演算法,甚至是很多快速演算法的老始祖,或者是滿矩陣向量乘法一個幾乎不可抗拒的最小計算量NlogN,那就是令我不得不佩服的快速傅立葉變換(FFT)。這裡我不想解釋過多的基2演算法,和所謂的三重迴圈,還有那經典的蝶形單元,或是分裂基之類,我想說的就是一種時頻對應關係。也就是演算法的來源。我們首先明確,時域的卷積對應頻域的相乘,因此我們為了實現卷積,可以先做傅立葉變換,接著在頻域相乘,最後再做反傅立葉變換。這裡要注意,實際我們在玩DSP。因此,大家要記住,圓周卷積和離散傅立葉變換,是一家子。快速傅立葉變換是離散傅立葉的快速演算法。因此,我們實現離散線性卷積,先要補零。然後使得它和圓周卷積相等。然後就是快速傅立葉變換,頻域相乘,最後反快速傅立葉變換。當然,如果我們就需要的是圓周卷積,那我們也就不需要多此一舉的補零。這裡,我們可以把圓周卷積,寫成矩陣形式。這點很重要。Y=AX。這裡的A是迴圈矩陣。但不幸的是A仍然是滿陣。 


    小波的快速演算法。MALLET演算法,是一個令人振奮的東西。它實質給了多解析度分析(多尺度分析)一個變得一發而不可收的理由。它實質上,講了這樣一個意思。也就是。我在一個較高的尺度(細節)上作離散二進穩定的小波變換,得到了一個結果(小波係數),我若是想得到比它尺度低的小波係數(概貌),我不用再計算內積,只是把較高尺度的小波係數和低通或高通濾波器卷積再抽取即可。但是,所有這些證明的推導是在整個實軸上進行的。即把訊號看成無限長的。但這仍不是我們想要的。還有,我們還必須在較高尺度上作一次內積,才可以使用此演算法。因此,我們開始簡化,並擴充套件此理論。第一,我們把訊號的取樣,作為一個較高層的小波係數近似初始值(這是可以的,因為小波很瘦時,和取樣函式無異)。第二,我們把原來的卷積,換為圓周卷積。這和DSP何嘗不一樣呢?他的物理意義,就是把訊號作週期延拖(邊界處理的一種),使之在整個實軸上擴充套件。這種演算法令我為之一貫堅持的是,它是完全正交的,也就是說是正交變換。正變換Y=AX;反變換X=A’Y;一般對於標準正交基,A’是A的共軛轉置,對於雙正交A’是A的對偶矩陣。但不管如何,我們可以大膽的寫,AA’=A’A=I。這裡I是單位矩陣。


    那怎樣操作才是最快的呢?我們來分析A的特點,首先A是正交陣,其次A是有迴圈矩陣特點,但此時A上半部分是由低通濾波器構成的迴圈子矩陣,下半部分是由高通濾波器構成的子矩陣,但卻是以因子2為迴圈的。為什麼,因為你做了2抽取。所以我們可以,實現小波變換用快速傅立葉變換。這時如果A是滿陣的,則複雜度由O(N.^2)下降到O(NlogN)。(這個程式我已經傳在了研學上,在原創區)。但還有一點,我們忘了A是稀疏的,因為訊號是很長的,而濾波器確實很短的,也就是這個矩陣是個近似對角陣。所以,快速傅立葉是不快的,除非你傻到含有零的元素,也作了乘法。因此,小波變換是O(N)複雜度的。這是它的優勢。但要實現,卻不是那麼容易,第一個方法,稀疏矩陣儲存和稀疏矩陣乘法。第二個方法,因子化。因子化,是一個傑出的貢獻。它在原有的O(N)的複雜度基礎上,對於長濾波器,又把複雜度降低一半。但量級仍然是O(N)。


四、時頻分析
    對於平穩訊號,傅立葉再好不過了。它反映的是訊號總體的整個時間段的特點。在頻率上,是點頻的。而對於非平穩訊號,它就無能為力了。而小波恰好對此派上用場。小波是反映訊號,某個時間段的特點的。在頻域上,是某個頻率段的表現。但小波,作為頻譜分析確實存在很多問題。但我們確實可以做出很多的小波滿足這個特點。


五、壓縮、消噪、特徵提取
    傅立葉變換的壓縮,已經廣泛應用了。它的簡化版本就是DCT變換。而小波包的提出,也就使DCT有些相形見拙。首先,它提出代價函式,一般就是熵準則。其次,一個自適應樹分解。再次,基於矩陣範數或較少位編碼的稀疏化策略。這些使小波包的壓縮近乎完美。小波包是從頻域上實現的。從時域上,我們也可採用類似的分裂和並演算法,來實現訊號最優的表達,這種可變窗小波成為MALVAR小波。記住,壓縮是小波最大的優勢。


    消噪,一般的傅立葉演算法,一般可以是IIR濾波和FIR濾波。兩者各有優缺點。而小波的消噪,一般也是由多層分解和閾值策略組成。我們需要的是訊號的特點,噪聲的特點,然後確定用不用小波,或用什麼小波。這點上,小波的優勢並不是很明顯。


    特徵提取。這是小波的顯微鏡特點很好地運用。利用模極大值和LIPSCHITZ指數,我們可以對訊號的突變點做分析。但這裡面的問題也是很多。首先,在不同尺度上,噪聲和訊號的模極大值變化不同。再次,一般我們用求內積方法,求模極大值,而不用MALLET演算法,或者改用叫多孔演算法的東西來做。這點,我沒任何體會,希望大家多討論吧。


    這裡,我們必須明確:
    1、要對小波概念有著明確的理解。對諸如多解析度,時頻視窗與分析,框架,消失矩,模極大值,LIPSCHITZ指數等有著清醒地認識。
    2、小波不是萬能的,你必須考慮小波在此問題上的可行性,這點尤為重要