函數 > 信號處理 > 數位濾波 > 範例:IIR 濾波器設計
  
範例:IIR 濾波器設計
使用函數 besselbuttercheby1cheby2iirlowiirhighiirpassiirstop,為指定類型的類比低通濾波器產生係數。將係數當作引數用在其中一個 iir 函數,這些函數會縮放及執行雙線性轉換,以產生所需之頻率回應。
* 
就具有偶數 N 階的低通及高通濾波器而言,所有區段皆為第 2 階,每欄有三個係數。若順序為奇數,則最後一個區段即為第一階。就 bandpass 及 bandstop 濾波器而言,轉換成數位濾波器會加倍每個區段的階數。
函數 gainresponse 接受這些函數所產生的係數陣列格式。乘以區段增量可求解複數增量,將每個區段的回應投入下一個區段可獲得回應。
這些函數實行 Samuel Stearns 與 Ruth David 合著之 Signal Processing Algorithms (信號處理演算法) (Prentice-Hall, Inc.) 中第 7 章的演算法。
低通契比雪夫類型 I 濾波器
1. 定義階數、波紋參數及截止頻率。
按一下以複製此運算式
按一下以複製此運算式
按一下以複製此運算式
2. 使用函數 iirlowcheby1 產生濾波器係數。
按一下以複製此運算式
按一下以複製此運算式
* 
濾波器 A 有四個二次方程式區段。
3. 繪製增量量值,並使用水平標記標示波紋級數。
按一下以複製此運算式
按一下以複製此運算式
按一下以複製此運算式
按一下以複製此運算式
因為轉移函數被當成二次因式的乘積,所以在複數平面上繪製極點就變得很容易。
4. 求解分母每個因數的複數根。
按一下以複製此運算式
* 
濾波器 A 轉移函數的極點,是由 A 奇數欄指定係數的二次方程式根,二次項係數擺在最前面。
5. 求解分母每個因數的根。
按一下以複製此運算式
按一下以複製此運算式
6. 填入共軛根。
按一下以複製此運算式
7. 顯示轉移函數極點,並繪製在複數平面上。新增單位圓繪線以供參照。
按一下以複製此運算式
按一下以複製此運算式
按一下以複製此運算式
按一下以複製此運算式
繪圖顯示 8 個極點全都在單位圓內,所以濾波器一如要求的穩定。
8. 使用函數 max 以數值方式核對所有八個點都落於單位圓內。
按一下以複製此運算式
9. 應用 response 函數,然後再繪製濾波器 A 的脈衝回應。給它長度為 1 的向量,代表作為第一引數的單位脈衝。
按一下以複製此運算式
按一下以複製此運算式
按一下以複製此運算式
按一下以複製此運算式
按一下以複製此運算式
回應雖然無限長,但在前 80 個項數之後會降至接近於 0。穩定狀態可保證回應的絕對值和有界限。
低通契比雪夫類型 II 濾波器
1. 設定類型 II 契比雪夫類比濾波器的參數。
按一下以複製此運算式
按一下以複製此運算式
按一下以複製此運算式
2. 使用函數 tan 計算縮放。
按一下以複製此運算式
* 
有關於此項運算的理論,請參閱 Stearns 及 David 的著作;此數恆大於 1。
3. 使用 iirlowcheby2 函數計算截止頻率 f=pass 的第 5 階低通 IIR 濾波器係數。
按一下以複製此運算式
按一下以複製此運算式
按一下以複製此運算式
* 
係數矩陣有兩個二次區段及一個線性區段。
4. 使用函數 gain 計算每個頻率的增量,然後繪製頻率回應。使用標記顯示 passstop 頻率,以及衰減位準的逆轉換。
按一下以複製此運算式
按一下以複製此運算式
回應圖顯示與設計條件的相符程度。這些標記有助於查看 stopband 是否在所需的位置開始 (stop1/atten 線相交處),且 passband 在截止頻率右側結束。
5. 使用 iirlowcheby2 函數重複上述設計,但使用較大的衰減。
按一下以複製此運算式
按一下以複製此運算式
按一下以複製此運算式
按一下以複製此運算式
按一下以複製此運算式
* 
較高的衰減需要較高階的濾波器,才能將轉移帶降至所需的寬度。嘗試 5 階及 8 階的濾波器,並比較結果。
6. 繪製第 5 階濾波器的增量 (以 dB 為單位)。使用標記標示通過頻率及所需的 30 dB 衰減。
按一下以複製此運算式
按一下以複製此運算式
7. 繪製第 8 階濾波器的增量 (以 dB 為單位)。使用標記標示通過頻率及所需的 30 dB 衰減。
按一下以複製此運算式
按一下以複製此運算式
當 -30db 線以下的增量類似於兩個濾波器的停止頻率時,第 8 階濾波器的增量在截止頻率之後仍會維持平坦。這表示需有 8 階濾波器,才可達到所要的衰減 1000。
計算縮放係數
下列方程式顯示高通、bandpass 及 bandstop 濾波器的縮放係數定義。
高通濾波器:
按一下以複製此運算式
Bandpass 濾波器:
按一下以複製此運算式
參數 pass1pass2 是 passband 的下緣及上緣,而參數 stop1stop2 則是兩個 stopband 的邊緣。
Bandstop 濾波器:
按一下以複製此運算式
參數 pass1pass2 是兩個 passband 的邊緣,而參數 stop1stop2 則是 stopband 的下緣及上緣。
1. 定義 bandpass 濾波器的參數:
按一下以複製此運算式
按一下以複製此運算式
按一下以複製此運算式
按一下以複製此運算式
按一下以複製此運算式
2. 使用上述參數計算 bandpass 濾波器的縮放。
按一下以複製此運算式
按一下以複製此運算式
3. 計算上述 bandpass 濾波器的係數。
按一下以複製此運算式
按一下以複製此運算式
按一下以複製此運算式
4. 繪製回應 (以 dB 為單位) 並顯示 stop 及 pass 標記。
按一下以複製此運算式
右 stopband 邊緣精準落在正確位置,但左 stopband 邊緣略高於目標頻率值。這表示此轉移帶比所需要的窄。
低通 Bessel 濾波器
Bessel 濾波器會以單段傳回。
1. 設定 Bessel 濾波器參數。
按一下以複製此運算式
按一下以複製此運算式
按一下以複製此運算式
* 
刻度參數可用以控制截止頻率的增量。
2. 使用 bessel 函數計算 Bessel 濾波器係數。
按一下以複製此運算式
按一下以複製此運算式
按一下以複製此運算式
3. 繪製增量並顯示截止頻率的增量。
按一下以複製此運算式
按一下以複製此運算式
按一下以複製此運算式
4. 使用縮放係數,以較低的截止頻率增量換取 stopband 增加衰減。
按一下以複製此運算式
按一下以複製此運算式
R 是對應到類比係數 B1 的類比轉移函數。
5. 使用起始估值為 1 的 root 函數,求解截止頻率上類比轉移函數 R 等於 0.8 的點。
按一下以複製此運算式
按一下以複製此運算式
按一下以複製此運算式
按一下以複製此運算式
按一下以複製此運算式
按一下以複製此運算式
縮放標記通過 0.8 上的增量曲線。
* 
估值必須是正數,才能產生正刻度值。
6. 使用計算過的縮放係數,重新計算數位濾波器係數。
按一下以複製此運算式
按一下以複製此運算式
7. 繪製新的頻率回應,並顯示截止頻率的增量。
按一下以複製此運算式
按一下以複製此運算式
繪圖顯示新的頻率回應,對超過截止頻率的零會顯示較急劇的轉移。使用縮放係數會導致 stopband 中的衰減增加。
Bandpass、Bandstop 及高通巴特沃斯濾波器
iirpassiirstop 函數會加倍輸入係數的階數,所以第 4 階的類比係數會產生第 8 階的濾波器。
Bandpass 巴特沃斯濾波器
1. 設定濾波器參數。
按一下以複製此運算式
按一下以複製此運算式
按一下以複製此運算式
2. 計算係數。
按一下以複製此運算式
3. 繪製回應。使用垂直標記顯示低頻與高頻。
按一下以複製此運算式
按一下以複製此運算式
此回應顯示介於 f_lof_hi 之間的頻率可通過。其他所有的頻率都會篩除。
Bandstop 巴特沃斯濾波器
1. 設定濾波器階數。
按一下以複製此運算式
2. 使用 iirstopbutter 函數計算係數。
按一下以複製此運算式
3. 繪製回應。使用垂直標記顯示低頻與高頻。
按一下以複製此運算式
按一下以複製此運算式
此回應顯示已停止介於 f_lof_hi 之間的頻率通過。但其他所有頻率皆可通過。
高通巴特沃斯濾波器
1. 設定濾波器階數。
按一下以複製此運算式
2. 使用 iirhighbutter 函數計算係數。
按一下以複製此運算式
* 
iirpassiirstop 函數不同的是,iirhigh 函數不會加倍輸入係數的階數。因此,階數值就像現在一樣傳送到 butter 函數。
3. 繪製回應。使用垂直標記顯示高頻。
按一下以複製此運算式
按一下以複製此運算式
此回應顯示高於 f_hi 的頻率可通過,其他所有的頻率都會篩除。