剛接觸數字濾波器概念的時候,從頻域理解是最直觀的。但是在很多時候,比如說大部分的教科書在描述數字濾波器的時候,往往是從時域描述開始的。在時域來描述濾波器的工具是卷積。
卷積可以說是數字信號處理中最重要也最基本的概念之一了,但由於其更多依賴數學公式,因此也往往不易被理解。要在時域理解濾波器的工作過程,其實質就是理解卷積的工作過程。
卷積的概念通常可以從兩個方面來理解。一是從輸入信號的角度來看,卷積的過程相當於是把一個相對復雜的信號分解成多個單位沖激信號之和,輸出則是多個單位沖激響應之和。單位沖激信號是最簡單的信號,每個信號都可以分解成不同幅度及不同延時的單位沖激信號之和,根據線性時不變系統的特征,不同幅度及不同延時的單位沖激信號其對應的系統響應是對應幅度及延時的單位沖激響應。對這些不同幅度及延時的單位沖激響應求和即得到系統的輸出,及卷積的結果。這種思路的實質是將一個相對復雜的信號分解為相對簡單的信號,再利用相對簡單的信號其系統響應也相對簡單的特點,在線性時不變系統的框架下,在輸出端再重新相加得到最終的結果。這種“分解——分析——疊加”的思路是數字信號處理最基本的思路之一。
卷積的另一種是從輸出信號的角度看,每個輸出信號是對輸入信號乘以不同的權值,然后累加的結果。我們通常的數學描述多是從這個角度來看的。
初學卷積概念的時候,很不好理解為什么要將一個信號翻轉呢?實際上,從輸入信號的角度看,對單位沖激響應的翻轉是很自然的。假定輸入信號為x(m), m="0",1,…,M-1,單位沖激響應為h(n), n="0",1,…,N-1。對x(0)來說,對輸出端造成的系統響應是x(0)h(n),即是說,x(0)造成的系統響應僅僅是對單位沖激響應乘上了一個幅度,這個幅度值為x(0),響應的長度為N。對x(1)來說,因為延遲了單位時間,因此除考慮幅度的影響外,還要考慮延時的影響,根據線性時不變系統的特性可知,此時的系統響應為x(1)h(n-1)。同理,對任意一個m值來說,其對應的系統響應為x(m)h(n-m)。由此可以看出,在計算卷積時要將h(n)先翻轉實在是最自然不過的事。最終的系統響應是要把所有上述響應相加,這正好與通用的卷積公式是完全一樣的。
再回到數字濾波器,在時域的理解即是輸入信號與單位沖激響應的卷積,也即是說,當前時刻的濾波結果,是對當前及之前若干個輸入信號加上不同系數的權值,然后再累加的結果。權系數的不同,代表了不同的濾波特性。