【音频处理】IIR滤波器设计(一)Biquad 滤波器

6 篇文章 1 订阅
5 篇文章 5 订阅

系列文章目录

前言

在开始学习 IIR 滤波器之前,你还记得 z变换 吗?它可以简化数字滤波器的分析与设计,接下来内容将建立在 z变换 的基础上进行推导。如果你忘记了,那么可以在 【音频处理】如何“认识”一个滤波器? 复习下,除了z变换外,这篇博客中也提到的零点、极点等概念,相信这些会对你有帮助的。

接下来,将从最简单的滤波器开始介绍,并最终引出今天的主角双二阶滤波器(Biquad Filter),要介绍的滤波器包括:

  • 一阶前馈滤波器(1st order feed-forward filter)
  • 一阶反馈滤波器(1st order feedback filter)
  • 二阶前馈滤波器(2nd order feed-forward filter)
  • 二阶反馈滤波器(2nd order feedback filter)
  • 搁架式均衡器(Shelving filter)
  • 双二阶滤波器(Biquad Filter)

一阶前馈滤波器(1st order feed-forward filter)

作为最简单的滤波器,一阶前馈滤波器的差分方程非常易懂:
y ( n ) = a 0 x ( n ) + a 1 x ( n − 1 ) y(n) = a_0x(n) + a_1x(n-1) y(n)=a0x(n)+a1x(n1)

z变换后:
H ( z ) = Y ( z ) X ( z ) = a 0 + a 1 z − 1 H(z) = \frac{Y(z)}{X(z)} = a_0 + a_1z^{-1} H(z)=X(z)Y(z)=a0+a1z1

其中 z = e j ω z = e^{j\omega} z=ejω

计算频谱响应

我们假设 a 0 = a 1 = 0.5 a_0 = a_1 = 0.5 a0=a1=0.5
H ( z ) = Y ( z ) X ( z ) = 0.5 + 0.5 z − 1 = 0.5 + 0.5 z H(z) = \frac{Y(z)}{X(z)} = 0.5 + 0.5z^{-1} = 0.5 + \frac{0.5}{z} H(z)=X(z)Y(z)=0.5+0.5z1=0.5+z0.5

现在来计算它的频谱响应,我们取四个点:

  • DC: 0
  • Nyquist: π \pi π
  • 1 2 \frac{1}{2} 21 Nyquist: π / 2 \pi/2 π/2
  • 1 4 \frac{1}{4} 41 Nyquist: π / 4 \pi/4 π/4
DC(0 Hz)

ω = 0 e − j ω = e 0 = 1 H ( ω ) = 0.5 + 0.5 e − j ω = 1 ∣ H ( ω ) ∣ = 1 \begin{aligned} &\omega = 0 \\ &e^{-j\omega} = e^{0} = 1 \\ &H(\omega) = 0.5 + 0.5e^{-j\omega} = 1 \\ \vert &H(\omega) \vert = 1 \end{aligned} ω=0ejω=e0=1H(ω)=0.5+0.5ejω=1H(ω)=1

Nyquist: π \pi π

ω = π e − j ω = e − j π = cos ⁡ ( π ) − j sin ⁡ ( π ) = − 1 H ( ω ) = 0.5 + 0.5 e − j ω = 0 ∣ H ( ω ) ∣ = 0 \begin{aligned} &\omega = \pi \\ &e^{-j\omega} = e^{-j\pi} = \cos(\pi) - j\sin(\pi) = -1 \\ &H(\omega) = 0.5 + 0.5e^{-j\omega} = 0 \\ \vert &H(\omega) \vert = 0 \end{aligned} ω=πejω=ejπ=cos(π)jsin(π)=1H(ω)=0.5+0.5ejω=0H(ω)=0

1 2 \frac{1}{2} 21 Nyquist: π / 2 \pi/2 π/2

ω = π / 2 e − j ω = e − j π / 2 = cos ⁡ ( π / 2 ) − j sin ⁡ ( π / 2 ) = − j 1 H ( ω ) = 0.5 + 0.5 e − j ω = 0.5 − j 0.5 ∣ H ( ω ) ∣ = 0.7071 \begin{aligned} &\omega = \pi/2 \\ &e^{-j\omega} = e^{-j\pi/2} = \cos(\pi/2) - j\sin(\pi/2) = -j1\\ &H(\omega) = 0.5 + 0.5e^{-j\omega} = 0.5 - j0.5 \\ \vert &H(\omega) \vert = 0.7071 \end{aligned} ω=π/2ejω=ejπ/2=cos(π/2)jsin(π/2)=j1H(ω)=0.5+0.5ejω=0.5j0.5H(ω)=0.7071

1 4 \frac{1}{4} 41 Nyquist: π / 4 \pi/4 π/4

ω = π / 4 e − j ω = e − j π / 4 = cos ⁡ ( π / 4 ) − j sin ⁡ ( π / 4 ) = 0.707 − j 0.707 H ( ω ) = 0.5 + 0.5 e − j ω = 0.5 + 0.5 ( 0.707 − j 0.707 ) = 0.835 − j 0.353 ∣ H ( ω ) ∣ = 0.9065 \begin{aligned} &\omega = \pi/4 \\ &e^{-j\omega} = e^{-j\pi/4} = \cos(\pi/4) - j\sin(\pi/4) = 0.707 - j0.707\\ &H(\omega) = 0.5 + 0.5e^{-j\omega} = 0.5 + 0.5(0.707 - j0.707) = 0.835 - j0.353 \\ \vert &H(\omega) \vert = 0.9065 \end{aligned} ω=π/4ejω=ejπ/4=cos(π/4)jsin(π/4)=0.707j0.707H(ω)=0.5+0.5ejω=0.5+0.5(0.707j0.707)=0.835j0.353H(ω)=0.9065

将上述 4 个点连起来后,可以得当 a 0 = a 1 = 0.5 a_0 = a_1 = 0.5 a0=a1=0.5 时滤波器的频响曲线

零点与频响的几何关系

a 0 = 0.5 a_0 = 0.5 a0=0.5 a 1 = 0.5 a_1 = 0.5 a1=0.5
H ( z ) = Y ( z ) X ( z ) = 0.5 + 0.5 z − 1 = 0.5 + 0.5 z H(z) = \frac{Y(z)}{X(z)} = 0.5 + 0.5z^{-1} = 0.5 + \frac{0.5}{z} H(z)=X(z)Y(z)=0.5+0.5z1=0.5+z0.5

滤波器存在一个零点 z = − 1 + j 0 z= -1 + j0 z=1+j0
在这里插入图片描述

接下来,我们用几何的方式来确定频谱响应与零点直接的关系。对于只有一个零点的一阶前馈滤波器,可以这样确定频响:

  1. 给定一个频率,在复平面坐标的单位圆外圈定位它
  2. 画一条线,连接该点与零点
  3. 线的长度将是该频率的增幅

0 0 0 π \pi π π / 2 \pi/2 π/2, π / 4 \pi/4 π/4 为例,用上述方法进行计算,可以得到下图
在这里插入图片描述

你可能会注意到,用几何关系得到的值与直接计算得到结果是不同的。在 0Hz 中其增益为 2.0,但实际上只有它的一半。事实上,几何方法得到的增益是实际幅度的两倍。为了得到正确的结果,我们需要做的最后一件事是从 H ( z ) H(z) H(z)中去掉整体增益系数,这样整体的增益(或者衰减)就可以只由一个变量控制。这实现起来相当简单,提取一个 a 0 a_0 a0 作为公因子即可:

H ( z ) = a 0 + a 1 z − 1 = a 0 ( 1 + a 1 a 0 z − 1 ) Let  α 1 = a 1 a 0 H ( z ) = a 0 ( 1 + α 1 z − 1 ) \begin{aligned} H(z)&= a_0 + a_1z^{-1} \\ &= a_0(1 + \frac{a_1}{a_0}z^{-1}) \\ \text{Let } &\alpha_1 = \frac{a_1}{a_0} \\ H(z)&= a_0(1 + \alpha_1z^{-1}) \end{aligned} H(z)Let H(z)=a0+a1z1=a0(1+a0a1z1)α1=a0a1=a0(1+α1z1)

因此,在复平面得到幅度后,需要做的最后一步是用 a 0 a_0 a0 来缩放它,这样结果就相互匹配了。

一阶反馈滤波器(1st order feedback filter)

接下来介绍 一阶反馈滤波器,它与 一阶前馈滤波器 有很多相似之处,但也会有几个关键区别。

它的差分方程为:
y ( n ) = a 0 x ( n ) − b 1 y ( n − 1 ) y(n) = a_0x(n) - b_1y(n-1) y(n)=a0x(n)b1y(n1)

进行z变换:
Y ( z ) = a 0 X ( z ) − b 1 Y ( z ) z − 1 Y(z) = a_0X(z) - b_1Y(z)z^{-1} Y(z)=a0X(z)b1Y(z)z1
得到转换方程:
H ( z ) = Y ( z ) X ( z ) = a 0 1 + b 1 z − 1 H(z) = \frac{Y(z)}{X(z)} = \frac{a_0}{1+b_1z^{-1}} H(z)=X(z)Y(z)=1+b1z1a0
接着,提取 a 0 a_0 a0 作为增益控制系数:
H ( z ) = a 0 1 + b 1 z − 1 = a 0 1 1 + b 1 z − 1 \begin{aligned} H(z) &= \frac{a_0}{1+b_1z^{-1}} \\ &= a_0\frac{1}{1+b_1z^{-1}} \end{aligned} H(z)=1+b1z1a0=a01+b1z11

我们再做一些变化,方便计算零点和极点:
H ( z ) = a 0 1 + b 1 z − 1 = a 0 1 1 + b 1 z = a 0 z z + b 1 \begin{aligned} H(z) &= \frac{a_0}{1+b_1z^{-1}} \\ &= a_0\frac{1}{1+\frac{b_1}{z}} \\ &= a_0\frac{z}{z + b_1} \end{aligned} H(z)=1+b1z1a0=a01+zb11=a0z+b1z

可以看到,当 z = − b 1 z=-b_1 z=b1 时分母为零,也就是说极点在 z = − b 1 z=-b_1 z=b1 位置。你可能还会注意到传递函数还有一个零点 z = 0 z=0 z=0,这个零点被称为 “trivial zero”,它对频谱响应没有任何影响。

在z=0处的极点或零点是平凡的(trivial),可以为了分析而忽略,因为它对频率响应没有影响。

我们假设 a 0 = 1.0 a_0 = 1.0 a0=1.0 b 1 = 0.9 b_1 = 0.9 b1=0.9
H ( z ) = Y ( z ) X ( z ) = a 0 1 + b 1 z − 1 = 1 1 + 0.9 z − 1 H(z) = \frac{Y(z)}{X(z)} = \frac{a_0}{1+b_1z^{-1}} = \frac{1}{1 + 0.9z^{-1}} H(z)=X(z)Y(z)=1+b1z1a0=1+0.9z11
接下来开始计算该滤波器的频响曲线。

极点与频响的几何关系

a 0 = 1.0 a_0 = 1.0 a0=1.0 b 1 = 0.9 b_1 = 0.9 b1=0.9 时,滤波器存在一个极点 z = − 0.9 + j 0 z = -0.9 + j0 z=0.9+j0,对于只有一个零点的一阶反馈滤波器,可以这样确定频响:

  1. 给定一个频率,在复平面坐标的单位圆外圈定位它
  2. 画一条线,连接该点与极点
  3. 线段长度的倒数将是频率的增幅

0 0 0 π \pi π π / 2 \pi/2 π/2, π / 4 \pi/4 π/4 为例,用上述方法进行计算,可以得到下图

计算频谱响应

我们假设 a 0 = 1.0 a_0 = 1.0 a0=1.0 b 1 = 0.9 b_1 = 0.9 b1=0.9
H ( z ) = Y ( z ) X ( z ) = a 0 1 + b 1 z − 1 = 1 1 + 0.9 z − 1 H(z) = \frac{Y(z)}{X(z)} = \frac{a_0}{1+b_1z^{-1}} = \frac{1}{1 + 0.9z^{-1}} H(z)=X(z)Y(z)=1+b1z1a0=1+0.9z11

现在来计算它的频谱响应,我们取四个点:

  • DC: 0
  • Nyquist: π \pi π
  • 1 2 \frac{1}{2} 21 Nyquist: π / 2 \pi/2 π/2
  • 1 4 \frac{1}{4} 41 Nyquist: π / 4 \pi/4 π/4
DC(0 Hz)

ω = 0 e − j ω = e 0 = 1 H ( ω ) = 1 1 + 0.9 e − j ω = 1 1.9 = 0.5263 ∣ H ( ω ) ∣ = 0.5263 \begin{aligned} &\omega = 0 \\ &e^{-j\omega} = e^{0} = 1 \\ &H(\omega) = \frac{1}{1 + 0.9e^{-j\omega}} = \frac{1}{1.9} = 0.5263 \\ \vert &H(\omega) \vert = 0.5263 \end{aligned} ω=0ejω=e0=1H(ω)=1+0.9ejω1=1.91=0.5263H(ω)=0.5263

Nyquist: π \pi π

ω = π e − j ω = e − j π = cos ⁡ ( π ) − j sin ⁡ ( π ) = − 1 H ( ω ) = 1 1 + 0.9 e − j ω = 1 0.1 = 10 ∣ H ( ω ) ∣ = 10 \begin{aligned} &\omega = \pi \\ &e^{-j\omega} = e^{-j\pi} = \cos(\pi) - j\sin(\pi) = -1 \\ &H(\omega) = \frac{1}{1 + 0.9e^{-j\omega}} = \frac{1}{0.1} = 10 \\ \vert &H(\omega) \vert = 10 \end{aligned} ω=πejω=ejπ=cos(π)jsin(π)=1H(ω)=1+0.9ejω1=0.11=10H(ω)=10

1 2 \frac{1}{2} 21 Nyquist: π / 2 \pi/2 π/2

ω = π / 2 e − j ω = e − j π / 2 = cos ⁡ ( π / 2 ) − j sin ⁡ ( π / 2 ) = − j 1 H ( ω ) = 1 1 + 0.9 e − j ω = 1 1 − j 0.9 ∣ H ( ω ) ∣ = ∣ 1 ∣ ∣ 1 − j 0.9 ∣ = 0.743 \begin{aligned} &\omega = \pi/2 \\ &e^{-j\omega} = e^{-j\pi/2} = \cos(\pi/2) - j\sin(\pi/2) = -j1\\ &H(\omega) = \frac{1}{1 + 0.9e^{-j\omega}} = \frac{1}{1 - j0.9} \\ \vert &H(\omega) \vert = \frac{\vert 1 \vert}{\vert 1 - j0.9\vert} = 0.743 \end{aligned} ω=π/2ejω=ejπ/2=cos(π/2)jsin(π/2)=j1H(ω)=1+0.9ejω1=1j0.91H(ω)=1j0.91=0.743

1 4 \frac{1}{4} 41 Nyquist: π / 4 \pi/4 π/4

ω = π / 4 e − j ω = e − j π / 4 = cos ⁡ ( π / 4 ) − j sin ⁡ ( π / 4 ) = 0.707 − j 0.707 H ( ω ) = 1 1 + 0.9 e − j ω = 1 1 + 0.9 ( 0.707 − j 0.707 ) = 1 1.636 − j 0.636 ∣ H ( ω ) ∣ = ∣ 1 ∣ ∣ 1.636 − j 0.636 ∣ = 0.57 \begin{aligned} &\omega = \pi/4 \\ &e^{-j\omega} = e^{-j\pi/4} = \cos(\pi/4) - j\sin(\pi/4) = 0.707 - j0.707\\ &H(\omega) = \frac{1}{1 + 0.9e^{-j\omega}} = \frac{1}{1+0.9(0.707 - j0.707)} = \frac{1}{1.636 - j0.636} \\ \vert &H(\omega) \vert = \frac{\vert 1 \vert}{\vert 1.636-j0.636\vert} = 0.57 \end{aligned} ω=π/4ejω=ejπ/4=cos(π/4)jsin(π/4)=0.707j0.707H(ω)=1+0.9ejω1=1+0.9(0.707j0.707)1=1.636j0.6361H(ω)=1.636j0.6361=0.57

将上述 4 个点连起来后,可以得当 a 0 = 1.0 a_0 = 1.0 a0=1.0 b 1 = 0.9 b_1 = 0.9 b1=0.9 时滤波器的频响曲线
在这里插入图片描述

当然,也可以转换成 dB 值。通过下图可知,该滤波器抑制低频信号,提升高频信息,在 0hz 处将会有 -6dB 的抑制,而在 22.5hz 则有 20dB 的增益。

在这里插入图片描述

二阶前馈滤波器(2nd order feed-forward filter)

二阶前馈滤波器的分析与一阶滤波器相似,但我们要处理的数学问题更多。它的差分方程为:
y ( n ) = a 0 x ( n ) + a 1 x ( n − 1 ) + a 2 x ( n − 2 ) y(n) = a_0x(n) + a_1x(n-1) + a_2x(n-2) y(n)=a0x(n)+a1x(n1)+a2x(n2)

进行z变换
Y ( z ) = a 0 X ( z ) + a 1 X ( z ) z − 1 + a 2 X ( z ) z − 2 Y(z) = a_0X(z) + a_1X(z)z^{-1} + a_2X(z)z^{-2} Y(z)=a0X(z)+a1X(z)z1+a2X(z)z2

得到转换方程
H ( z ) = Y ( z ) X ( z ) = a 0 + a 1 z − 1 + a 2 z − 2 H(z) = \frac{Y(z)}{X(z)} = a_0 + a_1z^{-1} + a_2z^{-2} H(z)=X(z)Y(z)=a0+a1z1+a2z2

提取 a 0 a0 a0
Let  α 1 = a 1 a 0 , α 2 = a 2 a 0 H ( z ) = Y ( z ) X ( z ) = a 0 ( 1 + α 1 z − 1 + α 2 z − 2 ) \begin{aligned} \text{Let } \alpha_1 &= \frac{a_1}{a_0}, \alpha_2=\frac{a_2}{a_0}\\ H(z) &= \frac{Y(z)}{X(z)} = a_0(1 + \alpha_1z^{-1} + \alpha_2z^{-2}) \\ \end{aligned} Let α1H(z)=a0a1,α2=a0a2=X(z)Y(z)=a0(1+α1z1+α2z2)

此时 H ( z ) H(z) H(z) 是个二次方程,对它进行因式分解,可以有:
H ( z ) = Y ( z ) X ( z ) = a 0 ( 1 − Z 1 z − 1 ) ( 1 − Z 2 z − 1 ) = a 0 ( 1 + ( − Z 1 − Z 2 ) z − 1 + Z 1 Z 2 z − 2 ) \begin{aligned} H(z) &= \frac{Y(z)}{X(z)} = a_0(1-Z_1z^{-1})(1-Z_2z^{-1}) \\ &=a_0(1 + (-Z_1 - Z_2)z^{-1} + Z_1Z_2z^{-2}) \end{aligned} H(z)=X(z)Y(z)=a0(1Z1z1)(1Z2z1)=a0(1+(Z1Z2)z1+Z1Z2z2)

从上述式子可以得到几个有用的信息:

  1. 零点在 z = Z 1 z=Z_1 z=Z1 z = Z 2 z=Z_2 z=Z2 上,它们在复平面上,所以应该是一个复数
  2. α 1 \alpha_1 α1 α 2 \alpha_2 α2 是实数,因此 ( − Z 1 − Z 2 ) (-Z_1 - Z_2) (Z1Z2) Z 1 Z 2 Z_1Z_2 Z1Z2 也应该是实数。

据此我们可以推断出 Z 1 Z_1 Z1 Z 2 Z_2 Z2 为共轭关系,才能满足上述两个条件。因此:
Z 1 = R e j θ = a + j b Z 2 = R e − j θ = a − j b \begin{aligned} Z_1 = Re^{j\theta} = a + jb \\ Z_2 = Re^{-j\theta} = a - jb \end{aligned} Z1=Rejθ=a+jbZ2=Rejθ=ajb

将其带入转换方程,得到:
H ( z ) = a 0 ( 1 + ( − Z 1 − Z 2 ) z − 1 + Z 1 Z 2 z − 2 ) = a 0 ( 1 − R e j θ z − 1 − R e − j θ z − 1 + R 2 ( e j θ e − j θ ) z − 2 ) noting that  ( e j θ e − j θ ) = 1 H ( z ) = a 0 ( 1 − ( R e j θ + R e − j θ ) z − 1 + R 2 z − 2 ) = a 0 ( 1 − R ( cos ⁡ ( Θ ) + j sin ⁡ ( Θ ) + cos ⁡ ( Θ ) − j sin ⁡ ( Θ ) ) z − 1 + R 2 z − 2 ) = a 0 ( 1 − 2 R cos ⁡ ( Θ ) z − 1 + R 2 z − 2 ) \begin{aligned} H(z) &=a_0(1 + (-Z_1 - Z_2)z^{-1} + Z_1Z_2z^{-2}) \\ &=a_0(1 - Re^{j\theta}z^{-1} - Re^{-j\theta}z^{-1} + R^2(e^{j\theta}e^{-j\theta})z^{-2}) \\ \text{noting that } (e^{j\theta}e^{-j\theta}) &= 1 \\ H(z) &= a_0(1 - (Re^{j\theta} + Re^{-j\theta})z^{-1} + R^2z^{-2}) \\ &= a_0(1-R(\cos (\Theta)+j \sin (\Theta)+\cos (\Theta)-j \sin (\Theta)) z^{-1}+R^{2} z^{-2}) \\ &= a_0(1-2 R \cos (\Theta) z^{-1}+R^{2} z^{-2}) \end{aligned} H(z)noting that (ejθejθ)H(z)=a0(1+(Z1Z2)z1+Z1Z2z2)=a0(1Rejθz1Rejθz1+R2(ejθejθ)z2)=1=a0(1(Rejθ+Rejθ)z1+R2z2)=a0(1R(cos(Θ)+jsin(Θ)+cos(Θ)jsin(Θ))z1+R2z2)=a0(12Rcos(Θ)z1+R2z2)
对比最初的转换方程 H ( z ) = a 0 ( 1 + α 1 z − 1 + α 2 z − 2 ) H(z) = a_0(1 + \alpha_1z^{-1} + \alpha_2z^{-2}) H(z)=a0(1+α1z1+α2z2),可以得到:
α 1 = − 2 R cos ⁡ ( Θ ) α 2 = R 2 \begin{array}{l} \alpha_{1}=-2 R \cos (\Theta) \\ \alpha_{2}=R^{2} \end{array} α1=2Rcos(Θ)α2=R2

根据上述等式,给定 α 1 \alpha_{1} α1 α 2 \alpha_{2} α2 就能够求出 R R R Θ \Theta Θ,从而得到 Z 1 Z_1 Z1 Z 2 Z_2 Z2,也就得到了零点。

我们以 a 0 = 1.0 a_0 = 1.0 a0=1.0 a 1 = − 1.27 a_1=-1.27 a1=1.27 a 2 = 0.81 a_2=0.81 a2=0.81 为例。这时 α 1 = − 1.27 \alpha_{1}=-1.27 α1=1.27 α 2 = 0.81 \alpha_{2}=0.81 α2=0.81,那么可以得到 R R R
R 2 = α 2 = 0.81 R = 0.81 = 0.9 \begin{array}{c} R^{2}=\alpha_{2}=0.81 \\ R=\sqrt{0.81}=0.9 \end{array} R2=α2=0.81R=0.81 =0.9
接着:
− 2 Rcos ⁡ ( Θ ) = − 1.27 2 ( 0.9 ) cos ⁡ ( Θ ) = 1.27 cos ⁡ ( Θ ) = 1.27 2 ( 0.9 ) Θ = arccos ⁡ ( 0.705 ) Θ = 4 5 ∘ \begin{aligned} -2 \operatorname{Rcos}(\Theta) &=-1.27 \\ 2(0.9) \cos (\Theta) &=1.27 \\ \cos (\Theta) &=\frac{1.27}{2(0.9)} \\ \Theta &=\arccos (0.705) \\ \Theta &=45^{\circ} \end{aligned} 2Rcos(Θ)2(0.9)cos(Θ)cos(Θ)ΘΘ=1.27=1.27=2(0.9)1.27=arccos(0.705)=45

至此,得到两个零点在复平面上的位置在 0.9 e j 0.25 π 0.9e^{j0.25\pi} 0.9ej0.25π 0.9 e j − 0.25 π 0.9e^{j-0.25\pi} 0.9ej0.25π 上,也就是复平面上,半径为 0.9 ,角度为 ± 4 5 ∘ \pm 45^{\circ} ±45 的位置,如下图:
在这里插入图片描述

估计频响

对于两个零点的情况,估计频响的步骤与之前类似,但多一个步骤。当估计一个以上零点的频响时,需要这么做:

  1. 给定一个频率,在复平面坐标的单位圆外圈定位它
  2. 画一条线,连接该点与所有零点
  3. 将所有线段的长度相乘,得到的积将是频率的增幅

最后一条规则用公式来说明的话,应该是这样:
∣ H ( e j ω ) ∣ ω = a 0 ∏ i = 1 N U i \left|H\left(e^{j \omega}\right)\right|_{\omega}=a_{0} \prod_{i=1}^{N} U_{i} H(ejω)ω=a0i=1NUi
其中 N N N 为滤波器的阶数(也就是零点的个数), U i U_{i} Ui为与零点的距离长度。

0 0 0 π \pi π π / 2 \pi/2 π/2, π / 4 \pi/4 π/4 为例,用上述方法进行计算频响:

在这里插入图片描述
ω = 0 \omega=0 ω=0 时,与两个零点的距离为 0.7、0.7,因此在 ∣ H ( e j ω ) ∣ ω = 0.7 ∗ 0.7 = 0.49 \left|H\left(e^{j \omega}\right)\right|_{\omega} = 0.7*0.7=0.49 H(ejω)ω=0.70.7=0.49

在这里插入图片描述
ω = π / 4 \omega=\pi/4 ω=π/4 时,与两个零点的距离为 0.1、 1.4,因此在 ∣ H ( e j ω ) ∣ ω = 0.1 ∗ 1.4 = 0.14 \left|H\left(e^{j \omega}\right)\right|_{\omega} = 0.1*1.4=0.14 H(ejω)ω=0.11.4=0.14

在这里插入图片描述
ω = π / 2 \omega=\pi/2 ω=π/2 时,与两个零点的距离为 0.7、1.8,因此在 ∣ H ( e j ω ) ∣ ω = 0.7 ∗ 1.8 = 1.26 \left|H\left(e^{j \omega}\right)\right|_{\omega} = 0.7 * 1.8 = 1.26 H(ejω)ω=0.71.8=1.26

在这里插入图片描述
ω = π \omega=\pi ω=π 时,与两个零点的距离为 1.75、1.75,因此在 ∣ H ( e j ω ) ∣ ω = 1.75 ∗ 1.75 = 3.1 \left|H\left(e^{j \omega}\right)\right|_{\omega} = 1.75 * 1.75 = 3.1 H(ejω)ω=1.751.75=3.1

连接上述 4 个点,可以得到大致的频响曲线:
在这里插入图片描述

计算频谱响应

a 0 = 1.0 a_0 = 1.0 a0=1.0 a 1 = − 1.27 a_1=-1.27 a1=1.27 a 2 = 0.81 a_2=0.81 a2=0.81
H ( z ) = 1 − 1.27 z − 1 + 0.81 z − 2 = 1 − 1.27 e − j 1 ω + 0.81 e − j 2 ω = 1 − 1.27 [ cos ⁡ ( ω ) − j sin ⁡ ( ω ) ] + 0.81 [ cos ⁡ ( 2 ω ) − j sin ⁡ ( 2 ω ) ] \begin{aligned} H(z) &=1-1.27 z^{-1}+0.81 z^{-2} \\ &=1-1.27 e^{-j 1 \omega}+0.81 e^{-j 2 \omega} \\ &=1-1.27[\cos (\omega)-j \sin (\omega)]+0.81[\cos (2 \omega)-j \sin (2 \omega)] \end{aligned} H(z)=11.27z1+0.81z2=11.27ej1ω+0.81ej2ω=11.27[cos(ω)jsin(ω)]+0.81[cos(2ω)jsin(2ω)]

现在来计算它的频谱响应,我们取四个点:

  • DC: 0
  • Nyquist: π \pi π
  • 1 2 \frac{1}{2} 21 Nyquist: π / 2 \pi/2 π/2
  • 1 4 \frac{1}{4} 41 Nyquist: π / 4 \pi/4 π/4
DC: 0

H ( ω ) ∣ ω = 0 = 1 − 1.27 [ cos ⁡ ( ω ) − j sin ⁡ ( ω ) ] + 0.81 [ cos ⁡ ( 2 ω ) − j sin ⁡ ( 2 ω ) ] = 1 − 1.27 [ cos ⁡ ( 0 ) − j sin ⁡ ( 0 ) ] + 0.81 [ cos ⁡ ( 2 ∗ 0 ) − j sin ⁡ ( 2 ∗ 0 ) ] = 0.54 + j 0 ∣ H ( ω ) ∣ = a 2 + b 2 = 0.5 4 2 + 0 2 = 0.54 \begin{aligned} H(\omega)|_ {\omega=0}&= 1-1.27[\cos (\omega)-j \sin (\omega)]+0.81[\cos (2 \omega)-j \sin (2 \omega)] \\ & = 1-1.27[\cos (0)-j \sin (0)]+0.81[\cos (2 * 0)-j \sin (2 * 0)] \\ &= 0.54+j 0 \\ |H(\omega)| &=\sqrt{a^{2}+b^{2}} \\ &=\sqrt{0.54^{2}+0^{2}}=0.54 \end{aligned} H(ω)ω=0H(ω)=11.27[cos(ω)jsin(ω)]+0.81[cos(2ω)jsin(2ω)]=11.27[cos(0)jsin(0)]+0.81[cos(20)jsin(20)]=0.54+j0=a2+b2 =0.542+02 =0.54

Nyquist: π \pi π

H ( ω ) ∣ ω = π = 1 − 1.27 [ cos ⁡ ( ω ) − j sin ⁡ ( ω ) ] + 0.81 [ cos ⁡ ( 2 ω ) − j sin ⁡ ( 2 ω ) ] = 1 − 1.27 [ cos ⁡ ( π ) − j sin ⁡ ( π ) ] + 0.81 [ cos ⁡ ( 2 π ) − j sin ⁡ ( 2 π ) ] = 3.08 + j 0 ∣ H ( ω ) ∣ = a 2 + b 2 = 3.0 8 2 + 0 2 = 3.08 \begin{aligned} \left.H(\omega)\right|_{\omega=\pi} &=1-1.27[\cos (\omega)-j \sin (\omega)]+0.81[\cos (2 \omega)-j \sin (2 \omega)] \\ &=1-1.27[\cos (\pi)-j \sin (\pi)]+0.81[\cos (2 \pi)-j \sin (2 \pi)] \\ &=3.08+j 0 \\ |H(\omega)| &=\sqrt{a^{2}+b^{2}} \\ &=\sqrt{3.08^{2}+0^{2}}=3.08 \end{aligned} H(ω)ω=πH(ω)=11.27[cos(ω)jsin(ω)]+0.81[cos(2ω)jsin(2ω)]=11.27[cos(π)jsin(π)]+0.81[cos(2π)jsin(2π)]=3.08+j0=a2+b2 =3.082+02 =3.08

1 2 \frac{1}{2} 21 Nyquist: π / 2 \pi/2 π/2

H ( ω ) ∣ ω = π / 2 = 1 − 1.27 [ cos ⁡ ( ω ) − j sin ⁡ ( ω ) ] + 0.81 [ cos ⁡ ( 2 ω ) − j sin ⁡ ( 2 ω ) ] = 1 − 1.27 [ cos ⁡ ( π / 2 ) − j sin ⁡ ( π / 2 ) ] + 0.81 [ cos ⁡ ( π ) − j sin ⁡ ( π ) ] = 0.19 + j 1.27 ∣ H ( ω ) ∣ = a 2 + b 2 = 0.1 9 2 + 1.2 7 2 = 1.28 \begin{aligned} \left.H(\omega)\right|_{\omega=\pi / 2} &=1-1.27[\cos (\omega)-j \sin (\omega)]+0.81[\cos (2 \omega)-j \sin (2 \omega)] \\ &=1-1.27[\cos (\pi / 2)-j \sin (\pi / 2)]+0.81[\cos (\pi)-j \sin (\pi)] \\ &=0.19+j 1.27 \\ |H(\omega)| &=\sqrt{a^{2}+b^{2}} \\ &=\sqrt{0.19^{2}+1.27^{2}}=1.28 \end{aligned} H(ω)ω=π/2H(ω)=11.27[cos(ω)jsin(ω)]+0.81[cos(2ω)jsin(2ω)]=11.27[cos(π/2)jsin(π/2)]+0.81[cos(π)jsin(π)]=0.19+j1.27=a2+b2 =0.192+1.272 =1.28

1 4 \frac{1}{4} 41 Nyquist: π / 4 \pi/4 π/4

H ( ω ) ∣ ω = π / 2 = 1 − 1.27 [ cos ⁡ ( ω ) − j sin ⁡ ( ω ) ] + 0.81 [ cos ⁡ ( 2 ω ) − j sin ⁡ ( 2 ω ) ] = 1 − 1.27 [ cos ⁡ ( π / 4 ) − j sin ⁡ ( π / 4 ) ] + 0.81 [ cos ⁡ ( π / 2 ) − j sin ⁡ ( π / 2 ) ] = 0.11 + j 0.08 ∣ H ( ω ) ∣ = a 2 + b 2 = 0.1 1 2 + 0.0 8 2 = 0.136 \begin{aligned} \left.H(\omega)\right|_{\omega=\pi / 2} &=1-1.27[\cos (\omega)-j \sin (\omega)]+0.81[\cos (2 \omega)-j \sin (2 \omega)] \\ &=1-1.27[\cos (\pi / 4)-j \sin (\pi / 4)]+0.81[\cos (\pi / 2)-j \sin (\pi / 2)] \\ &=0.11+j 0.08 \\ |H(\omega)| &=\sqrt{a^{2}+b^{2}} \\ &=\sqrt{0.11^{2}+0.08^{2}}=0.136 \end{aligned} H(ω)ω=π/2H(ω)=11.27[cos(ω)jsin(ω)]+0.81[cos(2ω)jsin(2ω)]=11.27[cos(π/4)jsin(π/4)]+0.81[cos(π/2)jsin(π/2)]=0.11+j0.08=a2+b2 =0.112+0.082 =0.136

可以看到直接计算的结果,与通过几何关系得到结果非常接近。

二阶反馈滤波器(2nd order feedback filter)

二阶反馈滤波器的差分方程为:
y ( n ) = a 0 x ( n ) − b 1 y ( n − 1 ) − b 2 y ( n − 2 ) y(n)=a_{0} x(n)-b_{1} y(n-1)-b_{2} y(n-2) y(n)=a0x(n)b1y(n1)b2y(n2)
进行 z变换:
Y ( z ) = a 0 X ( z ) − b 1 Y ( z ) z − 1 − b 2 Y ( z ) z − 2 Y(z)=a_{0} X(z)-b_{1} Y(z) z^{-1}-b_{2} Y(z) z^{-2} Y(z)=a0X(z)b1Y(z)z1b2Y(z)z2
得到转换方程:
H ( z ) = a 0 1 1 + b 1 z − 1 + b 2 z − 2 H(z)=a_{0} \frac{1}{1+b_{1} z^{-1}+b_{2} z^{-2}} H(z)=a01+b1z1+b2z21

此时 H ( z ) H(z) H(z) 的分母是个二次方程,对它进行因式分解,可以有:
H ( z ) = a 0 1 ( 1 − P 1 z − 1 ) ( 1 − P 2 z − 1 ) H(z)=a_{0} \frac{1}{\left(1-P_{1} z^{-1}\right)\left(1-P_{2} z^{-1}\right)} H(z)=a0(1P1z1)(1P2z1)1

与之前的分析类似,可以知道 P 1 P_1 P1 P 2 P_2 P2 为共轭复数:
P 1 = R e j Θ P 2 = R e − j Θ \begin{array}{l} P_{1}=\mathrm{Re}^{j \Theta} \\ P_{2}=\mathrm{Re}^{-j \Theta} \end{array} P1=RejΘP2=RejΘ

将其带入式子中,得到:
( 1 − Re ⁡ j Θ z − 1 ) ( 1 − Re ⁡ − j Θ z − 1 ) = 1 − Re ⁡ j Θ z − 1 − Re ⁡ − j Θ z − 1 + R 2 ( e j Θ e − j Θ ) z − 2 = 1 − 2 R cos ⁡ ( Θ ) z − 1 + R 2 z − 2 \begin{array}{l} \left(1-\operatorname{Re}^{j \Theta} z^{-1}\right)\left(1-\operatorname{Re}^{-j \Theta} z^{-1}\right) \\ =1-\operatorname{Re}^{j \Theta} z^{-1}-\operatorname{Re}^{-j \Theta} z^{-1}+R^{2}\left(e^{j \Theta} e^{-j \Theta}\right) z^{-2} \\ = 1-2 R \cos (\Theta) z^{-1}+R^{2} z^{-2} \end{array} (1RejΘz1)(1RejΘz1)=1RejΘz1RejΘz1+R2(ejΘejΘ)z2=12Rcos(Θ)z1+R2z2
H ( z ) = a 0 1 1 + b 1 z − 1 + b 2 z − 2 = a 0 1 ( 1 − 2 R cos ⁡ ( Θ ) z − 1 + R 2 z − 2 ) \begin{aligned} H(z) &=a_{0} \frac{1}{1+b_{1} z^{-1}+b_{2} z^{-2}} \\ &=a_{0} \frac{1}{\left(1-2 R \cos (\Theta) z^{-1}+R^{2} z^{-2}\right)} \end{aligned} H(z)=a01+b1z1+b2z21=a0(12Rcos(Θ)z1+R2z2)1

通过对比可知:
b 1 = − 2 R cos ⁡ ( Θ ) b 2 = R 2 \begin{array}{l} b_{1}=-2 R \cos (\Theta) \\ b_{2}=R^{2} \end{array} b1=2Rcos(Θ)b2=R2

我们以 a 0 = 1.0 a_0 = 1.0 a0=1.0 b 1 = − 1.34 b_1=-1.34 b1=1.34 a 2 = 0.902 a_2=0.902 a2=0.902 为例,可以得到:
R 2 = b 2 = 0.902 R = 0.902 = 0.95 \begin{aligned} R^{2} &=b_{2}=0.902 \\ R &=\sqrt{0.902}=0.95 \end{aligned} R2R=b2=0.902=0.902 =0.95
− 2 Rcos ⁡ ( Θ ) = − 1.34 2 ( 0.95 ) cos ⁡ ( Θ ) = 1.34 cos ⁡ ( Θ ) = 1.34 2 ( 0.95 ) Θ = arccos ⁡ ( 0.707 ) Θ = 4 5 ∘ \begin{aligned} -2 \operatorname{Rcos}(\Theta) &=-1.34 \\ 2(0.95) \cos (\Theta) &=1.34 \\ \cos (\Theta) &=\frac{1.34}{2(0.95)} \\ \Theta &=\arccos (0.707) \\ \Theta &=45^{\circ} \end{aligned} 2Rcos(Θ)2(0.95)cos(Θ)cos(Θ)ΘΘ=1.34=1.34=2(0.95)1.34=arccos(0.707)=45

这样就得到了两个极点,它们位于复平面 半径为 0.95 ,角度为 ± 4 5 ∘ \pm 45^{\circ} ±45 的位置,如下图:
在这里插入图片描述

估计频响

当估计一个以上零点的频响时,需要这么做:

  1. 给定一个频率,在复平面坐标的单位圆外圈定位它
  2. 画一条线,连接该点与所有零点
  3. 将所有线段的长度的倒数相乘,得到的积将是频率的增幅

最后一条规则用公式来说明的话,应该是这样:
∣ H ( e j ω ) ∣ ω = a 0 1 ∏ i = 1 N V i \left|H\left(e^{j \omega}\right)\right|_{\omega}=a_{0} \frac{1}{\prod_{i=1}^{N} V_{i}} H(ejω)ω=a0i=1NVi1
其中 N N N 为滤波器的阶数(也就是零点的个数), V i V_{i} Vi为与极点的距离长度。

0 0 0 π \pi π π / 2 \pi/2 π/2, π / 4 \pi/4 π/4 为例,用上述方法进行计算频响:

在这里插入图片描述

ω = 0 \omega=0 ω=0 时,与两个零点的距离为 0.71、0.71,因此在 ∣ H ( e j ω ) ∣ ω = 1 / ( 0.71 ∗ 0.71 ) = 1.98 \left|H\left(e^{j \omega}\right)\right|_{\omega} = 1/(0.71*0.71)=1.98 H(ejω)ω=1/(0.710.71)=1.98

在这里插入图片描述
ω = π / 4 \omega=\pi/4 ω=π/4 时,与两个零点的距离为 0.05、1.41,因此在 ∣ H ( e j ω ) ∣ ω = 1 / ( 0.05 ∗ 1.41 ) = 14.2 \left|H\left(e^{j \omega}\right)\right|_{\omega} = 1/(0.05 * 1.41)=14.2 H(ejω)ω=1/(0.051.41)=14.2

在这里插入图片描述

ω = π / 2 \omega=\pi/2 ω=π/2 时,与两个零点的距离为 0.71、1.84,因此在 ∣ H ( e j ω ) ∣ ω = 1 / ( 0.71 ∗ 1.84 ) = 0.76 \left|H\left(e^{j \omega}\right)\right|_{\omega} = 1/(0.71 * 1.84)=0.76 H(ejω)ω=1/(0.711.84)=0.76

在这里插入图片描述
ω = π \omega=\pi ω=π 时,与两个零点的距离为 1.8、1.8,因此在 ∣ H ( e j ω ) ∣ ω = 1 / ( 1.8 ∗ 1.8 ) = 0.31 \left|H\left(e^{j \omega}\right)\right|_{\omega} = 1/(1.8 * 1.8)=0.31 H(ejω)ω=1/(1.81.8)=0.31

计算频谱响应

a 0 = 1.0 a_0 = 1.0 a0=1.0 b 1 = − 1.34 b_1=-1.34 b1=1.34 b 2 = 0.902 b_2=0.902 b2=0.902
H ( z ) = a 0 1 1 + b 1 z − 1 + b 2 z − 2 = 1 1 − 1.34 z − 1 + 0.902 z − 2 \begin{aligned} H(\mathrm{z}) &=a_{0} \frac{1}{1+b_{1} z^{-1}+b_{2} z^{-2}} \\ &=\frac{1}{1-1.34 z^{-1}+0.902 z^{-2}} \end{aligned} H(z)=a01+b1z1+b2z21=11.34z1+0.902z21

现在来计算它的频谱响应,公式太难敲了,这里给一个 0Hz 的结果,剩下的大家可以当做练习计算一下。正确的结果在下面的表格。

DC(0Hz)

H ( z ) = 1 1 − 1.34 + 0.902 = 1 0.562 + j 0 ∣ H ( ω ) ∣ = ∣  numerator  ∣ ∣  denominator  ∣ = ∣ 1 ∣ ∣ 0.562 + j 0 ∣ = 1 a 2 + b 2 = 1 0.56 2 2 = 1.78 = 5.00 d B \begin{aligned} H(z) &=\frac{1}{1-1.34+0.902}=\frac{1}{0.562+j 0} \\ |H(\omega)| &=\frac{\mid \text { numerator } \mid}{\mid \text { denominator } \mid}=\frac{|1|}{|0.562+j 0|} \\ &=\frac{1}{\sqrt{a^{2}+b^{2}}} \\ &=\frac{1}{\sqrt{0.562^{2}}} \\ &=1.78=5.00 d B \end{aligned} H(z)H(ω)=11.34+0.9021=0.562+j01= denominator  numerator =0.562+j01=a2+b2 1=0.5622 1=1.78=5.00dB

Frequency( ω \omega ω) ∣ H ( ω ) ∣ \vert H(\omega)\vert H(ω)
Nyquist( π \pi π)-10.2 dB
1/2 Nyquist( π / 2 \pi/2 π/2)-2.56 dB
1/4 Nyquist( π / 4 \pi/4 π/4)23.15 dB

搁架式滤波器(Shelving filter)

搁架式均衡器包含一个零点和一个极点,所以也被称为 " 1st order pole/zero filter ",它的差分方程为:
y ( n ) = a 0 x ( n ) + a 1 x ( n − 1 ) − b 1 y ( n − 1 ) y(n)=a_{0} x(n)+\mathrm{a}_{1} x(n-1)-\mathrm{b}_{1} y(n-1) y(n)=a0x(n)+a1x(n1)b1y(n1)

进行 z变换:
Y ( z ) + b 1 Y ( z ) z − 1 = a 0 X ( z ) + a 1 X ( z ) z − 1 Y ( z ) [ 1 − b 1 z − 1 ] = X ( z ) [ a 0 + a 1 z − 1 ] \begin{aligned} Y(z)+b_{1} Y(z) z^{-1} &=a_{0} X(z)+a_{1} X(z) z^{-1} \\ Y(z)\left[1-b_{1} z^{-1}\right] &=X(z)\left[a_{0}+a_{1} z^{-1}\right] \end{aligned} Y(z)+b1Y(z)z1Y(z)[1b1z1]=a0X(z)+a1X(z)z1=X(z)[a0+a1z1]

得到转换方程:
H ( z ) = Y ( z ) X ( z ) = a 0 1 + α 1 z − 1 1 + b 1 z − 1 H(z)=\frac{Y(z)}{X(z)}=a_{0} \frac{1+\alpha_{1} z^{-1}}{1+b_{1} z^{-1}} H(z)=X(z)Y(z)=a01+b1z11+α1z1
其中 α 1 = a 1 a 0 \alpha_{1}=\frac{a_{1}}{a_{0}} α1=a0a1

估计频响

对转换方程做一些变化:
H ( z ) = a 0 1 + α 1 z − 1 1 + b 1 z − 1 = a 0 1 + α 1 z 1 + b 1 z \begin{aligned} H(\mathrm{z}) &=a_{0} \frac{1+\alpha_{1} z^{-1}}{1+b_{1} z^{-1}} \\ &=a_{0} \frac{1+\frac{\alpha_{1}}{z}}{1+\frac{b_{1}}{z}} \end{aligned} H(z)=a01+b1z11+α1z1=a01+zb11+zα1
可以清楚的看到,它有一个零点 z = − α z=-\alpha z=α,和一个极点 z = − b 1 z=-b_1 z=b1

举个例子,当 a 0 = 1.0 a_0 = 1.0 a0=1.0 a 1 = − 0.92 a_1=-0.92 a1=0.92 b 1 = − 0.71 b_1=-0.71 b1=0.71 时,零点和极点的位置入下图:
在这里插入图片描述
当同时有零点和极点时,估计频谱响应和以前步骤没差别,只是需要同时处理极点和零点两种线段:

  1. 给定一个频率,在复平面坐标的单位圆外圈定位它
  2. 画线,连接该点与所有零点
  3. 画线,连接该点与所有极点
  4. 将所有与零点相连线段的长度相乘,得到零点幅度
  5. 将所有与极点相连线段的长度的倒数相乘,得到极点幅度
  6. 零点幅度除以极点幅度,就是频响

最后一条规则用公式来说明的话,应该是这样:
∣ H ( e j ω ) ∣ ω = a 0 ∏ i = 1 N U i ∏ i = 1 N V i \left|H\left(e^{j \omega}\right)\right|_{\omega}=\frac{a_{0} \prod_{i=1}^{N} U_{i}}{\prod_{i=1}^{N} V_{i}} H(ejω)ω=i=1NVia0i=1NUi

0 0 0 π \pi π π / 2 \pi/2 π/2, π / 4 \pi/4 π/4 为例,用上述方法进行计算频响:

ω = 0 \omega=0 ω=0 时,与零点和极点的距离分别为 0.08、0.29,因此在 ∣ H ( e j ω ) ∣ ω = 0.08 ∗ 1 / 0.29 = 0.27 \left|H\left(e^{j \omega}\right)\right|_{\omega} = 0.08 * 1/0.29=0.27 H(ejω)ω=0.081/0.29=0.27

ω = π / 4 \omega=\pi/4 ω=π/4 时,与零点和极点的距离分别为 1.75、1.70,因此在 ∣ H ( e j ω ) ∣ ω = 1.75 ∗ 1.0 / 1.70 = 0.17 \left|H\left(e^{j \omega}\right)\right|_{\omega} = 1.75 * 1.0/1.70=0.17 H(ejω)ω=1.751.0/1.70=0.17

ω = π / 2 \omega=\pi/2 ω=π/2 时,与零点和极点的距离分别为 1.40、1.30,因此在 ∣ H ( e j ω ) ∣ ω = 1.40 ∗ 1.0 / 1.30 = 1.07 \left|H\left(e^{j \omega}\right)\right|_{\omega} = 1.40 * 1.0/1.30=1.07 H(ejω)ω=1.401.0/1.30=1.07

ω = π \omega=\pi ω=π 时,与零点和极点的距离分别为 1.92、1.71,因此在 ∣ H ( e j ω ) ∣ ω = 1.92 ∗ 1.0 / 1.71 = 1.12 \left|H\left(e^{j \omega}\right)\right|_{\omega} = 1.92 * 1.0/1.71=1.12 H(ejω)ω=1.921.0/1.71=1.12

计算频谱响应

现在来计算它的频谱响应,公式太难敲了,这里给一个 0Hz 的结果,剩下的大家可以当做练习计算一下。正确的结果在下面的表格。

DC(0Hz)

H ( ω ) = 1 − 0.92 [ cos ⁡ ( ω ) − j sin ⁡ ( ω ) ] 1 − 0.71 [ cos ⁡ ( ω ) − j sin ⁡ ( ω ) ] = 1 − 0.92 [ cos ⁡ ( 0 ) − j sin ⁡ ( 0 ) ] 1 − 0.71 [ cos ⁡ ( 0 ) − j sin ⁡ ( 0 ) ] = 1 − 0.92 [ 1 − j 0 ] 1 − 0.71 [ 1 − j 0 ] = 1 − 0.92 1 − 0.71 = 0.08 + j 0 0.29 + j 0 \begin{aligned} H(\omega) &=\frac{1-0.92[\cos (\omega)-j \sin (\omega)]}{1-0.71[\cos (\omega)-j \sin (\omega)]} \\ &=\frac{1-0.92[\cos (0)-j \sin (0)]}{1-0.71[\cos (0)-j \sin (0)]}=\frac{1-0.92[1-j 0]}{1-0.71[1-j 0]} \\ &=\frac{1-0.92}{1-0.71}=\frac{0.08+j 0}{0.29+j 0} \end{aligned} H(ω)=10.71[cos(ω)jsin(ω)]10.92[cos(ω)jsin(ω)]=10.71[cos(0)jsin(0)]10.92[cos(0)jsin(0)]=10.71[1j0]10.92[1j0]=10.7110.92=0.29+j00.08+j0
∣ H ( ω ) ∣ = ∣ 0.08 + j 0 ∣ ∣ 0.29 + j 0 ∣ = a n u m 2 + b n u m 2 a denom 2 + b denom 2 = 0.0 8 2 0.2 9 2 = 0.276 = − 11.2 d B \begin{aligned} |H(\omega)| &=\frac{|0.08+j 0|}{|0.29+j 0|} \\ &=\frac{\sqrt{a_{n u m}^{2}+b_{n u m}^{2}}}{\sqrt{a_{\text {denom}}^{2}+b_{\text {denom}}^{2}}} \\ &=\frac{\sqrt{0.08^{2}}}{\sqrt{0.29^{2}}}=0.276=-11.2 d B \end{aligned} H(ω)=0.29+j00.08+j0=adenom2+bdenom2 anum2+bnum2 =0.292 0.082 =0.276=11.2dB

Frequency( ω \omega ω) ∣ H ( ω ) ∣ \vert H(\omega)\vert H(ω)
Nyquist( π \pi π)1.00 dB
1/2 Nyquist( π / 2 \pi/2 π/2)0.82 dB
1/4 Nyquist( π / 4 \pi/4 π/4)0.375 dB

双二阶滤波器(Biquad Filter)

双二阶滤波器最多有两个零点和两个极点,它的差分方程为:
y ( n ) = a 0 x ( n ) + a 1 x ( n − 1 ) + a 2 x ( n − 2 ) − b 1 y ( n − 1 ) − b 2 y ( n − 2 ) y(n)=a_{0} x(n)+a_{1} x(n-1)+a_{2} x(n-2)-b_{1} y(n-1)-b_{2} y(n-2) y(n)=a0x(n)+a1x(n1)+a2x(n2)b1y(n1)b2y(n2)

进行 z变换:
Y ( z ) + b 1 Y ( z ) z − 1 + b 2 Y ( z ) z − 2 = a 0 X ( z ) + a 1 X ( z ) z − 1 + a 2 X ( z ) z − 2 Y ( z ) [ 1 + b 1 z − 1 + b 2 z − 2 ] = X ( z ) [ a 0 + a 1 z − 1 + a 2 z − 2 ] \begin{aligned} Y(z)+b_{1} Y(z) z^{-1}+b_{2} Y(z) z^{-2} &=a_{0} X(z)+a_{1} X(z) z^{-1}+a_{2} X(z) z^{-2} \\ Y(z)\left[1+b_{1} z^{-1}+b_{2} z^{-2}\right] &=X(z)\left[a_{0}+a_{1} z^{-1}+a_{2} z^{-2}\right] \end{aligned} Y(z)+b1Y(z)z1+b2Y(z)z2Y(z)[1+b1z1+b2z2]=a0X(z)+a1X(z)z1+a2X(z)z2=X(z)[a0+a1z1+a2z2]

得到转换方程为:
H ( z ) = Y ( z ) X ( z ) = a 0 + a 1 z − 1 + a 2 z − 2 1 + b 1 z − 1 + b 2 z − 2 = a 0 1 + α 1 z − 1 + α 2 z − 2 1 + b 1 z − 1 + b 2 z − 2 \begin{aligned} H(z)=\frac{Y(z)}{X(z)}&=\frac{a_{0}+a_{1} z^{-1}+a_{2} z^{-2}}{1+b_{1} z^{-1}+b_{2} z^{-2}} \\ &=a_{0} \frac{1+\alpha_{1} z^{-1}+\alpha_{2} z^{-2}}{1+b_{1} z^{-1}+b_{2} z^{-2}} \end{aligned} H(z)=X(z)Y(z)=1+b1z1+b2z2a0+a1z1+a2z2=a01+b1z1+b2z21+α1z1+α2z2
其中 α 1 = a 1 a 0 α 2 = a 2 a 0 \alpha_{1}=\frac{a_{1}}{a_{0}} \quad \alpha_{2}=\frac{a_{2}}{a_{0}} α1=a0a1α2=a0a2

估计频响

双二阶滤波器最多能从分子和分母中分别产生一对共轭零点和共轭极点。当然,我们也可以将某些系数设置为 0.0,例如当 a 1 = 0.0 a_1=0.0 a1=0.0 时,就会得到一阶前馈和二阶反馈滤波器的结合。

通过前面的分析,可以将双二阶滤波器的转换方程转换下面这种简单的形式:
H ( z ) = a 0 1 − 2 R z cos ⁡ ( θ ) z − 1 + R z 2 z − 2 1 − 2 R p cos ⁡ ( ϕ ) z − 1 + R p 2 z − 2 H(z)=a_{0} \frac{1-2 R_{z} \cos (\theta) z^{-1}+R_{z}^{2} z^{-2}}{1-2 R_{p} \cos (\phi) z^{-1}+R_{p}^{2} z^{-2}} H(z)=a012Rpcos(ϕ)z1+Rp2z212Rzcos(θ)z1+Rz2z2

举个例子来说明如何估计频响,我们假设
a 0 = 1.0 a 1 = 0.73 a 2 = 1.00 b 1 = − 0.78 b 2 = 0.88 \begin{array}{l} a_{0}=1.0 \\ a_{1}=0.73 \\ a_{2}=1.00 \\ b_{1}=-0.78 \\ b_{2}=0.88 \end{array} a0=1.0a1=0.73a2=1.00b1=0.78b2=0.88

计算零点位置:
a 2 = R z 2 = 1.00 R z = 1.00 = 1.00 a 1 = − 2 R cos ⁡ ( Θ ) = 0.73 2 ( 1.00 ) cos ⁡ ( Θ ) = − 0.73 cos ⁡ ( Θ ) = − 0.365 Θ = arccos ⁡ ( − 0.365 ) Θ = 111. 1 o \begin{aligned} a_{2} &=R_{z}^{2}=1.00 \\ R_{z} &=\sqrt{1.00}=1.00 \\ \\ a_{1} &=-2 R \cos (\Theta)=0.73 \\ 2(1.00) \cos (\Theta) &=-0.73 \\ \cos (\Theta) &=-0.365 \\ \Theta &=\arccos (-0.365) \\ \Theta &=111.1^{o} \end{aligned} a2Rza12(1.00)cos(Θ)cos(Θ)ΘΘ=Rz2=1.00=1.00 =1.00=2Rcos(Θ)=0.73=0.73=0.365=arccos(0.365)=111.1o

计算极点位置:
b 2 = R p 2 = 0.88 R p = 0.88 = 0.94 2 ( 0.94 ) cos ⁡ ( ϕ ) = 0.78 cos ⁡ ( ϕ ) = 0.78 2 ( 0.94 ) ϕ = arccos ⁡ ( 0.414 ) ϕ = 65. 5 ∘ \begin{aligned} b_{2} &=R_{p}^{2}=0.88 \\ R_{p} &=\sqrt{0.88}=0.94 \\\\ 2(0.94) \cos (\phi) &=0.78 \\ \cos (\phi) &=\frac{0.78}{2(0.94)} \\ \phi &=\arccos (0.414) \\ \phi &=65.5^{\circ} \end{aligned} b2Rp2(0.94)cos(ϕ)cos(ϕ)ϕϕ=Rp2=0.88=0.88 =0.94=0.78=2(0.94)0.78=arccos(0.414)=65.5

接下来步骤与 搁架式滤波器 中估计频响步骤一致,不再赘述。

双二阶滤波器的实现

双二阶滤波器有多种形式,其中
y ( n ) = a 0 x ( n ) + a 1 x ( n − 1 ) + a 2 x ( n − 2 ) − b 1 y ( n − 1 ) − b 2 y ( n − 2 ) y(n)=a_{0} x(n)+a_{1} x(n-1)+a_{2} x(n-2)-b_{1} y(n-1)-b_{2} y(n-2) y(n)=a0x(n)+a1x(n1)+a2x(n2)b1y(n1)b2y(n2)
被称为 “Direct Form”,它实现起来非常简单:

yn = a0*xn + a1*x(n−1) + a2*x(n−2)—b1*y(n−1)—b2*y(n−2)

// --- update state registers
x(n−2) = x(n−1)
x(n−1) = xn
y(n−2) = y(n−1) y(n−1) = yn

此外还有三种常用的形式,如下图:
在这里插入图片描述
所有这四种形式都会产生相同的差分方程。许多DSP工程师根据其计算效率、内存存储要求以及对系数中舍入误差的敏感性来选择需要的形式。

libaa 中你可以找到四种形式的所有实现。具体细节就不再赘述了。

总结

本文介绍了多种滤波器,并给出它们的差分方程、变换方程等。针对每种滤波器,我们都举了一个具体的实例来说明。同时,还讨论了零点和极点对频响的影响,已经如何用平面几何的方法计算频响。最后给出了双二阶滤波器的 C++ 实现。

  • 12
    点赞
  • 92
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
数字图像处理中的IIR滤波器设计是指设计用于图像处理的无限脉冲响应滤波器IIR滤波器是一种递归滤波器,与FIR滤波器相比,具有更高的计算效率和更窄的频率响应。在数字图像处理中,IIR滤波器主要用于图像增强、去噪和平滑处理设计IIR滤波器的主要步骤如下: 1. 确定滤波器的频率响应要求。根据应用的需求,确定滤波器的通带、阻带和过渡带的频率响应要求。 2. 选择滤波器的类型。根据频率响应要求选择适合的滤波器类型,如低通、高通、带通或带阻滤波器。 3. 设计IIR滤波器的原型。根据滤波器的类型和频率响应要求,设计出满足要求的IIR滤波器的原型。 4. 转换原型为离散滤波器。利用模拟滤波器设计方法,将IIR滤波器的原型转换为离散滤波器。 5. 选择适当的滤波器结构。根据滤波器的实现要求,选择适当的滤波器结构,如直接形式、级联形式或并联形式。 6. 优化滤波器的参数。根据应用要求进一步优化滤波器的参数,如增益、频率响应或延迟。 7. 对滤波器进行性能评估。使用模拟信号或真实图像对滤波器进行性能评估,检查滤波器是否满足设计要求。 总体而言,设计IIR滤波器是一个复杂的过程,需要考虑频域特性、时域特性和计算效率等方面。通过合理的设计和优化,可以实现对图像进行增强、去噪和平滑等处理,提高图像的质量和清晰度。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值