数字滤波器的设计

文章目录

  • 先导知识
    • 时频域互换
    • 什么是滤波器?
    • 如何设计滤波器?
    • FT、LT、ZT之间的(映射)关系
    • 零、极点分布如何影响频率响应
  • 从均值滤波看滤波器及系统函数
    • 时域表达式
    • 频率表达式
    • 零极点分布图
    • 频率响应分析
  • FIR和IIR滤波器的比较
    • 性能上
    • 结构上
    • 设计工具上
    • 效果上
  • FIR滤波器的设计
    • 基本设计思路
    • 窗函数法
    • 频率采样法
    • 响应最优法
      • 最小二乘法
      • 切比雪夫等波纹最佳逼近法
    • FIR数字滤波器设计总结
  • IIR滤波器设计
    • 基本设计思路
    • 模拟滤波器的设计
      • 巴特沃斯滤波器
        • 如何根据指标求出滤波器阶数N
        • 低通巴特沃斯滤波器设计步骤
        • 设计低通巴特沃斯滤波器实例
      • 切比雪夫I型滤波器
      • 椭圆滤波器
    • 高通、带通和带阻滤波器的设计
      • 归一化低通滤波器
      • 低通到高通的频率转换
      • 低通到带通的频率转换
      • 低通到带阻的频率转换
      • 模拟滤波器一般设计步骤
      • 书上的频率变换
        • 映射关系
        • 模拟低通到高通
          • 设计实例
        • 模拟低通到带通
          • 设计实例
        • 模拟低通到带阻
    • 从模拟到数字的转换方法
      • 脉冲响应不变法
        • 基本思路
        • 推导过程
      • 双线性变换法
        • 基本思路
        • 转换性能分析
        • IIR滤波器设计实例
    • IIR数字滤波器设计总结

Author:CofCai
personal page
CSDN page
Email✉️:[email protected]
QQ:1664866311

说明:本文并非全部原创,是在网上学习各位前辈的文章后写的学习总结,文中有些图片和代码使用了网上的文章,若侵比删。所参考文章的链接已在文中给出!

先导知识

时频域互换

从时域我们很难看出信号包含那些频率成分,也很难去掉信号中某些特定的成分。如果能将信号表达成不同频率成分之和,那么不就很容易看出该信号包含那些频率成分了吗。此时,就需要傅里叶级数(周期信号)、傅里叶变换(非周期信号)等。对于离散信号,需要DTFT(离散时间傅里叶变换)、DFS(离散傅里叶级数、离散周期信号)、DFT(离散傅里叶变换、离散非周期信号)等。

  • 连续(模拟)信号

    • FS

      将周期连续信号变换到频域。

    • FT

      将非周期连续信号变换到频域。

    • LT

      变换到复平面,及s平面。

  • 离散(数字)信号

    • DTFT

      将数字信号变换到频域,此时频域是连续的。

    • DFS

      将周期数字信号变换到频域。

    • DFT

      将数字信号变换到频域,此时频域也是离散的。

    • ZT

      变换到z平面。

什么是滤波器?

滤波器就是滤掉干扰信息(噪声),保留有用信息

下面分别是按滤掉噪声频率的几类滤波器的幅频曲线图:

数字滤波器的设计_第1张图片

设计常规滤波器的时候,我们一般采用另外一种分类,FIR(Finite Impulse Response)和IIR(Infinite Impulse Response)filter,即有限脉冲响应滤波器和无限脉冲响应滤波器。

理想脉冲信号,其傅里叶变换恒为1,也就时包含了所有频率分量,是一个理想的测试信号,能够激发出所有单位频率分量的响应,因此理想脉冲信号的响应,就代表了系统的特性。

滤波器也可以看成一个系统,如果用一个理想脉冲信号激励,就会有输出,我们把输出个数有限的称为有限脉冲响应滤波器(FIR);输出无限多的称为无限脉冲响应滤波器(IIR)。

滤波器分为模拟滤波器数字滤波器。模拟滤波器的理论和设计方法已经非常成熟,可以通过模拟滤波器间接设计数字滤波器。

如何设计滤波器?

就如第一幅图一样,我们可以通过其幅频曲线得到其截止频率、通带情况。那么怎么获得幅频曲线图呢?那就是通过系统函数
H ( j ω ) = ∣ H ( j ω ) ∣ e θ ( ω ) H(j\omega)=\left|H(j\omega)\right|e^{\theta(\omega)} H(jω)=H(jω)eθ(ω)
∣ H ( j ω ) ∣ |H(j\omega)| H(jω)就是其幅频特性曲线, θ ( ω ) \theta(\omega) θ(ω)就是其相频特性曲线。

如何得到系统函数:
由系统的特性分析得到微分方程或差分方程,再拉普拉斯变换或z变换。

FT、LT、ZT之间的(映射)关系

LT是对连续FT的拓展,即从频率到复频域, j ω ⟹ s = δ + j ω j{\omega}{\Longrightarrow}s={\delta}+j{\omega} jωs=δ+jω

ZT是对离散FT的拓展,也可以看是对LT的再映射,即 z = e s T s z=e^{sT_s} z=esTs

如何从DTFT到ZT,请看。简单说一下:
D F T : X ( j ω ) = ∑ n = − ∞ + ∞ x ( n ) e j ω n T s DFT:X(j\omega)=\sum_{n=-\infin}^{+\infin}x(n)e^{j{\omega}nT_s} DFT:X(jω)=n=+x(n)ejωnTs
同FT到LT一样,为了满足绝对可和条件,乘上一个衰减因子 e δ t = e δ n T s e^{{\delta}t}=e^{{\delta}nT_s} eδt=eδnTs(离散化)。
X ( j ω ) = ∑ n = − ∞ + ∞ x ( n ) e j ω n T s e δ n T s = ∑ n = − ∞ + ∞ x ( n ) e − ( δ + j ω ) n T s X(j\omega)=\sum_{n=-\infin}^{+\infin}x(n)e^{j{\omega}nT_s}e^{{\delta}nT_s}\\ =\sum_{n=-\infin}^{+\infin}x(n)e^{-({\delta}+j{\omega})nT_s} X(jω)=n=+x(n)ejωnTseδnTs=n=+x(n)e(δ+jω)nTs
z = e ( δ + j ω ) T s z=e^{({\delta}+j{\omega})T_s} z=e(δ+jω)Ts,得到DFT的式子为:
X ( j ω ) = ∑ n = − ∞ + ∞ x ( n ) z − n X(j{\omega})=\sum_{n=-\infin}^{+\infin}x(n)z^{-n} X(jω)=n=+x(n)zn
上式就是Z变换了。

数字滤波器的设计_第2张图片
数字滤波器的设计_第3张图片

如何理解上面的规律?

  • 需要明白幅频曲线自变量是频率 ω \omega ω,而不是 s = δ + j ω s={\delta}+j{\omega} s=δ+jω
  • H ( j ω ) = ∣ H ( j ω ) ∣ e θ ( j ω ) = N u m ( j ω ) / D e n ( j ω ) H(j{\omega})=|H(j{\omega})|e^{{\theta}(j{\omega})}=Num(j{\omega})/Den(j{\omega}) H(jω)=H(jω)eθ(jω)=Num(jω)/Den(jω),其中的 ∣ H ( j ω ) ∣ |H(j\omega)| H(jω)就是幅频曲线、 θ ( j ω ) \theta{(j\omega)} θjω就是相频响应。
  • s平面的虚轴(频率轴)被ZT映射到z平面的单位圆上。

因此,分析幅频响应时,频率轴在单位圆上,这也是为什么上面提到的规律都在说单位圆上的点怎么怎么样。

  • 对于规律一,因为零点就在单位圆上,因此当频率为零点对应的频率时, ∣ H ( j ω ) ∣ = 0 |H(j\omega)|=0 H(jω)=0,因此幅值响应为零。
  • 对于规律二,不在单位圆上的零点,单位圆上越靠近零点的频率,其 ∣ H ( j ω ) ∣ |H(j\omega)| H(jω)也就越小。
  • 对于规律三,因为是极点,极点为0时即系统函数的分母为0, ∣ H ( j ω ) ∣ |H(j\omega)| H(jω)很大。(至于为什么要指定是单位圆内部的极点呢?我猜是单位圆外部的极点使系统不稳定,因此不必讨论)

数字滤波器的设计_第4张图片

零、极点分布如何影响频率响应

H ( z ) = A ∏ r = 1 M ( 1 − c r z − 1 ) ∏ r = 1 N ( 1 − d r z − 1 ) ∣ H ( e j ω ) ∣ = ∣ A ∣ ∏ r = 1 M ∣ z r ∣ ∏ r = 1 N ∣ P r ∣ ϕ ( ω ) = ω ( N − M ) + ∑ r = 1 N α r − ∑ r = 1 M β r H(z)=A\frac{\prod_{r=1}^M(1-c_rz^{-1})}{\prod_{r=1}^{N}(1-d_rz^{-1})} \\ |H(e^{j\omega})|=|A|\frac{\prod_{r=1}^M|z_r|}{\prod_{r=1}^N{|P_r|}} \\ \phi(\omega)=\omega(N-M)+\sum_{r=1}^{N}\alpha_r-\sum_{r=1}^{M}\beta_r H(z)=Ar=1N(1drz1)r=1M(1crz1)H(ejω)=Ar=1NPrr=1Mzrϕ(ω)=ω(NM)+r=1Nαrr=1Mβr

幅频响应等于所有的零点到 ω \omega ω的模长的乘积除以所有的极点到 ω \omega ω的模长的乘积;相频响应等于所有的零点与 ω \omega ω形成的夹角之和减去所有的极点与 ω \omega ω形成的夹角之和。

从均值滤波看滤波器及系统函数

时域表达式

y ( n ) = 1 N ∑ k = 0 N x ( n − k ) = 1 N [ x ( n ) + . . . + x ( n − N + 1 ) ] y(n)=\frac{1}{N}\sum_{k=0}^Nx(n-k)\\=\frac{1}{N}\left[x(n)+...+x(n-N+1)\right] y(n)=N1k=0Nx(nk)=N1[x(n)+...+x(nN+1)]

x ( n ) x(n) x(n)是当前测量值, x ( n − N + 1 ) x(n-N+1) x(nN+1)是前第N-1次测量值。

频率表达式

对均值滤波的时域表达式进行Z变换得:
H ( z ) = 1 N ∑ k = 0 N z − N = 1 N 1 − z − N 1 − z − 1 H(z)=\frac{1}{N}\sum_{k=0}^{N}z^{-N}\\=\frac{1}{N}\frac{1-z^{-N}}{1-z^{-1}} H(z)=N1k=0NzN=N11z11zN
z = e j ω z=e^{j\omega} z=ejω得:
H ( e j ω ) = 1 N 1 − e − j ω N 1 − e − j ω = 1 N e − j ω ( N − 1 ) 2 sin ⁡ ( ω N ) / 2 sin ⁡ ( ω ) / 2 H(e^{j\omega})=\frac{1}{N}\frac{1-e^{-j{\omega}N}}{1-e^{-j{\omega}}}\\=\frac{1}{N}e^{-j\frac{\omega(N-1)}{2}}\frac{\sin({\omega}N)/2}{\sin(\omega)/2} H(ejω)=N11ejω1ejωN=N1ej2ω(N1)sin(ω)/2sin(ωN)/2

零极点分布图

H ( z ) = 1 N 1 − z − N 1 − z − 1 = 1 N z N − 1 z N − z N − 1 H(z)=\frac{1}{N}\frac{1-z^{-N}}{1-z^{-1}}\\=\frac{1}{N}\frac{z^{N}-1}{z^{N}-z^{N-1}} H(z)=N11z11zN=N1zNzN1zN1

matlab代码:

NN = [3 6 12];

for i = 1:3
    N = NN(i);
    B = ones(1, N);
    B = [B -1];
    A = zeros(1, N-1);
    A = [1 -1 A];
    subplot(3, 1, i);
    zplane(B, A);
    xlabel(['N=', num2str(N)]);
end

数字滤波器的设计_第5张图片

频率响应分析

python代码分析均值滤波频率响应,采样率为200Hz,阶数为7。

from scipy.optimize import newton
from scipy.signal import freqz, dimpulse, dstep
from math import sin, cos, sqrt, pi
import numpy as np
import matplotlib.pyplot as plt
import sys

#函数用于计算移动平均滤波器的截止频率
def get_filter_cutoff(N, **kwargs):
    func = lambda w: sin(N*w/2) - N/sqrt(2) * sin(w/2)
    deriv = lambda w: cos(N*w/2) * N/2 - N/sqrt(2) * cos(w/2) / 2
    omega_0 = pi/N  # Starting condition: halfway the first period of sin
    return newton(func, omega_0, deriv, **kwargs)

#设置采样率
sample_rate = 200 #Hz
N = 7

# 计算截止频率
w_c = get_filter_cutoff(N)
cutoff_freq = w_c * sample_rate / (2 * pi)

# 滤波器参数
b = np.ones(N)
a = np.array([N] + [0]*(N-1))

#频率响应
w, h = freqz(b, a, worN=4096)
#转为频率
w *= sample_rate / (2 * pi)                      

#绘制波特图
plt.subplot(2, 1, 1)
plt.suptitle("Bode")
#转换为分贝
plt.plot(w, 20 * np.log10(abs(h)))       
plt.ylabel('Magnitude [dB]')
plt.xlim(0, sample_rate / 2)
plt.ylim(-60, 10)
plt.axvline(cutoff_freq, color='red')
plt.axhline(-3.01, linewidth=0.8, color='black', linestyle=':')

# 相频响应
plt.subplot(2, 1, 2)
plt.plot(w, 180 * np.angle(h) / pi)      
plt.xlabel('Frequency [Hz]')
plt.ylabel('Phase [°]')
plt.xlim(0, sample_rate / 2)
plt.ylim(-180, 90)
plt.yticks([-180, -135, -90, -45, 0, 45, 90])
plt.axvline(cutoff_freq, color='red')
plt.show()

数字滤波器的设计_第6张图片

改变滤波器阶数,观察幅频响应(N=3,7,18):

数字滤波器的设计_第7张图片

可以看出,均值滤波器:

  • 是一个低通滤波器
  • 随着滤波器得阶数(长度)增加(求和的项越来越多),截止频率变小,通带变窄。滤波器的响应变慢,延迟变大。
  • 是FIR滤波器

FIR和IIR滤波器的比较

稳定和线性相位特性是FIR滤波器最突出的优点,但阶数较高;IIR滤波器相位非线性,但阶数低。

性能上

  • IIR滤波器系统函数的极点可位于单位圆内的任何地方,因此零点和极点相结合,可用较低的阶数获得较高的选择性,所用的存储单元少,计算量小,经济效应高。但是这个高效率是以相位的非线性为代价的。
  • 相反,FIR滤波器可以得到严格的线性相位,然而由于FIR滤波器系统函数的极点固定在原点,因而只能用较高的阶数达到较高的选择性。
  • 对于同样的滤波器幅频特性指标,FIR滤波器所要求的阶数一般比IIR滤波器高5~10倍,信号延时也比较大。

结构上

  • IIR滤波器必须采用递归结构,极点位置必须在单位圆内,否则系统不稳定。另外,这种结构中由于运算过程中对序列的舍入处理,会引起寄生振荡。
  • FIR滤波器主要采用非递归结构,有限精度运算中不存在稳定性问题,运算误差引起的输出信号噪声功率也较小。此外,FIR滤波器可以采用FFT算法实现,速度大大提高。

设计工具上

  • IIR滤波器可以借助成熟的模拟滤波器设计理论及成果。
  • FIR滤波器计算带通和阻带衰减等仍无显示表达式,边界频率也不易精确控制。

效果上

  • IIR滤波器虽然设计简单,但主要是用于设计具有片段常数特性选频型滤波器,比如低通、高通、带通及带阻等,往往脱离不了几种典型模拟滤波器的频响特性的约束。
  • 而FIR滤波器要灵活得多,易于适应某些特殊的应用,比如只想滤掉特定的不连续的频率。

从上面可以看出,IIR和FIR滤波器各有所长,在实际运用当中应全面考虑再加以选择。比如,对于相位要求不高的场合,如语音通讯等可以选用IIR滤波器;对于图象信号处理等相位要求高的场合应采用FIR滤波器。

FIR滤波器的设计

如何快速设计一个FIR滤波器(一)

如何快速设计一个FIR滤波器(二)

基本设计思路

FIR滤波器的设计方法和IIR滤波器的设计方法有很大差别。FIR滤波器的设计任务是选择有限长度 h ( n ) h(n) h(n),使频率响应函数 H ( e j ω ) H(e^{j\omega}) H(ejω)满足技术指标要求。

下面介绍几种设计FIR滤波器的方法:窗函数法、频率采样法、响应最优法(切比雪夫等波纹逼近法、最小二乘法)。

窗函数法

窗函数的作用
加窗原理和频谱泄露 深入理解

FFT变换只能对有限长度的时域数据进行变换,因此,需要对时域信号进行信号截断。即使是周期信号,如果截断的时间长度不是周期的整数倍(周期截断),那么,截取后的信号将会存在泄漏。为了将这个泄漏误差减少到最小程度(注意我说是的减少,而不是消除),我们需要使用加权函数,也叫窗函数加窗主要是为了使时域信号似乎更好地满足FFT处理的周期性要求,减少泄漏。

如下图所示:

  • 若周期截断,则FFT频谱为单一谱线;
  • 若为非周期截断,则频谱出现拖尾,如图中部所示,可以看出泄漏很严重。

数字滤波器的设计_第8张图片

为了减少泄漏,给信号施加一个窗函数(如图中上部红色曲线所示),原始截断后的信号与这个窗函数相乘之后得到的信号为上面右侧的信号。可以看出,此时,信号的起始时刻和结束时刻幅值都为0,也就是说在这个时间长度内,信号为周期信号,但是只有一个周期。对这个信号做FFT分析,得到的频谱如下部右侧所示。相比较之前未加窗的频谱,可以看出,泄漏已明显改善,但并没有完全消除。因此,窗函数只能减少泄漏,不能消除泄漏。

基于窗函数法设计FIR滤波器,其基本步骤如下:

  1. 确定频域的响应函数 H d ( e j ω ) H_d(e^{j\omega}) Hd(ejω),低通、高通、带通或者其它;
  2. 确定频域的响应函数 H d ( e j ω ) H_d(e^{j\omega}) Hd(ejω)的傅里叶逆变换,找到连续脉冲响应函数 h d ( t ) h_d(t) hd(t)
  3. 对连续脉冲响应函数 h d ( t ) h_d(t) hd(t)按照一定的采样频率进行采样,获得离散信号 h d ( m ) h_d(m) hd(m)
  4. 选择合适的窗函数,对离散信号 h d ( m ) h_d(m) hd(m)加窗,获得有限长度的脉冲响应 h ( m ) h(m) h(m)

MATLAB中基于窗函数法设计滤波器:

% h = fir1(n, Wn, ftype, window);
% n表示滤波器阶数;Wn表示归一化后的滤波器截止频率,可表示成[fl fh]的形式;ftype表示滤波器类型;window表示窗函数类型。

% 这是一个24阶的带通滤波器,归一化截止频率为[0.2 0.4]
h = fir1(24, [0.2 0.4]);
freqz(h, 1, 512);

数字滤波器的设计_第9张图片

频率采样法

设希望逼近的滤波器的频响函数用 H d ( e j ω ) H_d(e^{j\omega}) Hd(ejω)表示,对 H d ( e j ω ) H_d(e^{j\omega}) Hd(ejω) ω = 0 \omega=0 ω=0 2 π 2\pi 2π之间等间隔采样N点,得到 H d ( k ) H_d(k) Hd(k)
H d ( k ) = H d ( e j ω ) ∣ ω = 2 π N k k = 0 , 1 , . . . , N − 1 H_d(k)=H_d(e^{j\omega})|_{\omega=\frac{2\pi}{N}k}{\quad}k=0,1,...,N-1 Hd(k)=Hd(ejω)ω=N2πkk=0,1,...,N1
再对 H d ( k ) H_d(k) Hd(k)进行N点IDFT,得到 h ( n ) h(n) h(n):
h ( n ) = I D F T [ H d ( k ) ] = 1 N ∑ k = 0 N − 1 H d ( k ) W N − k n n = 0 , 1 , 2 , . . . , N − 1 h(n)=IDFT[H_d(k)]=\frac{1}{N}\sum_{k=0}^{N-1}H_d(k)W_N^{-kn}{\quad}n=0,1,2,...,N-1 h(n)=IDFT[Hd(k)]=N1k=0N1Hd(k)WNknn=0,1,2,...,N1
h ( n ) h(n) h(n)作为所设计的FIR滤波器的单位冲激响应,其系统函数 H ( z ) H(z) H(z)为:
H ( z ) = ∑ n = 0 N − 1 h ( n ) z − n H(z)=\sum_{n=0}^{N-1}h(n)z^{-n} H(z)=n=0N1h(n)zn
或者根据频率域采样理论,利用频率域采样值 H d ( k ) H_d(k) Hd(k)恢复原信号的Z变换,得到 H ( z ) H(z) H(z)的内插表示形式为:
H ( z ) = 1 − z − 1 N ∑ k = 0 N − 1 H d ( k ) 1 − W N − k z − 1 H(z)=\frac{1-z^{-1}}{N}\sum_{k=0}^{N-1}\frac{H_d(k)}{1-W_N^{-k}z^{-1}} H(z)=N1z1k=0N11WNkz1Hd(k)
上述两种方法如下:

数字滤波器的设计_第10张图片

MATLAB中使用频率采样法设计FIR滤波器:

% h = fir2(n, f, m);
% n表示阶数;f表示分立点频率矢量;m表示分立点对应的幅值响应矢量

f = [0 0.7 0.7 1];
m = [10 1 0 0];
h = fir2(24, f, m);
freqz(h, 1);

数字滤波器的设计_第11张图片

响应最优法

主要思路就是找到一组脉冲响应,让它的频域响应 H ( e j ω ) H(e^{j\omega}) H(ejω)与期望的滤波器的频域响应 H d ( e j ω ) H_d(e^{j\omega}) Hd(ejω)尽可能一致。主要通过两种方法来实现,一个是最小二乘法、另一个是(切比雪夫)等波纹逼近法。

最小二乘法

与频率采样法近似,期望的频率响应用一组分立的点 ( f i ,   A ( f i ) ) i = 1 , 2 , . . . , N (f_i,\ A(f_i)){\quad}i=1,2,...,N (fi, A(fi))i=1,2,...,N来表示,优化目标如下:
∑ i = 1 N W i [ H ( f i ) − H d ( f i ) ] 2 → m i n \sum_{i=1}^{N}W_i\left[H(f_i)-H_d(f_i)\right]^2{\rightarrow}min i=1NWi[H(fi)Hd(fi)]2min
其中 W i W_i Wi为不同频率下的权重。

MATLAB指令为:

% h = firls(n, f, m);
% n为滤波器阶数,f表示分立点的矢量,m表示分立点对应的幅值响应矢量。
% 下面以低通滤波器为例:
f = [0 0.3 0.3 1];
m = [10 1 0 0];
h = firls(24, f, m);
freqz(h, 1)

数字滤波器的设计_第12张图片

切比雪夫等波纹最佳逼近法

书上的:

H d ( ω ) H_d(\omega) Hd(ω)表示希望逼近的幅度特性函数,要求设计线性相位FIR数字滤波器时, H d ( ω ) H_d(\omega) Hd(ω)必须满足线性相位约束条件。用 H g ( ω ) H_g(\omega) Hg(ω)表示实际设计的滤波器幅度特性函数,定义加权误差函数 E ( ω ) E(\omega) E(ω)为:
E ( ω ) = W ( ω ) [ H d ( ω ) − H g ( ω ) ] m a x   E ( ω ) → m i n E(\omega)=W(\omega)[H_d(\omega)-H_g(\omega)]\\ max\ E(\omega){\rightarrow}min E(ω)=W(ω)[Hd(ω)Hg(ω)]max E(ω)min

另外:

与最小二乘法不同(方差最小),切比雪夫法采用的方案是最大误差最小,即:
max ⁡ ∣ W i ( H ( f i ) − H d ( f i ) ) ∣ → min ⁡ \max{\left|W_i(H(f_i)-H_d(f_i))\right|}{\rightarrow}\min maxWi(H(fi)Hd(fi))min
MATLAB指令:

h = firpm(n, f, m);
% 对于切比雪夫法,频率响应不能直接从1降到0

% f = [0 0.1 0.1 1]这样是不行的
f = [0 0.1 0.101 1];
m = [100 1 0 0];
h = firpm(24, f, m);
freqz(h, 1)

数字滤波器的设计_第13张图片

FIR数字滤波器设计总结

对于响应最优法更像是拟合,下图是窗函数法和频率采样法的流程图:
数字滤波器的设计_第14张图片

IIR滤波器设计

如何快速设计一个IIR滤波器

基本设计思路

利用模拟滤波器成熟的理论及其设计方法来设计IIR数字低通数字滤波器是常用的方法。设计过程是:

  1. 按照数字滤波器技术指标要求设计一个过渡模拟低通滤波器 H a ( s ) H_a(s) Ha(s)
  2. 再按照一定的转换关系将 H a ( s ) H_a(s) Ha(s)转换成数字低通滤波器的系统函数 H ( z ) H(z) H(z)

所以可见,设计的关键就是找到某种转换关系,将s平面上的 H a ( s ) H_a(s) Ha(s)转换到z平面上的 H ( z ) H(z) H(z)。这种转换关系需要满足一定的条件:

  1. 因果稳定的模拟滤波器转换成数字滤波器后,仍是因果稳定的;
  2. s平面的左半平面映射到z平面的单位圆内部;
  3. 数字滤波器的频率响应应模仿模拟滤波器的频响特性,s平面的虚轴映射为z平面的单位圆,相应的频率之间呈线性关系。

基于以上要求,目前常用的转换方法有脉冲响应不变法、双线性变换法。脉冲响应不变法是线性变换,而双线性变换法是非线性变换。

注:我们一般是设计相应的低通滤波器,然后根据频率变换公式,得到相应的高通、带通、带阻滤波器。

模拟滤波器的设计

模拟滤波器的技术指标给定后,需要设计一个系统函数 H a ( s ) H_a(s) Ha(s),希望其幅度平方函数满足给定的指标。一般滤波器的单位冲激响应为实函数,因此:
∣ H a ( j Ω ) ∣ 2 = H a ( s ) H a ( − s ) ∣ s = j Ω = H a ( j Ω ) H a ∗ ( j Ω ) |H_a(j\Omega)|^2=H_a(s)H_a(-s)|_{s=j\Omega}=H_a(j\Omega)H_a^*(j\Omega) Ha(jΩ)2=Ha(s)Ha(s)s=jΩ=Ha(jΩ)Ha(jΩ)
如果能由 α p \alpha_p αp, Ω p \Omega_p Ωp, α s \alpha_s αs, Ω s \Omega_s Ωs求出 ∣ H a ( j Ω ) ∣ 2 |H_a(j\Omega)|^2 Ha(jΩ)2,那么就可以求出 H a ( s ) H a ( − s ) H_a(s)H_a(-s) Ha(s)Ha(s),由此可以求出需要的 H a ( s ) H_a(s) Ha(s),其极点必须落在s平面的左半平面;相应地, H a ( − s ) H_a(-s) Ha(s)的极点就应落在s平面的右半平面,这就是模拟低通滤波器的逼近方法

巴特沃斯滤波器

幅度平方函数 ∣ H a ( j Ω ) ∣ 2 |H_a(j\Omega)|^2 Ha(jΩ)2为:
∣ H a ( j Ω ) ∣ 2 = 1 1 + ( Ω Ω c ) 2 N = 1 1 + ( s j Ω c ) 2 N ∣ s = j Ω |H_a(j\Omega)|^2=\frac{1}{1+(\frac{\Omega}{\Omega_c})^{2N}}\\ =\frac{1}{1+(\frac{s}{j\Omega_c})^{2N}}|_{s=j\Omega} Ha(jΩ)2=1+(ΩcΩ)2N1=1+(jΩcs)2N1s=jΩ
N为滤波器阶数,该滤波器是一个低通滤波器,原因如下:

  • Ω = 0 \Omega=0 Ω=0时, ∣ H a ( j Ω ) ∣ 2 = 1 |H_a(j\Omega)|^2=1 Ha(jΩ)2=1
  • Ω = Ω c \Omega=\Omega_c Ω=Ωc时, ∣ H a ( j Ω ) ∣ 2 = 1 2 |H_a(j\Omega)|^2=\frac{1}{\sqrt{2}} Ha(jΩ)2=2 1,即3dB截至频率;
  • Ω > > Ω c \Omega>>\Omega_c Ω>>Ωc时, ∣ H a ( j Ω ) ∣ 2 = 0 |H_a(j\Omega)|^2=0 Ha(jΩ)2=0

该系统函数有2N个极点,极点为:
s k = ( − 1 ) 1 2 N ( j Ω c ) = Ω c e j π ( 1 2 + 2 k + 1 2 N ) , k = 0 , 1 , . . . , 2 N − 1 s_k=(-1)^{\frac{1}{2N}}(j\Omega_c)={\Omega_c}e^{j{\pi}(\frac{1}{2}+\frac{2k+1}{2N})},k=0,1,...,2N-1 sk=(1)2N1(jΩc)=Ωcejπ(21+2N2k+1),k=0,1,...,2N1
这2N个极点等间隔分布在半径为 Ω c \Omega_c Ωc的圆上(此圆称为巴特沃斯圆),间隔是 π / N \pi/N π/Nrad。

N = 3;
k = 0:(2*N-1);
k = k';
Z = [];
P = exp(1i*pi*(0.5 + (2*k+1) ./ (2*N)));

% 零极点
zplane(Z, P);
title('零极点分布图');

数字滤波器的设计_第15张图片

取左半平面的N个极点构成系统函数 H a ( s ) H_a(s) Ha(s),并用3dB截止频率 Ω c \Omega_c Ωc归一化得:
G a ( s Ω c ) = 1 ∏ k = 0 N − 1 ( s Ω c − s k Ω c ) = 1 ∏ k = 0 N − 1 ( p − p k ) ( 1 ) G_a(\frac{s}{\Omega_c})=\frac{1}{\prod_{k=0}^{N-1}(\frac{s}{\Omega_c}-\frac{s_k}{\Omega_c})}\\ ={\color{blue}\frac{1}{\prod_{k=0}^{N-1}(p-p_k)}}{\quad}(1) Ga(Ωcs)=k=0N1(ΩcsΩcsk)1=k=0N1(ppk)1(1)
式中
p k = s k / Ω c = e j π ( 1 2 + 2 K + 1 2 N ) , k = 0 , 1 , . . . , N − 1 ( 2 ) p_k=s_k/\Omega_c=e^{j{\pi}(\frac{1}{2}+\frac{2K+1}{2N})},k=0,1,...,N-1{\qquad}(2) pk=sk/Ωc=ejπ(21+2N2K+1),k=0,1,...,N1(2)
为归一化极点。

这样,只要根据技术指标求出阶数N,按照式(2)求出N个极点,再按照式(1)得到归一化的系统函数 G a ( s ) G_a(s) Ga(s)。如果知道截止频率 Ω c \Omega_c Ωc,即可知道系统函数 H a ( s ) H_a(s) Ha(s)

注:设计出满足要求的低通滤波器后,通过频率变换公式即可得到高通滤波器、带通滤波器、带阻滤波器等。

如何根据指标求出滤波器阶数N

阶数N的大小主要影响通带幅频特性的平坦程度和过渡带、阻带的幅度下降速度,它由技术指标 Ω p ,   α p ,   Ω s ,   α s \Omega_p,\ \alpha_p,\ \Omega_s,\ \alpha_s Ωp, αp, Ωs, αs确定,下面直接给出N的选取规则:
λ s p = Ω s Ω p k s p = 1 0 α s / 10 − 1 1 0 α p / 10 − 1 N = lg ⁡ k s p lg ⁡ λ s p ( 向 上 取 整 ) \lambda_{sp} = \frac{\Omega_s}{\Omega_p} \\ k_{sp} = \sqrt{\frac{10^{\alpha_s/10}-1}{10^{\alpha_p/10}-1}} \\ N = \frac{\lg{k_{sp}}}{\lg{\lambda_{sp}}}{\quad}(向上取整) λsp=ΩpΩsksp=10αp/10110αs/101 N=lgλsplgksp()
如果技术指标没有给出3 dB截止频率,可以通过下式求得:
Ω c = Ω p ( 1 0 0.1 α p − 1 ) − 1 2 N Ω c = Ω s ( 1 0 0.1 α s − 1 ) − 1 2 N \Omega_c = \Omega_p(10^{0.1\alpha_p}-1)^{-\frac{1}{2N}} \\ \Omega_c = \Omega_s(10^{0.1\alpha_s}-1)^{-\frac{1}{2N}} \\ Ωc=Ωp(100.1αp1)2N1Ωc=Ωs(100.1αs1)2N1

  • 通过第一个式子计算截止频率则通带指标刚好满足要求,阻带指标有富余;
  • 通过第二个式子计算截止频率则阻带指标刚好满足要求,通带指标有富余 。

低通巴特沃斯滤波器设计步骤

  1. 根据技术指标 Ω p ,   α p ,   Ω s ,   α s \Omega_p,\ \alpha_p,\ \Omega_s,\ \alpha_s Ωp, αp, Ωs, αs,求出阶数N;
  2. 有了阶数N,就可以求出归一化极点(可以查表),然后得到归一化低通原型系统函数 G a ( p ) G_a(p) Ga(p)
  3. G a ( p ) G_a(p) Ga(p)去归一化,即将 p = s / Ω c p=s/\Omega_c p=s/Ωc带入 G a ( p ) G_a(p) Ga(p),得到实际的滤波器系统函数 H a ( s ) H_a(s) Ha(s)。如果截止频率没有告诉,则通过通带或阻带和阶数N求得。

设计低通巴特沃斯滤波器实例

已知通带截止频率 f p = 5 k H z f_p=5kHz fp=5kHz,通带最大衰减 α p = 2 d B \alpha_p=2dB αp=2dB,阻带截止频率 f s = 12 k H z f_s=12kHz fs=12kHz,阻带最小衰减 α s = 30 d B \alpha_s=30dB αs=30dB,按照以上技术指标设计巴特沃斯低通滤波器。

  1. 确定阶数N
    λ s p = Ω s Ω p = 2 π f s 2 π f p = 2.4 k s p = 1 0 α s / 10 − 1 1 0 α p / 10 − 1 = 41.3223 N = lg ⁡ k s p lg ⁡ λ s p = 4.25 = 5 ( 向 上 取 整 ) \lambda_{sp} = \frac{\Omega_s}{\Omega_p}=\frac{2{\pi}f_s}{2{\pi}f_p} = 2.4 \\ k_{sp} = \sqrt{\frac{10^{\alpha_s/10}-1}{10^{\alpha_p/10}-1}} = 41.3223 \\ N = \frac{\lg{k_{sp}}}{\lg{\lambda_{sp}}}=4.25=5{\quad}(向上取整) λsp=ΩpΩs=2πfp2πfs=2.4ksp=10αp/10110αs/101 =41.3223N=lgλsplgksp=4.25=5()

  2. 计算归一化极点(可查表)
    p k = s k / Ω c = e j π ( 1 2 + 2 K + 1 2 N ) , k = 0 , 1 , . . . , N − 1 p 0 = e j 3 5 π , p 1 = e j 4 5 π , p 2 = e j π , p 3 = e j 6 5 π , p 4 = e j 7 5 π p_k=s_k/\Omega_c=e^{j{\pi}(\frac{1}{2}+\frac{2K+1}{2N})},k=0,1,...,N-1{\qquad} \\ p_0 = e^{j\frac{3}{5}\pi},{\quad} p_1 = e^{j\frac{4}{5}\pi},{\quad}p_2 = e^{j\pi},{\quad}p_3 = e^{j\frac{6}{5}\pi},{\quad}p_4 = e^{j\frac{7}{5}\pi} pk=sk/Ωc=ejπ(21+2N2K+1),k=0,1,...,N1p0=ej53π,p1=ej54π,p2=ejπ,p3=ej56π,p4=ej57π

  3. 确定归一化低通原型系统函数 G a ( p ) G_a(p) Ga(p),可以查表找到其分母多项式的系数。
    G a ( p ) = 1 ∏ k = 0 4 ( p − p k ) G a ( p ) = 1 p 5 + b 4 p 4 + b 3 p 3 + b 2 p 2 + b 1 p 1 + b 0 b 0 = 1 ,   b 1 = 3.2361 ,   b 2 = 5.2361 ,   b 3 = 5.2361 ,   b 4 = 3.2361 G_a(p) = \frac{1}{\prod_{k=0}^{4}(p-p_k)} \\ G_a(p) = \frac{1}{p^5 + b_4p^4 + b_3p^3 + b_2p^2 + b_1p^1 + b_0} \\ b_0 = 1,\ b1 = 3.2361,\ b2 = 5.2361,\ b3 = 5.2361,\ b4 = 3.2361 Ga(p)=k=04(ppk)1Ga(p)=p5+b4p4+b3p3+b2p2+b1p1+b01b0=1, b1=3.2361, b2=5.2361, b3=5.2361, b4=3.2361

  4. 为去归一化,先求截止频率 Ω c \Omega_c Ωc
    Ω c = Ω p ( 1 0 0.1 α p − 1 ) 1 − 2 N = 2 π × 5.2755 k r a d / s Ω s ′ = Ω c ( 1 0 0.1 α s − 1 ) 1 2 N = 2 π × 10.525 k r a d / s \Omega_c = \Omega_p(10^{0.1\alpha_p}-1)^{\frac{1}{-2N}} = 2\pi\times5.2755krad/s \\ \Omega_s' = \Omega_c(10^{0.1\alpha_s}-1)^{\frac{1}{2N}} = 2\pi\times10.525krad/s \\ Ωc=Ωp(100.1αp1)2N1=2π×5.2755krad/sΩs=Ωc(100.1αs1)2N1=2π×10.525krad/s
    算出截止频率后,返回去算出的阻带截止频率 Ω s ′ \Omega_s' Ωs比题中给的 Ω s \Omega_s Ωs小,因此,过渡带小于指标要求。或者说,在 Ω s = 2 π × 12 k r a d / s \Omega_s=2\pi\times12krad/s Ωs=2π×12krad/s时衰减大于30 dB,所以说阻带指标有富余量。

  5. p = s / Ω c p=s/\Omega_c p=s/Ωc带入 G a ( p ) G_a(p) Ga(p)中得:
    H a ( s ) = Ω c 5 s 5 + b 4 Ω c s 4 + b 3 Ω c 2 s 3 + b 2 Ω c 3 s 2 + b 1 Ω c 4 s + b 0 Ω c 5 H_a(s) = \frac{\Omega_c^5}{s^5 + b_4\Omega_cs^4 + b_3\Omega_c^2s^3 + b_2\Omega_c^3s^2 + b_1\Omega_c^4s + b_0\Omega_c^5} Ha(s)=s5+b4Ωcs4+b3Ωc2s3+b2Ωc3s2+b1Ωc4s+b0Ωc5Ωc5

MATLAB代码:

clear, clc;
wp = 2 * pi * 5000;
ws = 2 * pi * 12000;
Rp = 2;
As = 30;
[N, wc] = buttord(wp, ws, Rp, As, 's');  % 计算阶数N和3dB截止频率
[B, A] = butter(N, wc, 's');  % 计算滤波器系统函数分子分母多项式系数
% 							B
% Ha(s) =  ------------------------------------------------------------
% 			s^n + A(2)s^{n-1} + A(3)s^{n-2} + ... + A(n-1)s + A(n)
k = 0:511;
fk = 0:14000/512:14000;
wk = 2 * pi * fk;
Hk = freqs(B, A, wk);
plot(fk/1000, 20 * log10(abs(Hk))); grid on;
xlabel('频率(kHz)'); ylabel('幅度(dB)');
axis([0, 14, -40, 5]);

数字滤波器的设计_第16张图片

用MATLAB设计巴特沃斯滤波器(成电DSP书上P160有详细说明):

[Z, P, K] = buttap(N);
[N, wc] = buttord(wp, ws, Rp, As);
[N, wc] = buttord(wp, ws, Rp, As, 's');
[B, A] = butter(N, wc, 'ftype');
[B, A] = butter(N, wc, 'ftype', 's')

切比雪夫I型滤波器

其幅度平方函数为:
∣ H a ( j Ω ) ∣ 2 = 1 1 + ε 2 C N 2 ( Ω Ω p ) |H_a(j\Omega)|^2=\frac{1}{1+\varepsilon^2C_N^2(\frac{\Omega}{\Omega_p})} Ha(jΩ)2=1+ε2CN2(ΩpΩ)1
式中, ε \varepsilon ε为小于1的正数。

椭圆滤波器

会用MATLAB提供的函数即可。

高通、带通和带阻滤波器的设计

通过某些方法得到了低通滤波器后,再通过频率变换就可以得到高通、带通和带阻滤波器。

归一化低通滤波器

令截止频率 ω c = 1 \omega_c=1 ωc=1
H ( s ) = ω c s + ω c = 1 s + 1 H(s)=\frac{\omega_c}{s+\omega_c}\\=\frac{1}{s+1} H(s)=s+ωcωc=s+11

低通到高通的频率转换

我们的目标是:

  • ω → 0 \omega{\rightarrow}0 ω0时, ∣ H ′ ( ω ) ∣ → 0 |H'(\omega)|{\rightarrow}0 H(ω)0
  • ω → ω c \omega{\rightarrow}\omega_c ωωc时, ∣ H ′ ( ω ) ∣ → 1 2 |H'(\omega)|{\rightarrow}\frac{1}{\sqrt{2}} H(ω)2 1
  • ω → ∞ \omega{\rightarrow}\infin ω时, ∣ H ′ ( ω ) ∣ → 1 |H'(\omega)|{\rightarrow}1 H(ω)1

所以,令 s → ω c s s{\rightarrow}\frac{\omega_c}{s} ssωc即可,则传递函数变为:
H ′ ( s ) = s s + ω c H'(s)=\frac{s}{s+\omega_c} H(s)=s+ωcs

低通到带通的频率转换

我们的目标是:

  • ω → 0 \omega{\rightarrow}0 ω0时, ∣ H ′ ( ω ) ∣ → 0 |H'(\omega)|{\rightarrow}0 H(ω)0
  • ω → ω l \omega{\rightarrow}\omega_l ωωl时, ∣ H ′ ( ω ) ∣ → 1 2 |H'(\omega)|{\rightarrow}\frac{1}{\sqrt{2}} H(ω)2 1
  • ω ⊂ ( ω l , ω h ) \omega{\subset}(\omega_l,\omega_h) ω(ωl,ωh)时, ∣ H ′ ( ω ) ∣ ≥ 1 2 |H'(\omega)|{\ge}\frac{1}{\sqrt{2}} H(ω)2 1
  • ω → ω h \omega{\rightarrow}\omega_h ωωh时, ∣ H ′ ( ω ) ∣ → 1 2 |H'(\omega)|{\rightarrow}\frac{1}{\sqrt{2}} H(ω)2 1
  • ω → ∞ \omega{\rightarrow}\infin ω时, ∣ H ′ ( ω ) ∣ → 0 |H'(\omega)|{\rightarrow}0 H(ω)0

所以,令 s → s 2 + ω 0 2 B s s{\rightarrow}\frac{s^2+\omega_0^2}{Bs} sBss2+ω02即可,其中 ω 0 2 = ω l ω h ,   B = ω h − ω l \omega_0^2=\omega_l\omega_h,\ B=\omega_h-\omega_l ω02=ωlωh, B=ωhωl,则传递函数变为:
H ′ ( s ) = B s s 2 + B s + ω 0 2 H'(s)=\frac{Bs}{s^2+Bs+\omega_0^2} H(s)=s2+Bs+ω02Bs

低通到带阻的频率转换

我们的目标是:

  • ω → 0 \omega{\rightarrow}0 ω0时, ∣ H ′ ( ω ) ∣ → 1 |H'(\omega)|{\rightarrow}1 H(ω)1
  • ω → ω l \omega{\rightarrow}\omega_l ωωl时, ∣ H ′ ( ω ) ∣ → 1 2 |H'(\omega)|{\rightarrow}\frac{1}{\sqrt{2}} H(ω)2 1
  • ω ⊂ ( ω l , ω h ) \omega{\subset}(\omega_l,\omega_h) ω(ωl,ωh)时, ∣ H ′ ( ω ) ∣ ≤ 1 2 |H'(\omega)|{\le}\frac{1}{\sqrt{2}} H(ω)2 1
  • ω → ω h \omega{\rightarrow}\omega_h ωωh时, ∣ H ′ ( ω ) ∣ → 1 2 |H'(\omega)|{\rightarrow}\frac{1}{\sqrt{2}} H(ω)2 1
  • ω → ∞ \omega{\rightarrow}\infin ω时, ∣ H ′ ( ω ) ∣ → 1 |H'(\omega)|{\rightarrow}1 H(ω)1

所以,令 s → B s s 2 + ω 0 2 s{\rightarrow}\frac{Bs}{s^2+\omega_0^2} ss2+ω02Bs即可,其中 ω 0 2 = ω l ω h ,   B = ω h − ω l \omega_0^2=\omega_l\omega_h,\ B=\omega_h-\omega_l ω02=ωlωh, B=ωhωl,则传递函数变为:
H ′ ( s ) = s 2 + ω 0 2 s 2 + B s + ω 0 2 H'(s)=\frac{s^2+\omega_0^2}{s^2+Bs+\omega_0^2} H(s)=s2+Bs+ω02s2+ω02

模拟滤波器一般设计步骤

  1. 通过频率变换公式,先将希望设计的滤波器指标转换为相应的低通滤波器指标
  2. 设计相应的低通系统函数 Q ( p ) Q(p) Q(p)
  3. Q ( p ) Q(p) Q(p)进行频率变换,得到希望设计的滤波器系统函数 H d ( s ) H_d(s) Hd(s)

书上的频率变换

为了叙述方便,定义 p = η + j λ p=\eta + j\lambda p=η+jλ归一化复变量,其通带边界频率记为 λ p \lambda_p λp λ \lambda λ称为归一化频率 s = δ + j Ω s=\delta+j\Omega s=δ+jΩ H d ( s ) H_d(s) Hd(s)的复变量。

如一阶巴特沃斯低通原型系统函数为:
G ( p ) = 1 p + 1 G(p) = \frac{1}{p + 1} G(p)=p+11
显然,其中3 dB截止频率 λ p = 1 \lambda_p=1 λp=1是关于3 dB截止频率归一化的。

映射关系

H d ( s ) = Q ( p ) ∣ p = F ( s ) Q ( p ) = H d ( s ) ∣ s = F − ( p ) H_d(s) = Q(p)|_{p = F(s)} \\ Q(p) = H_d(s)|_{s = F^-(p)} Hd(s)=Q(p)p=F(s)Q(p)=Hd(s)s=F(p)
注意:

  1. p和s之间的转换关系不仅包括归一化复变量p和复变量s之间的转换关系;
  2. 还包括低通与其它类型之间的转换关系。

模拟低通到高通

p = λ p Ω p h s λ = − λ p Ω p h Ω H H P ( s ) = Q ( p ) ∣ p = λ p Ω p h / s p = \frac{\lambda_p\Omega_{ph}}{s} \\ \lambda = -\frac{\lambda_p\Omega_{ph}}{\Omega} \\ H_{HP}(s) = Q(p)|_{p = \lambda_p\Omega_{ph}/s} p=sλpΩphλ=ΩλpΩphHHP(s)=Q(p)p=λpΩph/s

设计实例

设计巴特沃斯模拟高通滤波器,要求通带边界频率为4kHz,阻带边界频率为1kHz,通带最大衰减为0.1 dB,阻带最小衰减为40 dB。

选择归一化低通滤波器 Q ( p ) Q(p) Q(p),即取 Q ( p ) Q(p) Q(p)的通带边界频率 λ p = 1 \lambda_p=1 λp=1,则:
λ s = − λ p Ω p h Ω s = 2 π × 4000 2 π × 1000 = 4 {\color{blue}\lambda_s} = -\frac{\lambda_p\Omega_{ph}}{{\color{blue}\Omega_s}} \\ = \frac{2\pi\times4000}{2\pi\times1000} \\ = 4 λs=ΩsλpΩph=2π×10002π×4000=4
转换得到低通滤波器的指标为:通带边界频率 λ p = 1 \lambda_p=1 λp=1,阻带边界频率 λ s = 4 \lambda_s=4 λs=4,通带最大衰减 α p = 0.1 d B \alpha_p=0.1dB αp=0.1dB,阻带最小衰减 α s = 40 d B \alpha_s=40dB αs=40dB

根据低通滤波器的指标设计相应的归一化低通系统函数 Q ( p ) Q(p) Q(p),然后通过频率转换即得高通滤波器系统函数 H H P ( s ) H_{HP}(s) HHP(s)

MATLAB代码:

wp = 1; ws = 4; Rp = 0.1; As = 40;
[N, wc] = buttord(wp, ws, Rp, As, 's');
% 一、
[B, A] = butter(N, wc, 's');
wph = 2 * pi * 4000;
[BH, AH] = lp2hp(B, A, wph);
%二、 或者直接
[BH, AH] = butter(N, wc, 'high', 's');

模拟低通到带通

p = λ p s 2 + Ω 0 2 B w s λ = − λ p Ω 0 2 − Ω 2 Ω B w H B P ( s ) = Q ( p ) ∣ p = λ p s 2 + Ω 0 2 B w s Ω p l Ω p u = Ω s l Ω s u = Ω 0 2 p = \lambda_p\frac{s^2 + \Omega_0^2}{B_ws} \\ \lambda = -\lambda_p\frac{\Omega_0^2 - \Omega^2}{{\Omega}B_w} \\ H_{BP}(s) = Q(p)|_{p = \lambda_p\frac{s^2+\Omega_0^2}{B_ws}} \\ \Omega_{pl}\Omega_{pu} = \Omega_{sl}\Omega_{su} = \Omega_0^2 p=λpBwss2+Ω02λ=λpΩBwΩ02Ω2HBP(s)=Q(p)p=λpBwss2+Ω02ΩplΩpu=ΩslΩsu=Ω02

如果原指标不满足上通带(阻带)边界频率关于中心频率 Ω 0 \Omega_0 Ω0几何对称,则需要改变其中一个边界频率。

设计实例

设计巴特沃斯模拟带通滤波器,要求通带上、下边界频率分别是4kHz和7kHz,阻带上、下边界频率分别为2kHz和9kHz,通带最大衰减为1 dB,阻带最大衰减为20 dB。

f p l = 4 k H z ,   f p u = 7 k H z ,   α p = 1 d B f s l = 2 k H z ,   f s u = 9 k H z ,   α s = 20 d B f p l f p u = 4000 × 7000 = 28 × 1 0 6 f s l f s u = 2000 × 9000 = 18 × 1 0 6 ∵ f p l f p u > f s l f s u ∴ f s l = f p l f p u f s u = 3.111 k H z f_{pl} = 4kHz,\ f_{pu} = 7kHz,\ \alpha_p = 1dB \\ f_{sl} = 2kHz,\ f_{su} = 9kHz,\ \alpha_s = 20dB \\ f_{pl}f_{pu} = 4000\times7000 = 28\times10^6 \\ f_{sl}f_{su} = 2000\times9000 = 18\times10^6 \\ {\because}{\quad}f_{pl}f_{pu}>f_{sl}f_{su} \\ {\therefore}{\quad}f_{sl} = \frac{f_{pl}f_{pu}}{f_{su}} = 3.111kHz \\ fpl=4kHz, fpu=7kHz, αp=1dBfsl=2kHz, fsu=9kHz, αs=20dBfplfpu=4000×7000=28×106fslfsu=2000×9000=18×106fplfpu>fslfsufsl=fsufplfpu=3.111kHz

通过映射关系,将希望设计的带通滤波器指标转换为相应的低通原型滤波器 Q ( p ) Q(p) Q(p)的指标,选择 Q ( p ) Q(p) Q(p)作为归一化低通,即取 Q ( p ) Q(p) Q(p)的通带边界频率 λ p = 1 \lambda_p=1 λp=1。因为 λ = λ s \lambda=\lambda_s λ=λs的映射为 − Ω s l -\Omega_{sl} Ωsl,所以将 λ p = 1 , λ = λ s , Ω = Ω s l \lambda_p=1,\lambda=\lambda_s,\Omega=\Omega_{sl} λp=1,λ=λs,Ω=Ωsl带入可得:
λ s = − λ p Ω 0 2 − Ω s 2 Ω s B w = − f 0 2 − f s l 2 f s l B w = 1.9630 \lambda_s = -\lambda_p\frac{\Omega_0^2 - \Omega_s^2}{{\Omega_s}B_w} \\ = -\frac{f_0^2 - f_{sl}^2}{{f_{sl}}B_w} \\ =1.9630 λs=λpΩsBwΩ02Ωs2=fslBwf02fsl2=1.9630
转换得到的归一化低通滤波器指标为: λ p = 1 , λ s = 1.963 , α p = 1 d B , α s = 20 d B \lambda_p=1,\lambda_s=1.963,\alpha_p=1dB,\alpha_s=20dB λp=1,λs=1.963,αp=1dB,αs=20dB

模拟低通到带阻

p = λ s B w s s 2 + Ω 0 2 λ = − λ s Ω B w Ω 0 2 − Ω 2 H B S ( s ) = Q ( p ) ∣ p = λ s B w s s 2 + Ω 0 2 Ω p l Ω p u = Ω s l Ω s u = Ω 0 2 p = \lambda_s\frac{B_ws}{s^2 + \Omega_0^2} \\ \lambda = -\lambda_s\frac{{\Omega}B_w}{\Omega_0^2 - \Omega^2} \\ H_{BS}(s) = Q(p)|_{p = \lambda_s\frac{B_ws}{s^2 + \Omega_0^2}} \\ \Omega_{pl}\Omega_{pu} = \Omega_{sl}\Omega_{su} = \Omega_0^2 p=λss2+Ω02Bwsλ=λsΩ02Ω2ΩBwHBS(s)=Q(p)p=λss2+Ω02BwsΩplΩpu=ΩslΩsu=Ω02

从模拟到数字的转换方法

脉冲响应不变法

基本思路

设模拟滤波器的系统函数为 H a ( s ) H_a(s) Ha(s),单位冲激响应是 h a ( t ) h_a(t) ha(t) H a ( s ) = L T [ h a ( t ) ] H_a(s)=LT[h_a(t)] Ha(s)=LT[ha(t)]。对 h a ( t ) h_a(t) ha(t)进行等间隔采样,采样间隔为T,得到 h a ( n T ) h_a(nT) ha(nT),将 h ( n ) = h a ( n T ) h(n)=h_a(nT) h(n)=ha(nT)作为数字滤波器的单位冲激响应,那么数字滤波器的系统函数 H ( z ) H(z) H(z)便是 h ( n ) h(n) h(n)的Z变换。

因此脉冲响应不变法是一种时域逼近方法,它使 h ( n ) h(n) h(n)在采样点上等于 h a ( t ) h_a(t) ha(t)。由于模拟滤波器的设计结果是 H a ( s ) H_a(s) Ha(s),所以下面基于脉冲响应不变法的思想,导出直接从 H a ( s ) H_a(s) Ha(s) H ( z ) H(z) H(z)的转换公式。

推导过程

设模拟滤波器 H a ( s ) H_a(s) Ha(s)只有单阶极点,且分母多项式的阶次高于分子多项式的阶次,将 H a ( s ) H_a(s) Ha(s)用部分分式表示并进行推导:
H a ( s ) = ∑ i = 1 N A i s − s i h a ( t ) = L [ H a ( s ) ] = ∑ i = 1 N A i e s i t u ( t ) h ( n ) = h a ( n T ) = ∑ i = 1 N A i e s i n T u ( n T ) H ( z ) = ∑ i = 1 N A i T 1 − e s i T z − 1 H_a(s)=\sum_{i=1}^{N}\frac{A_i}{s-s_i}\\ h_a(t)=\mathscr{L}[H_a(s)]=\sum_{i=1}^{N}A_ie^{s_it}u(t)\\ h(n)=h_a(nT)=\sum_{i=1}^{N}A_ie^{s_inT}u(nT)\\ H(z)=\sum_{i=1}^{N}\frac{A_iT}{1-e^{s_iT}z^{-1}}\\ Ha(s)=i=1NssiAiha(t)=L[Ha(s)]=i=1NAiesitu(t)h(n)=ha(nT)=i=1NAiesinTu(nT)H(z)=i=1N1esiTz1AiT
即:
H a ( s ) = ∑ i = 1 N A i s − s i ( 1 ) H ( z ) = ∑ i = 1 N A i T 1 − e s i T z − 1 ( 2 ) H_a(s)=\sum_{i=1}^{N}\frac{A_i}{s-s_i}{\quad}(1)\\ H(z)=\sum_{i=1}^{N}\frac{A_iT}{1-e^{s_iT}z^{-1}}{\quad}(2) Ha(s)=i=1NssiAi(1)H(z)=i=1N1esiTz1AiT(2)
我们已经得到直接从 H a ( s ) H_a(s) Ha(s) H ( z ) H(z) H(z)的转换公式了,下面分析从模拟滤波器 H a ( s ) H_a(s) Ha(s)转换到数字滤波器 H ( z ) H(z) H(z),s平面和z平面之间的映射关系,从而找到这种转换方式(即式(1)到式(2))的优缺点。这里以理想采样信号 h ^ a ( t ) \hat{h}_a(t) h^a(t)作为桥梁,推导其映射关系,即推导 h ^ a ( t ) \hat{h}_a(t) h^a(t) H ( z ) H(z) H(z)之间的映射关系
∵ h ^ a ( t ) = ∑ n = − ∞ + ∞ h a ( t ) δ ( t − n T ) ∴ H ^ a ( s ) = L [ h ^ a ( t ) ] = ∫ − ∞ + ∞ h ^ a ( t ) e − s t d t = ∫ − ∞ + ∞ [ ∑ n = − ∞ + ∞ h a ( t ) δ ( t − n T ) ] e − s t d t = ∫ − ∞ + ∞ [ ∑ n = − ∞ + ∞ h a ( n T ) δ ( t − n T ) ] e − s n T d t = ∑ n = − ∞ + ∞ h a ( n T ) e − s n T ∫ − ∞ + ∞ δ ( t − n T ) d t = ∑ n = − ∞ + ∞ h a ( n T ) e − s n T {\because}{\quad}\hat{h}_a(t)=\sum_{n=-\infin}^{+\infin}h_a(t)\delta(t-nT)\\ {\therefore}{\quad}\hat{H}_a(s)=\mathscr{L}[\hat{h}_a(t)]=\int_{-\infin}^{+\infin}\hat{h}_a(t)e^{-st}d_t\\ =\int_{-\infin}^{+\infin}[\sum_{n=-\infin}^{+\infin}h_a(t)\delta(t-nT)]e^{-st}d_t\\ =\int_{-\infin}^{+\infin}[\sum_{n=-\infin}^{+\infin}h_a({\color{blue}nT})\delta(t-nT)]e^{-s{\color{blue}nT}}d_t\\ =\sum_{n=-\infin}^{+\infin}h_a(nT)e^{-snT}{\color{red}\int_{-\infin}^{+\infin}\delta(t-nT)d_t}\\ =\sum_{n=-\infin}^{+\infin}h_a(nT)e^{-snT} h^a(t)=n=+ha(t)δ(tnT)H^a(s)=L[h^a(t)]=+h^a(t)estdt=+[n=+ha(t)δ(tnT)]estdt=+[n=+ha(nT)δ(tnT)]esnTdt=n=+ha(nT)esnT+δ(tnT)dt=n=+ha(nT)esnT
式中, h a ( n T ) h_a(nT) ha(nT) h a ( t ) h_a(t) ha(t)在采样点 t = n T t=nT t=nT时的幅度值,它与序列 h ( n ) h(n) h(n)的幅度值相等,即 h ( n ) = h a ( n T ) h(n)=h_a(nT) h(n)=ha(nT),因此得到:
H ^ a ( s ) = ∑ n = − ∞ + ∞ h ( n ) e − s n T = ∑ n = − ∞ + ∞ h ( n ) z − n ∣ z = e s T = H ( z ) ∣ z = e s T \hat{H}_a(s)=\sum_{n=-\infin}^{+\infin}h(n)e^{-snT}\\ =\sum_{n=-\infin}^{+\infin}h(n)z^{-n}|_{z=e^{sT}}\\ =H(z)|_{z=e^{sT}} H^a(s)=n=+h(n)esnT=n=+h(n)znz=esT=H(z)z=esT
上式表明理想采样信号 h ^ a ( t ) \hat{h}_a(t) h^a(t)的拉氏变换与相应采样序列 h ( n ) h(n) h(n)的Z变换之间的映射关系为:
z = e s T l e t s = δ + j Ω ,   z = r e j ω { r = e δ T ω = Ω T z=e^{sT}\\ let{\quad}s={\delta}+j\Omega,\ z=re^{j\omega}\\ \begin{cases} r=e^{{\delta}T} \\ \omega={\Omega}T \end{cases} z=esTlets=δ+jΩ, z=rejω{r=eδTω=ΩT

因此:
{ δ = 0 ,   r = 1 δ < 0 ,   r < 1 δ > 0 ,   r > 1 \begin{cases} \delta=0,\ r=1\\ \delta<0,\ r<1\\ \delta>0,\ r>1 \end{cases} δ=0, r=1δ<0, r<1δ>0, r>1
上式说明,s平面的虚轴映射为z平面的单位圆;s平面的左半平面映射为z平面单位圆内;s平面的右半平面映射为z平面单位圆外。这说明,如果 H a ( s ) H_a(s) Ha(s)因果稳定,转换后得到的 H ( z ) H(z) H(z)仍是稳定的。

待补:讨论数字滤波器的频响特性与模拟滤波器的频响特性之间的关系(P179)。

双线性变换法

脉冲响应不变法的主要缺点是会产生频谱混叠现象,使数字滤波器的频响偏离模拟滤波器的频响特性。产生的原因是模拟低通滤波器不是带限于折叠频率 π / T {\pi}/T π/T,在离散化(采样)后产生了频谱混叠,再通过映射关系 z = e s T z=e^{sT} z=esT,使数字滤波器在 ω = π \omega=\pi ω=π附近形成了频谱混叠。

基本思路

为了克服这一缺点,可以采用非线性频率压缩方法,将整个模拟频率轴压缩到 ± π / T \pm\pi/T ±π/T之间,再用 z = e s T z=e^{sT} z=esT转换到z平面上。这里用正切变换实现频率压缩:
Ω = 2 T tan ⁡ ( 1 2 Ω 1 T ) \Omega=\frac{2}{T}\tan{\left(\frac{1}{2}{\Omega_1}T\right)} Ω=T2tan(21Ω1T)
式中,T仍是采样间隔。当 Ω 1 \Omega_1 Ω1 − π / T -\pi/T π/T经过0变化到 − π / T -\pi/T π/T时, Ω \Omega Ω则由 − ∞ -\infin 经过0变换到 + ∞ +\infin +,实现了s平面上整个虚轴完全压缩到s1平面上虚轴的 ± π / T \pm\pi/T ±π/T之间的转换。
s = 2 T 1 − z − 1 1 + z − 1 ( 1 ) z = 2 T + s 2 T − s s=\frac{2}{T}\frac{1-z^{-1}}{1+z^{-1}}{\quad}(1)\\ z=\frac{\frac{2}{T}+s}{\frac{2}{T}-s} s=T21+z11z1(1)z=T2sT2+s
数字滤波器的设计_第17张图片

转换性能分析

先分析模拟频率 Ω \Omega Ω数字频率 ω \omega ω之间的关系,令 s = j Ω ,   z = e j ω s=j\Omega,\ z=e^{j\omega} s=jΩ, z=ejω,并带入式(1)得到:
j Ω = 2 T 1 − e − j ω 1 + e − j ω Ω = 2 T tan ⁡ ( 1 2 ω ) j\Omega=\frac{2}{T}\frac{1-e^{-j\omega}}{1+e^{-j\omega}}\\ \Omega=\frac{2}{T}\tan{(\frac{1}{2}\omega)} jΩ=T21+ejω1ejωΩ=T2tan(21ω)
上式说明,s平面上的 Ω \Omega Ω与z平面的 ω \omega ω成非线性
正切关系

数字滤波器的设计_第18张图片

  • ω = 0 \omega=0 ω=0附近接近线性关系;
  • ω \omega ω增加时, Ω \Omega Ω加得愈来愈快;
  • ω \omega ω趋近于 π \pi π时, Ω \Omega Ω趋近于 ∞ \infin

正是这种非线性关系,消除了频谱混叠现象。

可见,对于双线性变换而言,在s域的频率和z域对应的频率不同,发生了一定的弯曲,也就意味着截止频率在s域和在z域是不一样的,现在我们需要找到这种关系(省略掉推导),在z域,假设截止频率为 f d f_d fd,则:
f a = f s π tan ⁡ ( π f d f s ) f_a=\frac{f_s}{\pi}\tan{\left(\frac{{\pi}f_d}{f_s}\right)} fa=πfstan(fsπfd)
也就是说对于双线性变而言,模拟的截止频率和数字的截止频率是不同的,不同的原因是因为双线性变换是近似变换,不是准确换算。

但是,当 f s > > f d f_s>>f_d fs>>fd时,即采样频率远大于截止频率时,可以得到:
f a = f s π tan ⁡ ( π f d f s ) ≈ f s π ( π f d f s ) = f d f_a=\frac{f_s}{\pi}\tan{\left(\frac{{\pi}f_d}{f_s}\right)}{\approx}\frac{f_s}{\pi}\left(\frac{{\pi}f_d}{f_s}\right)=f_d fa=πfstan(fsπfd)πfs(fsπfd)=fd
有了前面的说明,就可以设计IIR滤波器了,基本步骤如下:

  1. 选择一个归一化的模拟滤波器 H ( s ) H(s) H(s)
  2. 确定数字滤波器的截止频率,也就是响应为-3dB(幅值衰减为 1 / 2 1/\sqrt{2} 1/2 )时对应的频率;
  3. 利用公式 f a = f s π tan ⁡ ( π f d f s ) f_a=\frac{f_s}{\pi}\tan{\left(\frac{{\pi}f_d}{f_s}\right)} fa=πfstan(fsπfd)计算对应的模拟截止频率
  4. 选择合适的变换,得到 H ′ ( s ) H'(s) H(s);比如对于低通滤波器: s → s / ω c s{\rightarrow}s/\omega_c ss/ωc,其中 ω c = 2 π f a \omega_c=2{\pi}f_a ωc=2πfa
  5. H ′ ( s ) H'(s) H(s)中,用 s → 2 f s ( z − 1 z + 1 ) s{\rightarrow}2f_s(\frac{z-1}{z+1}) s2fs(z+1z1)进行替换,得到数字化的滤波器 H ( z ) H(z) H(z)

IIR滤波器设计实例

比如:现在假设要设计一个低通滤波器,截止频率为 f d = 10 H z f_d=10Hz fd=10Hz,采样频率为 f s = 50 H z f_s=50Hz fs=50Hz

  1. 选择归一化的滤波器 H ( s ) = 1 s + 1 H(s)=\frac{1}{s+1} H(s)=s+11
  2. 数字截止频率为10Hz;
  3. 对应的模拟截止频率为: f a = f s π tan ⁡ ( π f d f s ) = 11.56 H z f_a=\frac{f_s}{\pi}\tan{\left(\frac{{\pi}f_d}{f_s}\right)}=11.56Hz fa=πfstan(fsπfd)=11.56Hz
  4. H ( s ) H(s) H(s)中的s进行替换: s → s / ω c ,   ω c = 2 π f a s{\rightarrow}s/\omega_c,\ \omega_c=2{\pi}f_a ss/ωc, ωc=2πfa。得到: H ′ ( s ) = ω c s + ω c H'(s)=\frac{\omega_c}{s+\omega_c} H(s)=s+ωcωc,其中 ω c = 2 π ( 11.56 ) = 72.6 r a d / s \omega_c=2{\pi}(11.56)=72.6rad/s ωc=2π(11.56)=72.6rad/s
  5. s = 2 f s ( z − 1 z + 1 ) s=2f_s\left(\frac{z-1}{z+1}\right) s=2fs(z+1z1)进行替换,得到 H ( z ) = 0.4206 ( z + 1 ) z − 0.1587 H(z)=\frac{0.4206(z+1)}{z-0.1587} H(z)=z0.15870.4206(z+1)

IIR数字滤波器设计总结

IIR数字滤波器设计总结

  • 无限冲激响应滤波器的设计,首先从三个模拟原型低通滤波器的设计开始,即巴特沃斯滤波器、切比雪夫滤波器和椭圆滤波器。

    由这三种模拟低通滤波器,通过变量变换的方法,可以得到其他三种模拟滤波器,即模拟高通、模拟带通和模拟带阻滤波器。

  • 利用模拟滤波器设计数字滤波器,即从s平面向z平面的变换,该变换需要满足两个基本要求 :

    1. 频率响应保持一致
    2. 因果稳定性保持一致

    因此产生了两种映射方法,即脉冲响应不变法和双线性变换法。这里的映射包含四个:

    1. 模拟低通—>数字低通
    2. 模拟高通—>数字高通
    3. 模拟带通—>数字带通
    4. 模拟带阻—>数字带阻
  • 脉冲响应不变法的优点是设计简单,缺点是可能会产生频谱混叠失真,因此只能用于带限的模拟滤波器,如低通和带通滤波器。双线性变换法是一一映射,优点是不会产生频谱混叠,缺点是变换是非线性的,会产生频率畸形,但是可以通过频率的预畸变来加以校正。

  • 除了上面的两种方法外,还有其它的方法,具体参见(点我)

数字滤波器的设计_第19张图片
数字滤波器的设计_第20张图片

你可能感兴趣的:(信号处理,通信工程,信号处理,dsp)