IIR濾波器是無限衝擊響應濾波器,
其優點:
1. 採用模擬原型濾波的標準設計,容易理解。
2. 可以用低階設計實現,並且可以高速執行
3. 對於相同公差設計方案,其階數比FIR短。
4. 可以採用閉環設計
其缺點:
1. 非線性相位
2. 可能會出現極限環
3. 多頻道設計困難,只能設計低通、高通和帶通
4. 反饋會引入不穩定
5. 非常難得到高速流水線設計
IIR濾波器可以模擬4類原型濾波器:ButterWorth、ChebyShevI、ChebyShevII、橢圓 。
典型的二階濾波器函式公式:
H(Z)=(b0+b1*Z^-1+b2*Z^-2)/(a0+a1*Z^-1+a2*Z^-2);
典型理想IIR輸出公式:
Y(n)={b0x(n)+b1x(n-1)+...+bmx(n-m)}-{a1x(n-1)+a2x(n-2)+...+amx(n-m)}
對於二階IIR濾波器,輸出公式
Y(n)=b0xn+b1xn-1+b2xn-2-(a1xn-1+a2xn-2) 式1
式1中a1,a2,b0,b1,b2是二階濾波器IIR係數,其決定濾波器的頻響應曲線以及增益。如何求a0,a1,a2,b0,b1,b2?
對於一個二階IIR濾波器,標準的技術指標如下:
1. 中心頻率f0;(中心頻率: 通常定義為帶通濾波器(或帶阻濾波器)的兩個3 dB點之間的中點,一般用兩個3 dB點的算術平均來表示 。其實低通和高通濾波器也有中心頻率 只不過它的定義和帶通就不一樣了,它就等於我們通常說的截止頻率,但我們在說低通高通時,都是用截止頻率,而幾乎不用其中心頻率。不過在做歸一 化時就會有這個概念了。那時可以看到,低通高通的歸一化截止頻率=截止頻率/中心頻率=1. )
2. 取樣頻率fs;
3. 增益db;
4. 品質因數;
根據上面技術指標,可以確定二階IIR濾波的低通,帶通或高通的係數
根據上面的技術指標,可以確定以下幾個通用計算量:
A=sqrt[10^(db/20)];
Omega=2*Pi*f0/fs;
sin=sin(omega);
cons=cos(omega);
alpha=sin(2*Q);
所以二階IIR高通濾波器係數的計算:
b0=(1+cos)/2;
b1=-(1+cos);
b2=(1+cos)/2;
a0=1+alpha;
a2=1-alpha;
二階IIR低通濾波器係數的計算:
b0=(1-cos)/2;
b1=1-cos;
b2=(1-cos)/2;
a1=-2*cos;
二階IIR帶通濾波器的係數的計算:
b0=sin/2=Q*alhpa;
b1=0;
b2=-sin/2=-Q*alpha;
IIR濾波器是無限衝擊響應濾波器,
其優點:
1. 採用模擬原型濾波的標準設計,容易理解。
2. 可以用低階設計實現,並且可以高速執行
3. 對於相同公差設計方案,其階數比FIR短。
4. 可以採用閉環設計
其缺點:
1. 非線性相位
2. 可能會出現極限環
3. 多頻道設計困難,只能設計低通、高通和帶通
4. 反饋會引入不穩定
5. 非常難得到高速流水線設計
IIR濾波器可以模擬4類原型濾波器:ButterWorth、ChebyShevI、ChebyShevII、橢圓 。
典型的二階濾波器函式公式:
H(Z)=(b0+b1*Z^-1+b2*Z^-2)/(a0+a1*Z^-1+a2*Z^-2);
典型理想IIR輸出公式:
Y(n)={b0x(n)+b1x(n-1)+...+bmx(n-m)}-{a1x(n-1)+a2x(n-2)+...+amx(n-m)}
對於二階IIR濾波器,輸出公式
Y(n)=b0xn+b1xn-1+b2xn-2-(a1xn-1+a2xn-2) 式1
式1中a1,a2,b0,b1,b2是二階濾波器IIR係數,其決定濾波器的頻響應曲線以及增益。如何求a0,a1,a2,b0,b1,b2?
對於一個二階IIR濾波器,標準的技術指標如下:
1. 中心頻率f0;(中心頻率: 通常定義為帶通濾波器(或帶阻濾波器)的兩個3 dB點之間的中點,一般用兩個3 dB點的算術平均來表示 。其實低通和高通濾波器也有中心頻率 只不過它的定義和帶通就不一樣了,它就等於我們通常說的截止頻率,但我們在說低通高通時,都是用截止頻率,而幾乎不用其中心頻率。不過在做歸一 化時就會有這個概念了。那時可以看到,低通高通的歸一化截止頻率=截止頻率/中心頻率=1. )
2. 取樣頻率fs;
3. 增益db;
4. 品質因數;
根據上面技術指標,可以確定二階IIR濾波的低通,帶通或高通的係數
根據上面的技術指標,可以確定以下幾個通用計算量:
A=sqrt[10^(db/20)];
Omega=2*Pi*f0/fs;
sin=sin(omega);
cons=cos(omega);
alpha=sin(2*Q);
所以二階IIR高通濾波器係數的計算:
b0=(1+cos)/2;
b1=-(1+cos);
b2=(1+cos)/2;
a0=1+alpha;
a2=1-alpha;
二階IIR低通濾波器係數的計算:
b0=(1-cos)/2;
b1=1-cos;
b2=(1-cos)/2;
a0=1+alpha;
a1=-2*cos;
a2=1-alpha;
二階IIR帶通濾波器的係數的計算:
b0=sin/2=Q*alhpa;
b1=0;
b2=-sin/2=-Q*alpha;
a0=1+alpha;
a1=-2*cos;
a2=1-alpha;