音频进阶学习四——滤波器和线性时不变系统


前言

在之前的文章中,介绍了模拟信号和数字信号的定义和联系,以及模拟信号通过采样、量化和编码最终成为数字信号。

而在实际的应用中,我们不能盲目的从信源获取到的信号都转化为模拟信号,也不能认为所有的模拟信号都可以通过A/D模数转换为数字信号,这是因为在实际处理中,有很多我们不需要的信号,这个时候就需要离散时间信号系统来进行过滤,而在这些系统中最重要的部分就是滤波器了。

本文中会详细介绍滤波器的定义以及类型,同时会占用大篇幅的内容先简单介绍对于程序员更重要的数字滤波器IIR和FIR的推导。

|版本声明:山河君,未经博主允许,禁止转载


一、滤波器

1.定义

滤波器(Filter)是一种信号处理工具,主要用于处理信号频率部分

2.滤波器的作用

它可以通过阻挡特定频率范围内的信号,选择性的允许某些我们需要的信号通过,或者抑制和削弱其他频率的信号。以下是它的主要作用:

  1. 去除噪声
    消除不需要的高频或者低频的噪声,从而改善信号清晰度。
  2. 信号分离
    在多频信号中,滤波器可以分离出特定频率的信号,对特定频率信号进行进一步处理。
  3. 信号平滑
    通过去除高频分量(尖锐的变化和波动),去除不连续性或者突发性的变化,从而减少抖动和干扰。
  4. 波形整形
    可以改变信号的波形,从而更适合传输。
  5. 频带分割
    将多个频率的信号分离出来,从而可以更容易处理低音、中音和高音。
  6. 频率选择
    根据需求选择抑制特定频率部分,从而改变音质
  7. 消除失真
    消除电流和电压中的失真,避免设备受损
  8. 信号调制
    可以提取特定的载波信号,帮助接收端还原正确信息

3.滤波器的种类

根据实现方式的不同,滤波器可以分为:

  • 模拟滤波器:基于电容、电感、电阻等电子元件,可以直接处理模拟信号
  • 数字滤波器:通过算法对离散数字信号进行处理,纯数字域的处理

从滤波器对于信号频率处理的特征,可以分为:

原理作用
低通滤波器(Low-Pass Filter, LPF)允许低频信号通过,阻止高频信号如从含噪声的信号中去除高频噪声
高通滤波器(High-Pass Filter, HPF)允许高频信号通过,阻止低频信号如去除信号中的低频干扰,如电力线噪声
带通滤波器(Band-Pass Filter, BPF)允许某一频段范围内的信号通过,抑制其他频段的信号如在通信系统中提取特定频段的信号
带阻滤波器(Band-Stop Filter, BSF)阻止某一频段的信号通过,而允许其他频段信号通过如去除50 Hz或60 Hz的电源噪声
全通滤波器(All-Pass Filter)允许所有频率的信号通过,但会改变它们的相位而不是幅度主要用于调整信号的相位响应

二、线性时不变系统

1.定义

线性时不变系统(LTI, Linear Time-Invariant System),具有上文中系统的两大特性:线性系统、时不变系统。

为什么要把线性时不变系统单独拿出来,因为数字滤波器通常是一个线性时不变系统,至少在理论设计上如此。LTI 系统具有的两个核心特性:线性性和时不变性(具体可以看上一篇文章音频进阶学习三——离散时间信号与系统的介绍),而大多数数字滤波器都满足这些特性。

2.LTI系统的卷积和

我们之前有说过,任意离散时间信号,可以表示为单位采样的加权和,叫做冲激分解
x ( n ) = ∑ k = − ∞ + ∞ x ( k ) ∗ δ ( n − k ) x(n) = \sum^{+\infty}_{k=-\infty}x(k)*\delta(n-k) x(n)=k=+x(k)δ(nk)
此时, x ( n ) x(n) x(n)是为输入信号,由于线性时不变系统的不变性,任意输入信号的响应都可以分解并表示为单位采样响应形式。

由此我们定义卷积和的含义:将系统单位采样响应、任意的输入信号与输出信号关联起来的表达式,叫做卷积和。

3.卷积和推导公式

根据线性系统的叠加性,对于线性输入信号,可以分为多个基本信号的和。也就是说,我们可以通过对于基本信号的响应相加,得到总响应。

首先,对于输入信号 x ( n ) x(n) x(n)分解为基本信号分量 x k ( n ) {x_k(n)} xk(n)的加权和,即:
x ( n ) = ∑ k C k x k ( n ) x(n) = \sum_kC_kx_k(n) x(n)=kCkxk(n)
其中 c k c_k ck是信号 x ( n ) x(n) x(n)信号分解后的一组幅度(权系数),而基本信号响应 x k ( n ) x_k(n) xk(n)应为 y k ( n ) y_k(n) yk(n),即:
y k ( n ) = τ [ x k ( n ) ] y_k(n)=\tau [x_k(n)] yk(n)=τ[xk(n)]
所以得到系统对于 x ( n ) x(n) x(n)的总响应为
y ( n ) = τ [ x ( n ) ] = τ [ ∑ k c k x k ( n ) ] = ∑ k c k τ [ x k ( n ) ] = ∑ k c k y k ( n ) y(n)=\tau [x(n)] = \tau \Big[\sum_kc_kx_k(n)\Big] = \sum_kc_k\tau[x_k(n)] = \sum_kc_ky_k(n) y(n)=τ[x(n)]=τ[kckxk(n)]=kckτ[xk(n)]=kckyk(n)
上述公式根据冲激分解方法,再进行计算,首先使用特殊符号 h ( n , k ) h(n,k) h(n,k)表示系统对于输入单位采样在 n = k n=k n=k时的冲激响应,即
y ( n , k ) = h ( n , k ) = τ [ δ ( n − k ) ] y(n,k) = h(n,k) = \tau [\delta(n-k)] y(n,k)=h(n,k)=τ[δ(nk)]
所以输入信号 x ( n ) x(n) x(n)分解为基本信号分量 x k ( n ) {x_k(n)} xk(n)的加权和,又可以表示为:
x ( n ) = ∑ k = − ∞ ∞ x k δ ( n − k ) x(n) = \sum_{k = -\infty}^\infty x_k\delta(n-k) x(n)=k=xkδ(nk)
那么对于线性系统的信号 x ( n ) x(n) x(n)的总响应又可得到:

y ( n ) = τ [ x ( n ) ] = τ [ ∑ k = − ∞ ∞ x k δ ( n − k ) ] = ∑ k = − ∞ ∞ x k τ [ δ ( n − k ) ] = ∑ k = − ∞ ∞ x ( k ) h ( n , k ) y(n)=\tau [x(n)] = \tau \Big[ \sum_{k = -\infty}^\infty x_k\delta(n-k)\Big] =\sum_{k = -\infty}^\infty x_k\tau[\delta(n-k)] =\sum_{k = -\infty}^\infty x(k)h(n,k) y(n)=τ[x(n)]=τ[k=xkδ(nk)]=k=xkτ[δ(nk)]=k=x(k)h(n,k)

此时再考虑系统是时不变的,也就是说输入输出特性不会发生改变,所以
h ( n ) = τ [ δ ( n ) ] ⇒ h ( n − k ) = τ [ δ ( n − k ) ] h(n) = \tau [\delta(n)] \Rightarrow h(n-k) = \tau[\delta(n-k)] h(n)=τ[δ(n)]h(nk)=τ[δ(nk)]
上述公式最终成为:
y ( n ) = ∑ k = − ∞ ∞ x ( k ) h ( n − k ) y(n) = \sum_{k = -\infty}^\infty x(k)h(n-k) y(n)=k=x(k)h(nk)

三、FIR和IIR滤波器

滤波器阶数

对于大部分应用FIR和IIR滤波器的场景,通常是在时域和频域上进行降噪,回声消除等等的操作。

对于这部分应用,FIR和IIR不仅仅包含线性时不变系统的特征,还包含动态系统(有记忆系统)的特征,也就是说,该滤波器的输出,不仅仅要考虑当前信号的输入,也要考虑之前信号的输入。

滤波器阶数N:指的是滤波器冲激响应的长度,或者说滤波器所用到的输入信号的过去样本数。主要运用到数字滤波器中的差分方程运算得到(在以后的文章中再详细描述)。

FIR滤波器

FIR滤波器是只一个具有有限长冲激响应的系统。这里的有限长冲激响应指的是,在输入一个单位脉冲后,系统的输出在有限时间内变为零。

根据上述卷积公式,FIR滤波器数学上表示为:
y [ n ] = ∑ k = 0 N − 1 h [ k ] ∗ x [ n − k ] y[n] = \sum_{k=0}^{N-1} h[k]*x[n-k] y[n]=k=0N1h[k]x[nk]

IIR滤波器

和FIR滤波器不同,IIR滤波器不仅依赖当前和过去的输入,还依赖过去的输出。所以IIR滤波器还存在反馈输出的结构,导致其冲激响应再理论上是无限长的。

根据卷积公式和差分方式表示:
y [ n ] = ∑ k = 0 N b k x [ n − k ] − ∑ k = 1 M a k y [ n − k ] y[n] = \sum_{k = 0}^N b_kx[n-k] - \sum_{k=1}^Ma_ky[n-k] y[n]=k=0Nbkx[nk]k=1Maky[nk]
其中:

  • b k b_k bk:输入信号的系数(前馈部分)
  • a k a_k ak:输出信号的系数(反馈部分)
  • N N N:前馈滤波器的阶数
  • M M M:反馈滤波器的阶数

总结

本篇博客先介绍了滤波器的概念和应用场景,并且有一半的内容是推导线性时不变系统的卷积和公式,在文章末位简单的介绍了IIR滤波器FIR滤波器,在这个过程中有提到过滤波器阶数差分方程这两个概念,在下一篇文章中会着重介绍和推导这个公式。

如果有一些地方读者觉得不对或者不清楚的,欢迎在评论区留言一起探讨。

如果对您有所帮助,请帮忙点个赞吧!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值