小波變換教程(1):基本原理

張無忌發表於2016-06-15

小波理論的基本概念及概述(第二版)

小波變換教程(1):基本原理

歡迎閱讀此份關於小波變換的入門教程。小波變換是一個相對較新的概念(其出現大約是在20世紀80年代),但是有關於它的文章和書籍卻不少。這其中大部分都是由數學專業人士寫給其他同行看的,不過,仍然有大量數學專家不知道其他同行們討論的是什麼(我的一個數學教授就承認過)。換言之,大多數介紹小波變換的文獻對那些小波新手們來說用處不大(此為個人觀點)。

我剛開始接觸小波變換的時候,曾經為了搞清楚小波變換這個這個神奇的世界到底發生了什麼而苦苦掙扎,因為在這個領域的入門教材非常少。因而,我決定為新手們寫一份教程。我自認為也是一個新手,必須承認,我也有很多理論細節沒有弄清楚。不過,就工程應用而言,我認為弄清楚所有的理論細節大可不必。

這份教程將試著介紹一些小波理論的基本原理,並且不會給出這些原理和相關公式的證明,因為這份教程的目標讀者暫時還不需要知道這些。不過,感興趣的讀者可以參閱引用的文獻以便了解更深入的內容。

此篇文件假定你沒有任何相關知識背景。要是有的話,請跳過以下內容,這些對你而言可能都是顯然的。

要是你發現教程裡有任何前後不協調或不正確的內容,請聯絡我。我很樂於收到關於教程的任何評論。

變換…啥?

首先,為什麼需要變換,或者說到底什麼是變換?

為了獲取在原始訊號中不易獲得的資訊,往往要對訊號進行數學變換。以下篇幅均假定時域內訊號為原始訊號,經過數學變換後的訊號為處理訊號。

可用的變換有很多種,其中,傅立葉變換大概是目前最流行的。

實際中,多數訊號的原始形式都是時域訊號,也即不論如何測得的,訊號總是關於時間的函式。換言之,繪製訊號的圖形時,一個軸代表時間(自變數),另一軸代表訊號幅值(因變數)。在時域內作圖,便可得到訊號的時-幅表示。在多數訊號處理有關的應用場景中,這種表示並不是最好的表示。很多時候,最易分辨的資訊往往隱藏在訊號的頻率成分中。訊號的頻譜是指訊號中的頻率分量(或譜分量),其表示的是訊號中存在哪些頻率成分。

直覺上,我們都知道頻率是跟事物的變化率有關的量。如果一樣東西(專業術語應該為數學量或物理量)變化得很快,則它的頻率就高;變換得慢,或者說變化得很平滑,則它的頻率就低。如果該量保持不變,則其頻率為零,或者說沒有頻率。例如,日報的頻率就比月刊高(因為日報出版快)。

頻率用“迴圈次數/秒”,或者用更常用的“赫茲”來衡量。例如,在美國,日常生活中所用交流電的頻率是60Hz(世界上其他一些地區是50Hz)。這意味著,如果我們想要繪製電流變化曲線,得到的將是1秒內往復50次的正弦波。看下面幾張圖,第一幅圖中是頻率是3Hz的正弦訊號,第二幅是頻率10Hz的,第三幅則是頻率50Hz,對比下吧。

小波變換教程(1):基本原理

那麼怎樣測量頻率,或者說怎樣得到一個訊號中所含的頻率成分呢?答案是傅立葉變換(FT)。對時域訊號做傅立葉變換,就會得到訊號的頻譜。也就是說,此時我們繪製訊號圖形的話,一個軸是頻率,另一個軸是頻率分量的幅值。所得影象將告訴我們訊號中包含的各種頻率成分分別有多少。

頻率軸從零開始,直至正無窮。每個頻率都對應一個幅值。例如,如果我們對房間所用的電流訊號做傅立葉變換,頻譜圖中在50Hz處會出現尖峰,其它頻率對應的幅值則為零,因為訊號中只包含了50Hz的頻率分量。然而,很少有訊號的傅立葉變換是如此簡單的。實際中的訊號大都包含多個頻率分量。50Hz訊號的傅立葉變換如下圖所示:

小波變換教程(1):基本原理

圖 1.4 50 Hz 訊號的傅立葉變換

注意,圖1.4給出了上下兩張圖,下圖顯示的其實是上圖的前半部分。這是因為實值訊號的頻譜圖是左右對稱的,這點暫時不理解也無妨。上圖能夠看出這一特性。不過,由於後一半對稱部分只不過是前一半圖形的映象,並未提供額外資訊,因此,這部分經常不畫出來。下文中出現的多數頻譜圖,我將只繪出前半部分。

為什麼需要頻率資訊?

通常,一些在時域中不易看出的資訊很容易在頻域中觀察到。

看一個生物訊號的例子。設想我們正在觀察一個心電訊號。心臟專家一般都熟知典型的健康人心電圖的形狀。與這些典型形狀存在顯著偏差往往是疾病的徵兆。

一些病徵在時域表示的心電訊號中並不明顯。過去,心臟專家一般用記錄在磁帶上的時域心電圖來分析心電訊號。最近,新型的數字心電記錄儀/分析儀可以利用心電圖的頻域資訊來判斷病徵是否存在。對心電訊號的頻率成分進行分析能使他們更容易的診斷病情。

上面只是一個說明頻率成分作用的簡單例子。當前,傅立葉變換已經被用於不同的領域,涵蓋了工程領域的各個分支。

儘管傅立葉變換可能是使用最多的(特別在電氣工程領域),但它並不是唯一的變換。許多其他的變換也常為工程師和數學家們所用,如希爾伯特變換、短時傅立葉變換(下文會有更多介紹)、魏格納分佈和雷登變換,當然還有教程的主角——小波變換,而這些也僅是工程師和數學家們所用變換中的一小部分。每種變換都有其應用領域,也有其優缺點,小波變換也不例外。

為了更好地理解為什麼需要小波變換,我們需要更深刻地認識傅立葉變換。傅立葉變換是一種可逆變換,即它允許原始訊號和處理訊號之間互相變換。但是,在任意時刻只有一種訊號形式是可用的。也就是說,在時域訊號中不包含頻率資訊,而經過傅立葉變換後的訊號則不包含任何時間資訊。說到這,頭腦裡很自然地會提出一個問題,為什麼需要同時知道時間和頻率資訊呢?

我們馬上就會知道,答案是具體問題具體分析。回想一下,傅立葉變換給出了訊號中的頻率資訊,即它可以告訴我們原始訊號包含各個頻率成分到底有多少,但是並未告訴我們某個頻率訊號何時出現。對於所謂的平穩訊號,這些資訊並不需要。

讓我們進一步探討一下平穩的概念,因為它在訊號分析中具有重要意義。如果訊號中的頻率分量不隨時間變化,則稱這類訊號為平穩訊號。平穩訊號中的頻率分量一直保持不變,那麼,自然無需知道頻率分量是何時出現的,因為所有的頻率分量出現在訊號的每一刻!!!

以如下訊號為例:

\( x(t)=cos(2picdot10t)+cos(2picdot25t)+cos(2picdot50t)+cos(2picdot100t) \)

這是個平穩訊號,因為任何時刻都包含10,25,50和100Hz的頻率。訊號的圖形如下: 小波變換教程(1):基本原理

圖 1.5

下圖為它的傅立葉變換:

小波變換教程(1):基本原理

圖 1.6

圖1.6中的上圖是圖1.5中訊號的頻譜圖,下圖為上圖的放大,給出了我們關注部分的頻率範圍。注意四個頻率10,25,50和100Hz的頻譜分量。

與圖1.5中的訊號不同,下圖所示的就是一個非平穩訊號。圖1.7中,訊號的頻率隨著時間一直在變化,這種訊號稱為線性調頻訊號,是一種非平穩訊號。

小波變換教程(1):基本原理

圖 1.7

讓我們再看一個例子,圖1.8繪出的是一個包含四個頻率分量的訊號,它們分別在不同時刻出現,因此這是一個非平穩訊號。0至300ms時是100Hz的正弦波,300-600ms時則是50Hz的正弦波,600-800ms時是25Hz的正弦波,最後的200ms內是10Hz正弦波。

小波變換教程(1):基本原理

圖 1.8

下圖是它的傅立葉變換:

小波變換教程(1):基本原理

圖 1.9

不要介懷圖中的那些小波紋,這是由訊號中頻率突變引起的,在這裡並不重要。注意,高頻分量的幅值比低頻分量大,這是因為高頻訊號(300ms)比低頻訊號(200ms)持續時間更長。(頻率分量幅值的精確值並不重要)。

除了那些波紋,圖中的一切看起來都是正確的。頻譜圖有四個尖峰,對應原始訊號中的四個頻率分量,幅值也差不多是合理的…沒錯

錯!

當然了,也不全錯,但也不全對。對圖1.5中的訊號,考慮如下問題:各個頻率分量都是在什麼時刻出現的?

答案是

在所有時刻!還記得平穩訊號嗎,所有頻率分量在訊號的整個持續時間內一直存在。10Hz的頻率分量一直存在,50Hz的分量也是,100Hz的分量依然是。

現在,讓我們來考慮一下圖1.7或1.8中的非平穩訊號。

各個頻率分量都是在什麼時刻出現的?

對於圖1.8中的訊號,我們知道,第一個時間區間內出現的是頻率最高的分量,最後一個時間區間內出現的是頻率最低的分量。圖1.7中,訊號的頻率成分隨時間連續變化,因此,對這些訊號來說,各個頻率分量並未在所有時刻一直存在。

現在,對比圖1.6和1.9,兩幅頻譜圖的相似之處是顯而易見的。兩幅圖中都包含了四個相同的頻率分量,即10,25,50和100Hz。除了一些小波紋和兩幅圖中各頻率分量的幅值(這些幅值可以做歸一化處理)有所區別,兩幅頻譜圖幾乎是相同的,儘管兩個訊號在時域內差別很大。兩個訊號都包含了相同的頻率分量,但是前者中,各頻率分量存在於訊號的整個週期內,而後者的頻率分量則分別存在於不同的時間區間內出現。那麼,為什麼兩個完全不同的訊號,頻譜圖形這麼相像呢?回想一下,傅立葉變換僅僅給出了訊號的頻譜分量,但卻沒有給出任何關於這些分量出現時間的資訊。因此,傅立葉變換並不適用於分析非平穩訊號,但有一個例外:

如果我們僅關心訊號中包含哪些頻率分量而不關心它們出現的時間,傅立葉變換仍可用於處理非平穩訊號。但是,如果我們想知道頻率分量出現的確切時間(區間),傅立葉變換就不再適用了。

實際應用中,由於平穩的和非平穩的訊號都很多,很那將二者區分開來。例如,幾乎所有的生物訊號都是非平穩的,包括廣為人知的心電圖(ECG)、腦電圖(EEG)和肌電圖(EMG)。

再次注意,傅立葉變換僅能給出訊號中包含哪些頻率分量,僅此而已。

當需要對頻譜分量進行時間定位時,我們就需要一個可以給出訊號時-頻表示的變換。

終極解決方案:小波變換

小波變換是這種型別的變換,它提供了訊號的時頻表示(還有一些變換也可給出這些資訊,如短時傅立葉變化,魏格納分佈等等)。

特定的頻譜分量在特定的時刻出現往往具有特殊的意義。這些情況下,瞭解這些特定的頻譜分量出現的時間區間會非常有用。例如,在腦電圖中,事件相關電位的延遲時間需要特別注意(事件相關電位是指大腦對某一特定刺激的反應,類似閃光燈,延遲時間是從接受刺激到作出反應之間耗費的時間)。

小波變換能夠同時提供時間和頻率資訊,因此給出了訊號的一種時頻表示。

小波變換到底是如何奏效的完全是另外一個故事,需要在理解了短時傅立葉變換(STFT)之後再做解釋。小波變換的出現是為了改進短時傅立葉變換(STFT)。STFT將在教程的第II部分詳細闡述。現在暫時可以認為小波變換是為了解決STFT中遇到的有關解析度的問題而發展起來的。

為了長話短說,我們略過時域訊號處理中有關於各種高通和低通濾波器的相關內容。這些濾波器用來過濾訊號中的低頻和高頻部分分量。這類方法被重複實施,每次都會從訊號中濾除一些頻率分量。

這裡解釋一下濾波是如何奏效的:設想我們有一個訊號,其中頻率最高的分量為1000Hz。第一步,我們通過高通和低通濾波器把訊號分成兩個訊號(濾波器必須滿足某些特定的條件,即容許條件),結果得到了同一訊號的兩個部分,0-500Hz的部分(低通部分)和500-1000Hz的部分(高通部分)。

然後,我們可以拿其中一部分(通常是低通部分)或者二部分,然後對每一部分繼續進行相同的操作。這個過程叫做分解。

假設我們拿低頻部分做了處理,現在我們就有了3組資料,分別為訊號在0-250Hz,250-500Hz和500-1000Hz的部分。

然後再對低通部分的訊號繼續做高通和低通濾波處理;現在我們就有了4組資料,分別為0-125Hz,125-250Hz,250-500Hz和500-1000Hz。我們持續進行這個過程,直到將訊號分解到一個預先定義的水平。這樣我們就有了一系列訊號,這些訊號實際上都來自相同的訊號,但是每一個都對應不同的頻帶。我們知道每個訊號對應的頻段,如果我們將這些訊號放在一起畫出三維圖,一個軸表示時間,頻率在另外一個軸上,幅度在第三個軸上。這幅圖會告訴我們各個頻率出現哪些時刻(這裡有一個問題,叫做“不確定性原理”,即我們不能精確地知道哪個頻率出現在哪些時間點,我們僅能知道某一頻段出現在哪一時間區間內,後文中將有更多介紹)。

不過,我仍想簡單地解釋一下:

不確定性原理最早由海森堡發現並闡述,其表述為:移動粒子的動量和位置不可同時確定。在我們這個課題裡則是這樣:

時-頻平面內的一個確定的點上,訊號的頻率和時間資訊不能同時知道。換句話說:在任一時刻,我們無法確定存在哪個頻譜分量。我們最多隻能做到,在一個給定的時間區間記憶體在哪些頻譜分量。這是一個解析度的問題,也是研究者們從快速傅立葉變換(STFT)切換到小波變換(WT)的主要原因。快速傅立葉變換的解析度隨時間是固定不變的,而小波變換則能給出可變的解析度:

高頻訊號在時域內很好分辨,低頻訊號則在頻域內容易分辨。這意味著,相對於低頻分量,高頻分量更容易在時域內定位(有更小的相對誤差)。反而言之,低頻分量更容易在頻域內定位。看下面的網格圖:

對上圖的解釋是:最上面一行表明,高頻訊號有更多的取樣點和較短的取樣間隔。就是說,高頻訊號更容易在時域內分辨。最下面一行是對低頻訊號的取樣,描述訊號的特徵點較少,因此,低頻訊號在時域內並不容易分辨。

在離散時間的情形中,訊號的時間解析度與先前相同,但是現在,頻率資訊的解析度在每一個階段都不同。注意到,低頻訊號更容易在頻域內分辨,高頻則不然。注意,相鄰頻率分量的間隔是如何隨頻率增高而增大的。

下面是連續小波變換的例子:

我們構造一個正弦訊號,具有兩個頻率成分,分別處在兩個不同的時間區間:

注意低頻分量先出現,然後是高頻分量。

小波變換教程(1):基本原理

圖 1.10

小波變換教程(1):基本原理

圖 1.11

注意,上圖中代表頻率的軸被標記為了“尺度”。“尺度”的概念將會在後續章節進行闡述,但這裡需要注意的是,尺度是頻率的倒數,即尺度越大頻率越低,尺度越小頻率越高。因此,圖中的小的峰值對應的是訊號中的高頻分量,大的峰值對應的是訊號中的低頻分量(在時域內,低頻分量先於高頻分量出現)。

你可能被圖中的頻率解析度搞暈了,因為高頻訊號似乎也有很好的頻率解析度。但請注意,高頻(低尺度)訊號處解析度較好的是尺度解析度,而非頻率解析度。尺度解析度高意味著頻率解析度低,反之亦然。更多相關內容將在後續部分介紹。

未完,待續…

以上是此份教程的第一部分,我試著給出訊號處理的簡要概述——傅立葉變換和小波變換

初稿:1994年,11月
修改版:1995年,7月23日
第二版:1996年,6月5日

相關文章