從名字上看,“無限衝激響應”和“有限衝激響應”的區別一定在“衝激響應”上。在之前的文章裏我們講到了衝激響應的概念,文章裏用被打了一巴掌(單位脈衝)後鼓起來的“包”來描述的衝激響應。
有些人的“包”幾分鐘可以消腫直至消失,就是有限衝激相應;有些人的“包”雖然會慢慢變小,但是永遠不會消失,就是無限衝激響應。
那麼問題來了,IIR和FIR數字濾波器有什麼區別?
區別1:結構形式
兩種濾波器最直觀的區別就體現在結構形式上。
這裏直接放公式了,公式並不難理解:
IIR的方程中,當前輸出y(n)是由當前輸入x(n)、過去輸入x(n-1)、x(n-2)...、過去輸出y(n-1)、y(n-2)...這三類值共同決定的。
而在FIR方程中,則沒有過去輸出這一項。
IIR的差分方程
FIR的差分方程
由於IIR的當前輸出受到以前輸出值的影響,所以它是有反饋的,或者說其輸出值是遞歸的;相對應的,FIR就是無反饋、非遞歸的。
需要注意的是,上述差分方程中的係數a和b不是單純的常數。
區別2:相位特性
濾波會引起相位延遲,爲什麼呢。首先看下圖:
圖1*圖2=圖3
其中三張圖分別是原始信號頻譜圖、濾波器頻譜圖和濾波後信號的頻譜圖。圖2可以是理想情況下的低通濾波器。圖1*圖2=圖3就是濾波在頻域上的表示過程(相乘),也很好理解。不過看到這裏大家會想起什麼?之前的文章裏提到過:頻域上相乘即時域上卷積。
暫且把這個卷積寫成y(k)=∑h(k)x(n-k)。(對於IIR,k取從0到n;對於FIR,k取從0到N-1)
也就是說對於輸出y(k),其值是由其之前N或n個輸入點共同決定的,這就是引起相位延遲的原因。
相位延遲
IIR爲非線性相位延遲,FIR爲線性相位延遲。即IIR的相位延遲會隨着輸入波形的變化而變化,而FIR的相位延遲爲一確定值。FIR的相位補償只需要對輸出結果平移即可,IIR的相位補償複雜一些,不過在matlab上實現同樣很容易。
區別3:穩定性、運算速度、運算誤差設計難度
FIR的極點全部在原點(z變換),是穩定的。IIR不一定穩定。
FIR運算速度快,IIR運算速度慢
FIR運算誤差小,IIR由於有反饋,可能會產生極限環。
FIR設計難度高,需要藉助計算機程序完成,IIR設計難度低。
文章如要轉載請私信與我聯繫,並註明來源知乎專欄與信號處理有關的那些東東作者Mr.括號。
歡迎關注我的公衆號“括號的城堡”,微信號爲“khscience”,會有更多有趣的東西分享。