7 數字濾波器的結構

有人可能會很糾結,濾波不就是輸入信號和一組抽頭係數做卷積麼,濾波器的結構是來幹什麼的?

總體上說,是爲了減少抽頭係數和時延器。比如,由於某些特殊要求,可以使得濾波器的抽頭的係數可以有某種對稱性質,(比如線性相位的FIR濾波器的係數就是這樣),爲了節省乘法單元,就可以使用一些特殊的結構來巧妙地實現原來較多的運算。再比如,對於IIR濾波器,可以讓輸入信號的時延與反饋信號的時延公用時延器。

先說FIR,FIR的最大特點在於它可以做成線性相位的。當你需要使用信號的相位信息時,這就很關鍵了。FIR線性相位濾波器,可以按照,初相(=0或=π),階數(奇數或者偶數)組合成4類。最終的結果是,當濾波器爲奇數(或者偶數)階,衝擊響應關於N/2奇對稱(或者偶對稱)。通過觀察它們的頻率特性,可以看到它們的頻率響應會在某些部分爲0,因此當濾波器如果在這個頻段上爲通帶時,就不能選擇響應的結構。

對於FIR濾波器,還有一種特殊的結構,稱爲頻率採樣結構。它的特點是由連續的頻譜推出採樣點上的頻率結構,然後反變換出時域係數,最後利用時域係數,求Z變換獲取頻率採樣結構。最終是由N個1階IIR並聯而成,這個結構的最大問題在於,由於量化誤差,有可能導致濾波器不穩定。

說完了FIR,再來說IIR。由頻率採樣結構可以看出,IIR濾波器有可能不穩定。不僅如此,IIR濾波器還會面臨不能作出線性相位的問題,這限制了它的應用,但是IIR的好處在於,對於同樣的幅度特性,它的階數要比FIR少很多,所以如果不需要考慮相位時,IIR也是不錯的選擇。IIR的主要類型有直接(I,II,轉置),並聯、級聯以及格型這麼幾種。其中直接型就是按照系統函數實現的,只不過在公用延遲單元上略有區別。級聯是將系統函數寫成連乘的形式,依次實現每個小的系統函數,並聯是將系統函數寫成部分分式展開的形式,依次實現各個小的系統函數。格型濾波器則是完全由最優濾波器的準則推導出來的結構,跟前3個不是1種門路。

不論是FIR還是IIR不同的濾波器對於有限字長效應的敏感度是不同的,這裏先不討論這個問題,先討論不同結構之間的轉化。先看代碼:

clear all;
close all;
clc;
% 直接結構
b = 5*[1 -2.4412 2.4412 -1];
a = [1 -1.7728 1.4464 -0.405];
% 級聯結構
[sos,g] = tf2sos(b,a);
% 並聯結構
[r1,p1,k1] = residue(b,a);
R1 = [r1(1),r1(2)];
P1 = [p1(1),p1(2)];
[b1,a1] = residue(R1,P1,0);

% 格型結構係數
[v,k] = tf2latc(b,a);

由於FIR與IIR的區別在於分子部分(a)是否爲1,所以matlab並沒有爲這倆種濾波器分別設計相關的函數。下面對於其中原理進行解釋:、

1.直接-》級聯的時候,sos是二階子系統矩陣它是一個n*6的矩陣,其中每1行代表了1個二階子系統的b0,b1,b2,a0(恆等於1),a1,a2的係數。至於爲什麼要搞2階子系統,是因爲很多時候,寫成連乘以後,濾波器的係數就成了複數,這無疑增大了運算量,所以,通過將復係數合併爲2階的實係數,可以避免這個麻煩。

2.直接-》並聯時,residue實際上是求部分分式展開的。但是如果反過來用,就是將站來的部分分式合併爲多項式相除的樣子。通過[r1,p1,k1] = residue(b,a);,發現r1,r2,p1,p2都是複數,所以將它們合併成1個二階子系統。

3.對於格型結構,沒啥花樣,但是要注意的是a的係數必須用a(1)歸一化。


至於有限字長效應對於不同濾波器結構的影響,下次再討論吧。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章