无限冲激响应

无限脉冲响应滤波器，简称IIR数位滤波器（infinite impulse response filter），是数位滤波器的一种。由于无限脉冲响应滤波器中存在反馈回路，因此对于脉冲输入信号的响应是无限延续的。滤波器的任务是通过一定运算关系，改变输入信号的频谱。数位滤波器是利用计算机程序、专用芯片等软、硬件改变数字信号频谱。如果要处理的是模拟信号可以通过A/D在信号形式上进行转换，在利用数位滤波器处理后经过D/A恢复为模拟信号。

## 选频数位滤波器

利用选频滤波器的特性可以提取有用的信号频率分量，这类滤波器适用输入信号中有用信号频带与干扰信号频带不同的情况。

选频数位滤波器设计过程一般归纳为以下三个步骤:

- 按照实际需求性能要求确定滤波器技术指标。
- 用一个因果稳定的系统函数IIR去逼近这个要求。
- 用一个有限精度的运算(软、硬件)去实现这个传递函数

## 概述

无限脉冲响应滤波器的脉冲响应无限长，不像有限脉冲响应滤波器，所以有以下问题：

- 如何使能量集中在$n=0\,$附近。
- 如何正向Z转换（forward Z transform）以及逆向Z转换（inverse Z transform）为稳定。

能使用最小相位滤波器（minimum phase filter）来解决以上问题，使一无限脉冲响应滤波器为稳定且能量集中在$n=0\,$附近。

- 最小相位滤波器（minimum phase filter）：所有的极点（poles）以及零点（zeros）都在单位圆以内。

最小相位滤波器为稳定（stable）且因果（causal），且最小相位滤波器的逆向（inverse）转换也为稳定（stable）且因果（causal）。

$$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)}\,$$

$$H^{-1}(z)=C^{-1}z^{S-R}\frac{(1-p_1z^{-1})(1-p_2z^{-1})(1-p_3z^{-1})...(1-p_Sz^{-1})}{(1-z_1z^{-1})(1-z_2z^{-1})(1-z_3z^{-1})...(1-z_Rz^{-1})}\,$$

其中$z_1,z_2,...z_R\,$为$R\,$个零点，$p_1,p_2,...p_S\,$为$S\,$个极点，$R\,$个零点和$S\,$个极点都在单位圆内。

$$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)}\,$$

假设$z_2\,$在单位圆外。

$$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)}\,$$

$$=z_2C\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)}\,$$

$H_1(z)\,$为最小相位滤波器（minimum phase filter），符合$|H_1(z)|=|H(z)|\,$且$H_1(z)\,$和$H(z)\,$只有相位不同。

另外，$z_2\frac{z-\overline{(z_2^{-1})}}{(z-z_2)}\,$称为全通滤波器（all pass filter）。

- 无限脉冲响应滤波器为一个最小相位滤波器和一个全通滤波器串接（cascade）：

$$H(z)=H_{mp}(z)H_{ap}(z)\,$$

其中$H(z)\,$：无限脉冲响应滤波器，$H_{mp}(z)\,$：最小相位滤波器，$H_{ap}(z)\,$：全通滤波器。

## 特性

无限脉冲响应滤波器（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)，即

$$h(n) = h_a(t)|_{t=nT}$$

故此得名脉冲不变法，这种方法的实质上是时域采样法，基本设计步骤是先得到模拟滤波器的系统函数Ha(s)；然后对冲激响应ha(t)采样，得到数位滤波器的单位脉冲响应h(n)；最后，h(n)所对应的z变换，正是所要求的数位系统的系统函数H(z)，即

$$H_a(s) \leftrightarrow h_a(t)\longrightarrow h(n)\leftrightarrow H(z)$$

脉冲不变法又称标准z变换法。根据理想采样序列z变换与拉普拉斯变换的关系式，我们可以得到

$H(z)\mid_{z=e^sT} = \frac{1}{T}\sum_{m=-\infty }^\infty H_a(s-j\Omega _sm) = \frac{1}{T}\sum_{m=-\infty }^\infty H_a(s-j\frac{2\pi}{T}m)\qquad \qquad$—(1)

其映射关系为$z = e^sT$ 或 $s = \frac{1}{T}\ln z$ 由(1)式当s = jΩ 时，得到的数位滤波器的响应为

$H(z)\mid_{z=e^j\Omega T} = H(e^j\omega)\mid_{\omega=\Omega T} = \frac{1}{T}\sum_{K=-\infty }^\infty H_a (j\Omega - j\frac{2\pi}{T}k )\qquad\qquad$—(2)

由(2)式可见，数位滤波器的频率响应不是简单的重现模拟滤波器的频率响应，而是模拟滤波器频率响应的周期展开，其中频率映射关系为$\omega = \Omega T$ 若模拟滤波器是带限的，即$H_a(j\Omega )=0,|\Omega|\ge \pi /T$ ,则

$H(e^j\omega) = \frac{1}{T} H_a(j\Omega) = \frac{1}{T} H_a(\frac{\omega}{T})\qquad \qquad|\omega|\le\pi\qquad\qquad$—(3)

这时，数位滤波器可在折叠频率内不失真的重现模拟滤波器的频率响应。但是实际模拟滤波器频率响应不可能是真正带限的，所以脉冲响应不辨法总会有混叠失真。

下面以Ha(s)均为单极点为例，讨论脉冲不变法设计IIR滤波器的具体方式。Ha(s)可展开为部分分式

$$H_a(s)=\sum_{k = 1}^{N}\frac{A_k}{s-s_k}$$

上面式子中$s_k=\sigma _k + j\Omega _k$是H_a(s)的极点，对应的模拟系统单位冲激响应为

$$h_a(t) = \sum_{k=1}^{N} A_ke^{s_kt}u(t)$$

对ha(t)取样，所有连续时间便量t由离散时间便量nT代替，则

$$h_a(nT)=\sum_{k=1}^{N} A_ke^{s_knT}u(nT)$$

对Ha(n)取z变换

$$\mathcal{L}\left\{ h(n) \right\}=H(z)=\sum_{k=1}^{N}\frac{A_k}{1-e^{s_kT}z^{-1}}$$

上式中$z_k=e^{s_kT}$是z平面的极点，当极点sk在s平面的左半平面时，$Re[s_k]=\sigma _k\ll 0$，则$z_k=e^{s_kT}=e^{\sigma _kT}e^{j\Omega _k T}=r_ke^{j\omega _k}$，$r_k=e^{\sigma _kT}<1$，H(z)的极点在单位圆内。由此可知，s平面与z平面的极点一一对应，并且稳定的模拟系统变换后仍为稳定的数位系统。

在(3)式$H(e^j\omega)=\frac{1}{T}H_a(j\Omega)$，考虑到若取样频率很高时，会使得数位系统的福频特性的增益很高。为防止溢出，通常在取样时做修正，令h(n)=Tha(n)，这样实际数位滤波器的系统函数及频率响应特性分别为

$$H(z)=\sum_{k=1}{N} \frac{TA_k}{1-e^{s_kT}z^{-1}}$$

$$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|\le\pi$$

由以上分析可见，按照$H_a(s)\rightarrow h_a(t)\rightarrow h(n)\rightarrow H(z)$变换过程，从模拟滤波器Ha(s)得到数位滤波器H(z)，设计还是相当冗繁，不过由于s平面与z平面的极点一一对应，我们可以简化变换步骤。

设Ha(s)均为一阶极点，省略中间步骤，从$H_a(s)\rightarrow H(z)$设计过程分为两个步骤:

- 将Ha(s)部分分式展开

$$H_a(s)=\sum_{k=1}{N}\frac{A_k}{s-s_k}$$

- 直接对应H(z)的部分分式

$$H(z)=\sum_{k=1}{N}\frac{TA_k}{1-e^{s_kT}z^{-1}}$$

如果Ha(s)还有m阶的重极点，我们给出对应的z变换的有理分式为

$$\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_kT}z^{-1}}$$

除了单极点与重极点外，对Ha(s)的共轭极点，我们也给出对应的z变换的一般有理分式

$$\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}}$$

$$\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}}$$

这样，当Ha(s)部分分式展开式中如果有重极点或共轭极点，在上述设计过程第二步做相应修改即可。

脉冲不变法的频率变换$\omega=\Omega T$是线性关系，所以在幅度及相位上数位滤波器都保留着模拟滤波器的频率响应特点。但是由于脉冲不变法本身具有频谱周期延展拓宽的特性，所以失真较大。尤其是对衰减特性差的滤波器频率响应会有严重的混叠现象，适用范围受到限制。

下面给出用脉冲不变法设计数位滤波器的一般步骤

- 确定数位滤波器的性能要求及各数字临界频率${\omega _k}$
- 由脉冲不变法的变换关系将${\omega _k}$变换为模拟域临界频率${\Omega _k}$
- 按${\omega _k}$及衰减指标求出模拟滤波器的传递函数Ha(s)。这个模拟低通滤波器也称为模拟原型滤波器。
- 由脉冲不变法的变换关系将Ha(s)转换为数位滤波器的系统函数H(z)

在设计过程中，除了第一步求数字临界频率${\omega _k}$时，要用到取样间隔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)转换过后的输出。

$$Y(s)=T(s)X(s)$$

$$Y(z)=T(z)X(z)$$

然而，当拉普拉斯转换和z-transform对单位脉冲作转换时为1，转换后的输出结果分别为

$$Y(s)=T(s)$$

$$Y(z)=T(z)$$

现在类比滤波器的输出在时域上就只是拉普拉斯逆转换(inverse Laplace transform)

$$y(t)=L^{-1}[Y(s)]=L^{-1}[T(s)]$$

如果我们用nT代替t，可以得到在取样时间下源于脉冲的输出，y(nT)，又可以为了便利性表为y(n)

$$y(n)=y(nT)=y(t)|_{t=sT}$$

这个离散时间信号可以被z-transform得到T(z)

$$T(z)=Y(z)=Z[y(n)]$$

$$T(z)=Z[y(n)]=Z[y(nT)]$$

$$T(z)=Z\left\{L^{-1}[T(s)]_{t=nT}\right\}$$

最后这条等式指出在数学领域描述数位IIR滤波器就是对取样完经拉普拉斯转换为T(s)的类比信号作z-transform，通常会简化为

$$T(z)=Z[T(s)]*T$$

虽然在数学领域上不是完全正确的。

需特别注意有一个乘法数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的转换函数为$Z[u(n)]=\dfrac{z}{z-1}$ 经z-transform的输出$Y(z)=T(z)U(z)=T(z)\dfrac{z}{z-1}$ Laplace transform的转换函数为$L[u(t)]=\dfrac{1}{s}$ 经Laplace transform的输出$Y(s)=T(s)U(s)=\dfrac{T(s)}{s}$ 类比滤波器的输出是y(t)，就是Y(s)的拉普拉斯逆转换。如果每经过T秒就被取样一次，它就是y(n)，也就是Y(z)的逆转换。这些信号被用来解出数位滤波器的和类比滤波器在取样时间下有着相同输出以下的等式指出T(z)的解法，也就是对类比滤波器取近似的公式

$$T(z)=\dfrac{z-1}{z}Y(z)$$

$$T(z)=\dfrac{z-1}{z}Z[y(n)]$$

$$T(z)=\dfrac{z-1}{z}Z[Y(s)]$$

$$T(z)=\dfrac{z-1}{z}Z[\dfrac{T(s)}{s}]$$

#### bilinear transform(双线性变换)

BLT公式利用拉普拉斯转换(Laplace transform)的特性：对于一个x(t)经Laplace转换成的X(s)而言，它的积分在没有初始条件下相当于X(s)/s。所以得出将拉普拉斯转换的信号乘上1/s相当于对此信号在时域下做积分。

然而，接下来这个不同的等式一样也是用近似积分x(t)信号的特性达成：利用x(nT)=x(n)。

在没有初始条件下积分信号相当于计算信号下的面积

$$y(n)=y(n-1)+\dfrac{x(n)+x(n-1)}{2}*T$$

此等式告诉我们再经过一个新的数入信号x(n)后计算新的面积y(n)，就只是将先前运算的面积y(n-1) 加上新输入和先前输入的平均乘上取样时间。借由z转换先前的等式变为以下的式子

$$Y(z)=z^{-1}Y(z)+0.5[X(z)+z^{-1}X(z)]*T$$

$$Y(z)(1-z^{-1})=0.5TX(z)(1+z^{-1})$$

$$T(z)=\dfrac{Y(z)}{X(z)}=\dfrac{T}{2}\dfrac{1+z^{-1}}{1-z^{-1}}$$

当我们得出X(z)和Y(z)后，我们将解出T(z)

先前的等式是一个数字信号处理系统中的转换函数，此函数将一个系统中的类比转换函数趋近成作积分，并在分子分母同乘上z后开始解s

$$\dfrac{T}{2}\dfrac{z+1}{z-1}\approxeq\dfrac{1}{s}$$

$$s=\dfrac{2}{T}\dfrac{z-1}{z+1}$$

这个关系被用在任何类比滤波器的拉普拉斯转换函数，以或取近似于类比滤波器的数位无限脉冲响应(IIR)滤波器T(z)。这个结果被标示在下列公式中，此公式用来运算BLT IIR数位滤波器，并从类比滤波器的拉普拉斯转换函数开始运算起

$$T(z)=T(s)|_{s=\dfrac{2}{T}\dfrac{z-1}{z+1}}$$

这条公式指出近似类比滤波器的bilinear transform数位IIR滤波器可以从把类比转换函数T(s)中的s替换成和z的关系得出

## 外部链接

- Kalman filter与IIR、FIR比较