無限脈衝響應濾波器,簡稱IIR數碼濾波器(英語:infinite impulse response filter),是數碼濾波器的一種。由於無限脈衝響應濾波器中存在反饋迴路,因此對於脈衝輸入訊號的響應是無限延續的。濾波器的任務是通過一定運算關係,改變輸入訊號的頻譜。數碼濾波器是利用計算機程序、專用晶片等軟、硬件改變數字訊號頻譜。如果要處理的是模擬訊號可以通過A/D在訊號形式上進行轉換,在利用數碼濾波器處理後經過D/A恢復為模擬訊號。
選頻數碼濾波器
利用選頻濾波器的特性可以提取有用的訊號頻率分量,這類濾波器適用輸入訊號中有用訊號頻帶與干擾訊號頻帶不同的情況。
選頻數碼濾波器設計過程一般歸納為以下三個步驟:
- 按照實際需求性能要求確定濾波器技術指標。
- 用一個因果穩定的系統函數IIR去逼近這個要求。
- 用一個有限精度的運算(軟、硬件)去實現這個傳遞函數
概述
無限脈衝響應濾波器的脈衝響應無限長,不像有限脈衝響應濾波器,所以有以下問題:
- 如何使能量集中在
附近。
- 如何正向Z轉換(forward Z transform)以及逆向Z轉換(inverse Z transform)為穩定。
能使用最小相位濾波器(minimum phase filter)來解決以上問題,使一無限脈衝響應濾波器為穩定且能量集中在
附近。
- 最小相位濾波器(minimum phase filter):所有的極點(poles)以及零點(zeros)都在單位圓以內。
- 最小相位濾波器為穩定(stable)且因果(causal),且最小相位濾波器的逆向(inverse)轉換也為穩定(stable)且因果(causal)。
![{\displaystyle H(z)=C{\frac {(z-z_{1})(z-z_{2})(z-z_{3})...(z-z_{R})}{(z-p_{1})(z-p_{2})(z-p_{3})...(z-p_{S})}}\,}](https://wikimedia.org/api/rest_v1/media/math/render/svg/b2185d792cb09eca9e90307743a6753a5b2e272d)
![{\displaystyle H^{-1}(z)=C^{-1}z^{S-R}{\frac {(1-p_{1}z^{-1})(1-p_{2}z^{-1})(1-p_{3}z^{-1})...(1-p_{S}z^{-1})}{(1-z_{1}z^{-1})(1-z_{2}z^{-1})(1-z_{3}z^{-1})...(1-z_{R}z^{-1})}}\,}](https://wikimedia.org/api/rest_v1/media/math/render/svg/63ac5288d5a3a5429b161665026bbdadfd1b0698)
- 其中
為
個零點,
為
個極點,
個零點和
個極點都在單位圓內。
![{\displaystyle H(z)=C{\frac {(z-z_{1})(z-z_{2})(z-z_{3})...(z-z_{R})}{(z-p_{1})(z-p_{2})(z-p_{3})...(z-p_{S})}}\,}](https://wikimedia.org/api/rest_v1/media/math/render/svg/b2185d792cb09eca9e90307743a6753a5b2e272d)
- 假設
在單位圓外。
![{\displaystyle H_{1}(z)=C{\frac {(z-z_{1})(z-z_{2})(z-z_{3})...(z-z_{R})}{(z-p_{1})(z-p_{2})(z-p_{3})...(z-p_{S})}}\times z_{2}{\frac {z-{\overline {(z_{2}^{-1})}}}{(z-z_{2})}}\,}](https://wikimedia.org/api/rest_v1/media/math/render/svg/02350a9034f20f78fcba500f300a5b3436fb2a26)
![{\displaystyle =z_{2}C{\frac {(z-z_{1})(z-{\overline {(z_{2}^{-1})}})(z-z_{3})...(z-z_{R})}{(z-p_{1})(z-p_{2})(z-p_{3})...(z-p_{S})}}\,}](https://wikimedia.org/api/rest_v1/media/math/render/svg/31179dd8cf0d3ddcf63388b8b5b32061fdeda0f4)
為最小相位濾波器(minimum phase filter),符合
且
和
只有相位不同。
- 另外,
稱為全通濾波器(all pass filter)。
- 無限脈衝響應濾波器為一個最小相位濾波器和一個全通濾波器串接(cascade):
![{\displaystyle H(z)=H_{mp}(z)H_{ap}(z)\,}](https://wikimedia.org/api/rest_v1/media/math/render/svg/39234bd2810fab4aa3e0d4a6d9101b56a32516d0)
- 其中
:無限脈衝響應濾波器,
:最小相位濾波器,
:全通濾波器。
特性
無限脈衝響應濾波器(IIR filter)的優點:
無限脈衝響應濾波器(IIR filter)的缺點:
- 脈衝響應(impulse response)為無限長:造成當輸入數碼訊號為有限長的時候,輸出數碼訊號會變成無限長。
- 比有限脈衝響應濾波器(FIR filter)較不易最佳化(optimize)。
- 不一定是穩定的(stable):因為Z轉換(Z transform)後所有的極點(pole)不一定都在單位圓內。
數碼濾波器設計原理
IIR數碼濾波器設計有以下幾種基本方法:
- 零、極點累試法:由於頻率響應在靠近集點頻處會出現峰值,在靠近零點頻率處會出現谷值,並且零、極點越靠近單位圓峰谷越明顯。所以在設計時通過不斷調整零、極點位置,達到設計標準,對要求不高的簡單濾波器,可以用此方法設計。
- 最優化設計:這種設計方法一般事先確定最好的推測,找出最好推測下誤差最小的系統函數H(z)。在得到最佳結果之前,因為設計需要大量反覆計算,所以必須用到CAD技術,而此類設計隨着技術發展,應用也越來越多。
- 用模擬濾波器理論設計數碼濾波器:利用模擬濾波器理論先設計模擬濾波器,得到其系統函數Ha(s)。然後經過一定的變換,得到滿足要求的數碼濾波器系統函數H(z)。這樣設計的優點是模擬濾波器設計理論成熟,有許多現成的公式、曲線、表格可以直接使用。並且在許多場合下就是用數碼濾波器代替模擬濾波器。這種由模擬濾波器設計數碼濾波器的方法,其實就是從s平面到z平面的映射變換,對這個變換基本要求是:
- 數碼濾波器的頻率響應要保持模擬濾波器的頻率響應,所以s平面的虛軸jΩ應當映射到z平面的單位圓ejw上。
- 模擬濾波器的因果穩定性經映射數碼濾波器仍應保持,所以s平面的左半平面應當映射到z平面的單位圓內。
設計方法
脈沖響應不變法
脈沖響應不變法也稱衝激響應不變法,是滿足s平面到z平面的映射兩個基本要求的常用方法之一。實現方法是已知模擬濾波器的衝沖響應ha(t),讓數碼濾波器h(n)的包絡為ha(t),即
![{\displaystyle h(n)=h_{a}(t)|_{t=nT}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/536527d0fc52e119ff2b32feca06c89dc4a9dd7c)
故此得名脈衝不變法,這種方法的實質上是時域採樣法,基本設計步驟是先得到模擬濾波器的系統函數Ha(s);然後對沖激響應ha(t)採樣,得到數碼濾波器的單位脈沖響應h(n);最後,h(n)所對應的z變換,正是所要求的數碼系統的系統函數
H(z),即
脈衝不變法又稱標準z變換法。根據理想採樣序列z變換與拉普拉斯變換的關係式,我們可以得到
—(1)
其映射關係為
或 ![{\displaystyle s={\frac {1}{T}}\ln z}](https://wikimedia.org/api/rest_v1/media/math/render/svg/6428a8accd580ce526464f4ccfcaaf6e085fc676)
由(1)式當s = jΩ 時,得到的數碼濾波器的響應為
—(2)
由(2)式可見,數碼濾波器的頻率響應不是簡單的重現模擬濾波器的頻率響應,而是模擬濾波器頻率響應的週期展開,其中頻率映射關係為![{\displaystyle \omega =\Omega T}](https://wikimedia.org/api/rest_v1/media/math/render/svg/537765f90f519be74e2ce60020ae3379176f2083)
若模擬濾波器是帶限的,即
,則
—(3)
這時,數碼濾波器可在摺疊頻率內不失真的重現模擬濾波器的頻率響應。但是實際模擬濾波器頻率響應不可能是真正帶限的,所以脈沖響應不辨法總會有混疊失真。
下面以Ha(s)均為單極點為例,討論脈衝不變法設計IIR濾波器的具體方式。Ha(s)可展開為部分分式
![{\displaystyle H_{a}(s)=\sum _{k=1}^{N}{\frac {A_{k}}{s-s_{k}}}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/36c5f20e74c881bfde15ea4308a56e938123b79d)
上面式子中
是H_a(s)的極點,對應的模擬系統單位沖激響應為
![{\displaystyle h_{a}(t)=\sum _{k=1}^{N}A_{k}e^{s_{k}t}u(t)}](https://wikimedia.org/api/rest_v1/media/math/render/svg/917d91c22d91cce2e09702c89e94bb5eca98c47e)
對ha(t)取樣,所有連續時間便量t由離散時間便量nT代替,則
![{\displaystyle h_{a}(nT)=\sum _{k=1}^{N}A_{k}e^{s_{k}nT}u(nT)}](https://wikimedia.org/api/rest_v1/media/math/render/svg/f9ea1d247cabf6d16c904911dcedcf5d2b656b40)
對Ha(n)取z變換
![{\displaystyle {\mathcal {L}}\left\{h(n)\right\}=H(z)=\sum _{k=1}^{N}{\frac {A_{k}}{1-e^{s_{k}T}z^{-1}}}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/0eabf2817afba79e44db8a1cff62e7cd589779f9)
上式中
是z平面的極點,當極點sk在s平面的左半平面時,
,則
,
,H(z)的極點在單位圓內。由此可知,s平面與z平面的極點一一對應,並且穩定的模擬系統變換後仍為穩定的數碼系統。
在(3)式
,考慮到若取樣頻率很高時,會使得數碼系統的福頻特性的增益很高。為防止溢出,通常在取樣時做修正,令h(n)=Tha(n),這樣實際數碼濾波器的系統函數及頻率響應特性分別為
![{\displaystyle H(z)=\sum _{k=1}{N}{\frac {TA_{k}}{1-e^{s_{k}T}z^{-1}}}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/878fce0a7ac9c41f445248ec10924d7e8f048e3c)
![{\displaystyle H(e^{j\omega })=\sum _{k=-\infty }^{\infty }H_{a}\left(j{\frac {\omega }{T}}-jk\Omega _{s}\right)\approx H_{a}\left({\frac {\omega }{T}}\right)\qquad \qquad |\omega |\leq \pi }](https://wikimedia.org/api/rest_v1/media/math/render/svg/0f6d7568550d48b618e109caa7467df1cf59204c)
由以上分析可見,按照
變換過程,從模擬濾波器Ha(s)得到數碼濾波器H(z),設計還是相當冗繁,不過由於s平面與z平面的極點一一對應,我們可以簡化變換步驟。
設Ha(s)均為一階極點,省略中間步驟,從
設計過程分為兩個步驟:
![{\displaystyle H_{a}(s)=\sum _{k=1}{N}{\frac {A_{k}}{s-s_{k}}}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/615dfbd726570905acf8fe26e87e4b060b9e7e1e)
![{\displaystyle H(z)=\sum _{k=1}{N}{\frac {TA_{k}}{1-e^{s_{k}T}z^{-1}}}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/878fce0a7ac9c41f445248ec10924d7e8f048e3c)
如果Ha(s)還有m階的重極點,我們給出對應的z變換的有理分式為
![{\displaystyle {\frac {1}{(s-s_{k})^{m}}}\rightarrow {\frac {(-1)^{m-1}}{(m-1)!}}{\frac {d^{m-1}}{ds_{k}^{m-1}}}{\frac {1}{1-e^{s_{k}T}z^{-1}}}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/730e9c1ad759f8d5678e8b606ebfb0a1f300b951)
除了單極點與重極點外,對Ha(s)的共軛極點,我們也給出對應的z變換的一般有理分式
![{\displaystyle {\frac {s+a}{(s+a)^{2}+b^{2}}}\rightarrow {\frac {1-e^{-aT}\cos(bT)*z^{-1}}{1-2e^{-aT}\cos(bT)*2^{-1}+e^{-2aT}z^{-2}}}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/2d12f2595acf2cf03b9a4c7c8dd9752563f4a6fa)
![{\displaystyle {\frac {s+b}{(s+a)^{2}+b^{2}}}\rightarrow {\frac {1-e^{-aT}\sin(bT)*z^{-1}}{1-2e^{-aT}\cos(bT)*2^{-1}+e^{-2aT}z^{-2}}}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/1206182e8878c55cb567fddea540c370cfdca392)
這樣,當Ha(s)部分分式展開式中如果有重極點或共軛極點,在上述設計過程第二步做相應修改即可。
脈衝不變法的頻率變換
是線性關係,所以在振幅及相位上數碼濾波器都保留着模擬濾波器的頻率響應特點。但是由於脈沖不變法本身具有頻譜周期延展拓寬的特性,所以失真較大。尤其是對衰減特性差的濾波器頻率響應會有嚴重的混疊現象,適用範圍受到限制。
下面給出用脈沖不變法設計數碼濾波器的一般步驟
- 確定數碼濾波器的性能要求及各數字臨界頻率
![{\displaystyle {\omega _{k}}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/cbb78e8831166835529a2c33165fe518b8ceacee)
- 由脈沖不變法的變換關係將
變換為模擬域臨界頻率![{\displaystyle {\Omega _{k}}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/092c9539a66866f9c7a4a4a8d3b1582155cdebd4)
- 按
及衰減指標求出模擬濾波器的傳遞函數Ha(s)。這個模擬低通濾波器也稱為模擬原型濾波器。
- 由脈沖不變法的變換關係將Ha(s)轉換為數碼濾波器的系統函數H(z)
在設計過程中,除了第一步求數字臨界頻率
時,要用到取樣間隔T或取樣頻率fs以外,最後的結果與其他各步驟中T或fs的取值無關。所以為了簡化運算,在實際運算時,除了第一步外,通常取T=1。
脈波響應不變法
這是由解出和模擬濾波器在同樣的取樣時間下有一樣輸出值的T(z)所獲得,且當這兩者的輸入接為一個脈衝時才適用。
有一點需要注意的是,藉由此種方法產生的數碼濾波器的所有輸入皆是一個近似值,除了只對於脈衝輸入非常精確。這是一種最簡單的IIR濾波器設計方法,它在低頻是最精確的,所以通常被用在低通濾波器上。
對於拉普拉斯轉換(Laplace transform)或是z-transform,轉換過後的輸出只是輸入乘上相對應的轉換函數,T(s)或T(z)。Y(s)和Y(z)分別是輸入X(s)和輸入X(z)轉換過後的輸出。
![{\displaystyle Y(s)=T(s)X(s)}](https://wikimedia.org/api/rest_v1/media/math/render/svg/f299612af0fd3cffa58799bdb57d5386d6f3dc61)
![{\displaystyle Y(z)=T(z)X(z)}](https://wikimedia.org/api/rest_v1/media/math/render/svg/8154e2e59a4b5d0701e1770a830f397542601b48)
然而,當拉普拉斯轉換和z-transform對單位脈衝作轉換時為1,轉換後的輸出結果分別為
![{\displaystyle Y(s)=T(s)}](https://wikimedia.org/api/rest_v1/media/math/render/svg/a493bc7f05f911668e91e4c75c05a68ee48bb66a)
![{\displaystyle Y(z)=T(z)}](https://wikimedia.org/api/rest_v1/media/math/render/svg/f21bbe843b7e8680b68c236bda9e3a2dd9c585c3)
現在模擬濾波器的輸出在時域上就只是拉普拉斯逆轉換(inverse Laplace transform)
![{\displaystyle y(t)=L^{-1}[Y(s)]=L^{-1}[T(s)]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/e4d65de5e6987206b0abf44e1a6f9e0fbc8cb1e5)
如果我們用nT代替t,可以得到在取樣時間下源於脈衝的輸出,y(nT),又可以為了便利性表為y(n)
![{\displaystyle y(n)=y(nT)=y(t)|_{t=sT}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/3768c956a77eabf53703d446dfb305eca353c378)
這個離散時間訊號可以被z-transform得到T(z)
![{\displaystyle T(z)=Y(z)=Z[y(n)]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/46c93d98c58336fc2617d98df851c3b9dc731762)
![{\displaystyle T(z)=Z[y(n)]=Z[y(nT)]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/f6acbf6cbca467b58e91b491c472bd03b3fac0b4)
![{\displaystyle T(z)=Z\left\{L^{-1}[T(s)]_{t=nT}\right\}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/648a7c90004126b80ab0e374c2c518c56771677f)
最後這條等式指出在數學領域描述數碼IIR濾波器就是對取樣完經拉普拉斯轉換為T(s)的模擬訊號作z-transform,通常會簡化為
![{\displaystyle T(z)=Z[T(s)]*T}](https://wikimedia.org/api/rest_v1/media/math/render/svg/0bad4e315aa3364439123c484b4ae4bcc51c185b)
雖然在數學領域上不是完全正確的。
需特別注意有一個乘法數T出現在式子中,這是因為就算拉普拉斯轉換和z-transform對單位脈衝為1,脈衝本身不一定是一樣的。對模擬訊號而言,脈衝在t=0時有無限大的值但是面積為1,但在離散時間的脈衝t=0時為1,所以為了這個情況,需要乘法數T的存在。
step invariant
這通常相較於impulse invariant昰一個更好的設計方法,數碼濾波器正是在取樣時有幾段不同常數的輸入,也就是由離散步階(step)組成。step invariant IIR 濾波器和同樣輸入步階訊號至ADC相比是較低精確度的,然而,和impulse invariant相比這對任何輸入而言是一個較好的近似法。
當T(z)和T(s)兩者都是步階(step)輸入時,step invariant解決一樣取樣值的困擾,對數碼濾波器的輸入為u(s),對模擬濾波器的輸入是u(t),z-transform和拉普拉斯轉對這兩個輸入作轉換以得到轉換後的輸出訊號。
z-transform的轉換函數為![{\displaystyle Z[u(n)]={\dfrac {z}{z-1}}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/dddae176f885dd5e3461d82c703d6fe05ee758ea)
經z-transform的輸出![{\displaystyle Y(z)=T(z)U(z)=T(z){\dfrac {z}{z-1}}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/1ae76a5b02e9c194b681e6cf784dd356ac427314)
Laplace transform的轉換函數為![{\displaystyle L[u(t)]={\dfrac {1}{s}}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/dacbca492c680892cdc61b8fb67bb646a65636c4)
經Laplace transform的輸出![{\displaystyle Y(s)=T(s)U(s)={\dfrac {T(s)}{s}}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/7c3d91a73ae9342f99f9328ed332d58ba8f23faf)
模擬濾波器的輸出是y(t),就是Y(s)的拉普拉斯逆轉換。如果每經過T秒就被取樣一次,它就是y(n),也就是Y(z)的逆轉換。這些訊號被用來解出數碼濾波器的和模擬濾波器在取樣時間下有着相同輸出
以下的等式指出T(z)的解法,也就是對模擬濾波器取近似的公式
![{\displaystyle T(z)={\dfrac {z-1}{z}}Y(z)}](https://wikimedia.org/api/rest_v1/media/math/render/svg/ae2d312413658941765cd18ce5a1aa5d46d0820b)
![{\displaystyle T(z)={\dfrac {z-1}{z}}Z[y(n)]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/218124b8b56174ceba89930d844301416585b904)
![{\displaystyle T(z)={\dfrac {z-1}{z}}Z[Y(s)]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/b44af0b2b081dd8935ba00712381b082ca35bfe2)
![{\displaystyle T(z)={\dfrac {z-1}{z}}Z[{\dfrac {T(s)}{s}}]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/11b2d1a4450be2c60297c67dade0debc8d614781)
BLT公式利用拉普拉斯轉換(Laplace transform)的特性:對於一個x(t)經Laplace轉換成的X(s)而言,它的積分在沒有初始條件下相當於X(s)/s。所以得出將拉普拉斯轉換的訊號乘上1/s相當於對此訊號在時域下做積分。
然而,接下來這個不同的等式一樣也是用近似積分x(t)訊號的特性達成:利用x(nT)=x(n)。
在沒有初始條件下積分訊號相當於計算訊號下的面積
![{\displaystyle y(n)=y(n-1)+{\dfrac {x(n)+x(n-1)}{2}}*T}](https://wikimedia.org/api/rest_v1/media/math/render/svg/bab3ed7af2c45e92ebef0d7b9a412616b7619137)
此等式告訴我們再經過一個新的數入訊號x(n)後計算新的面積y(n),就只是將先前運算的面積y(n-1) 加上新輸入和先前輸入的平均乘上取樣時間。藉由z轉換先前的等式變為以下的式子
![{\displaystyle Y(z)=z^{-1}Y(z)+0.5[X(z)+z^{-1}X(z)]*T}](https://wikimedia.org/api/rest_v1/media/math/render/svg/57cc8630057c8402a262402ab2ba66a994a2abfc)
![{\displaystyle Y(z)(1-z^{-1})=0.5TX(z)(1+z^{-1})}](https://wikimedia.org/api/rest_v1/media/math/render/svg/2b674eacd2856fd8718cda7a6e81ca70b1858f48)
![{\displaystyle T(z)={\dfrac {Y(z)}{X(z)}}={\dfrac {T}{2}}{\dfrac {1+z^{-1}}{1-z^{-1}}}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/0972f95e339457e0863044441c03f53b642a614e)
當我們得出X(z)和Y(z)後,我們將解出T(z)
先前的等式是一個數碼訊號處理系統中的轉換函數,此函數將一個系統中的模擬轉換函數趨近成作積分,並在分子分母同乘上z後開始解s
![{\displaystyle {\dfrac {T}{2}}{\dfrac {z+1}{z-1}}\approxeq {\dfrac {1}{s}}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/822c7a77ef22c56f662cf0490c296756bf3bd9b8)
![{\displaystyle s={\dfrac {2}{T}}{\dfrac {z-1}{z+1}}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/0bd955e55b680ba8b4fc80f06e26070862441806)
這個關係被用在任何模擬濾波器的拉普拉斯轉換函數,以或取近似於模擬濾波器的數碼無限脈衝響應(IIR)濾波器T(z)。這個結果被標示在下列公式中,此公式用來運算BLT IIR數碼濾波器,並從模擬濾波器的拉普拉斯轉換函數開始運算起
![{\displaystyle T(z)=T(s)|_{s={\dfrac {2}{T}}{\dfrac {z-1}{z+1}}}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/387f50d1d4ca674f1123713303d345beb6ec5d1b)
這條公式指出近似模擬濾波器的bilinear transform數碼IIR濾波器可以從把模擬轉換函數T(s)中的s替換成和z的關係得出
外部連結
參見