FIR数字滤波器设计——窗函数设计法——滤波器的时域截断

embedded/2024/12/28 13:58:50/

与IIR数字滤波器的设计类似,设计FIR数字滤波器也需要事先给出理想滤波器频率响应 H ideal ( e j ω ) H_{\text{ideal}}(e^{j\omega}) Hideal(e),用实际的频率响应 H ( e j ω ) H(e^{j\omega}) H(e)去逼近 H ideal ( e j ω ) H_{\text{ideal}}(e^{j\omega}) Hideal(e),在此以低通FIR数字滤波器为例介绍窗函数设计法。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

线性相位的理想低通FIR数字滤波器频率响应为
H ideal ( e j ω ) = { e − j ω τ , 0 ⩽ ∣ ω ∣ ⩽ ω c 0 , ω c < ∣ ω ∣ ⩽ π H_{\text{ideal}}(e^{j\omega}) = \begin{cases} e^{-j\omega\tau}, & 0 \leqslant |\omega| \leqslant \omega_c \\ 0, & \omega_c < |\omega| \leqslant \pi \end{cases} Hideal(e)={eτ,0,0ωωcωc<ωπ

其中, ω c \omega_c ωc为截止频率,幅度函数为
H ideal ( ω ) = { 1 , 0 ⩽ ∣ ω ∣ ⩽ ω c 0 , ω c < ∣ ω ∣ ⩽ π H_{\text{ideal}}(\omega) = \begin{cases} 1, & 0 \leqslant |\omega| \leqslant \omega_c \\ 0, & \omega_c < |\omega| \leqslant \pi \end{cases} Hideal(ω)={1,0,0ωωcωc<ωπ

对应的滤波器单位脉冲响应 h ideal ( n ) h_{\text{ideal}}(n) hideal(n)

h ideal ( n ) = IDTFT [ H ideal ( e j ω ) ] = 1 2 π ∫ − ω c ω c e − j ω τ e j ω n d ω = sin ⁡ [ ω c ( n − τ ) ] π ( n − τ ) h_{\text{ideal}}(n) = \text{IDTFT} \left[ H_{\text{ideal}}(e^{j\omega}) \right] = \frac{1}{2\pi} \int_{-\omega_c}^{\omega_c} e^{-j\omega\tau} e^{j\omega n} d\omega = \frac{\sin[\omega_c(n - \tau)]}{\pi(n - \tau)} hideal(n)=IDTFT[Hideal(e)]=2π1ωcωceτejωndω=π(nτ)sin[ωc(nτ)]

可以看出, h ideal ( n ) h_{\text{ideal}}(n) hideal(n)为偶对称序列,对称中心为 n = τ n = \tau n=τ

h ideal ( n ) h_{\text{ideal}}(n) hideal(n)也是一个无限长的非因果序列,这在计算机或 DSP 中是无法实现的。简便的办法就是对 h ideal ( n ) h_{\text{ideal}}(n) hideal(n)进行截断,也就是用一个有限时长的窗函数 w ( n ) w(n) w(n) h ideal ( n ) h_{\text{ideal}}(n) hideal(n)相乘。设窗函数长度为 N N N,则在时域截断后的滤波器单位脉冲响应 h ( n ) h(n) h(n)

h ( n ) = h ideal ( n ) ⋅ w ( n ) h(n) = h_{\text{ideal}}(n) \cdot w(n) h(n)=hideal(n)w(n)

其中,窗函数长度和形状是两个非常重要的设计参数。

为保证 h ( n ) h(n) h(n)为因果序列,时域截断时取 n = τ n = \tau n=τ为对称中心,并且设 τ = N − 1 2 \tau = \frac{N-1}{2} τ=2N1。这种截断方式就好比用一个 N N N点矩形窗 R N ( n ) R_N(n) RN(n) h ideal ( n ) h_{\text{ideal}}(n) hideal(n)相乘,即

h ( n ) = h ideal ( n ) ⋅ R N ( n ) = { h ideal ( n ) , 0 ⩽ n ⩽ N − 1 0 , 其他  n h(n) = h_{\text{ideal}}(n) \cdot R_N(n) = \begin{cases} h_{\text{ideal}}(n), & 0 \leqslant n \leqslant N-1 \\ 0, & \text{其他 } n \end{cases} h(n)=hideal(n)RN(n)={hideal(n),0,0nN1其他 n

由频域卷积定理可知,时域相乘对应频域卷积,故实际滤波器的频率响应为

H ( e j ω ) = DTFT [ h ideal ( n ) ⋅ w ( n ) ] = 1 2 π [ H ideal ( e j ω ) ∗ W N ( e j ω ) ] H(e^{j\omega}) = \text{DTFT} \left[ h_{\text{ideal}}(n) \cdot w(n) \right] = \frac{1}{2\pi} \left[ H_{\text{ideal}}(e^{j\omega}) * W_N(e^{j\omega}) \right] H(e)=DTFT[hideal(n)w(n)]=2π1[Hideal(e)WN(e)]

N N N点矩形窗 R N ( n ) R_N(n) RN(n)的 DTFT 结果为

W N ( e j ω ) = DTFT [ R N ( n ) ] = e − j N − 1 2 ω sin ⁡ ( ω N / 2 ) sin ⁡ ( ω / 2 ) W_N(e^{j\omega}) = \text{DTFT} \left[ R_N(n) \right] = e^{-j\frac{N-1}{2}\omega} \frac{\sin(\omega N/2)}{\sin(\omega/2)} WN(e)=DTFT[RN(n)]=ej2N1ωsin(ω/2)sin(ωN/2)

N N N点矩形窗也是严格线性相位的 FIR 数字滤波器,其幅度函数为

W N ( ω ) = sin ⁡ ( ω N / 2 ) sin ⁡ ( ω / 2 ) W_N(\omega) = \frac{\sin(\omega N/2)}{\sin(\omega/2)} WN(ω)=sin(ω/2)sin(ωN/2)

由 DTFT 的时移特性可知,相位函数只会对 h ( n ) h(n) h(n)起时移作用,因此 H ( e j ω ) H(e^{j\omega}) H(e)的幅度函数只取决于理想低通的幅度函数 H ideal ( ω ) H_{\text{ideal}}(\omega) Hideal(ω)和矩形窗的幅度函数 W N ( ω ) W_N(\omega) WN(ω),即

H ( ω ) = 1 2 π [ H ideal ( ω ) ∗ W N ( ω ) ] H(\omega) = \frac{1}{2\pi} \left[ H_{\text{ideal}}(\omega) * W_N(\omega) \right] H(ω)=2π1[Hideal(ω)WN(ω)]

理想低通滤波器的通带幅度为 1,阻带幅度为 0,但实际的低通滤波器在通带和阻带都出现起伏振荡的现象,在其过渡带的边缘出现了正、负肩峰,即极大值和极小值。正肩峰出现在窗函数主瓣刚刚全部进入理想低通滤波器 ( ω = − ω c + 2 π N ) \left(\omega = -\omega_c + \frac{2\pi}{N}\right) (ω=ωc+N2π),以及窗函数主瓣即将移出理想低通滤波器 ( ω = ω c − 2 π N ) \left(\omega = \omega_c - \frac{2\pi}{N}\right) (ω=ωcN2π)的时候。负肩峰表示卷积结果的极小值,负肩峰出现在窗函数主瓣即将进入理想低通滤波器 ( ω = − ω c − 2 π N ) \left(\omega = -\omega_c - \frac{2\pi}{N}\right) (ω=ωcN2π),以及窗函数主瓣刚刚全部移出理想低通滤波器 ( ω = ω c + 2 π N ) \left(\omega = \omega_c + \frac{2\pi}{N}\right) (ω=ωc+N2π)的时候。
在这里插入图片描述

只要确保 h ( n ) h(n) h(n)为偶对称或奇对称的,就可以不再“操心”线性相位的需求,“专心”考虑FIR数字滤波器的幅度指标即可。

实际滤波器幅频响应起伏振荡的幅度取决于窗函数旁瓣的相对幅度,而起伏振荡的次数取决于窗函数旁瓣的数量。增加窗函数的长度(不改变窗函数的形状),过渡带的宽度变窄,振荡起伏变密,但是滤波器肩峰的相对值(相对于1或者0)保持8.95%不变,这种现象称作“吉布斯(Gibbs)效应”。

在这里插入图片描述

我们知道信号的时域截断会引起频谱泄漏。窗函数法也是在时域进行截断,出现的“过渡带”“吉布斯效应”等其实都是频谱泄漏在FIR数字滤波器设计中的体现。只不过信号的时域截断引起的频谱泄漏主要是分析信号的频谱,这里的频谱泄露主要是分析系统(滤波器)的频谱。

这里只介绍利用窗函数法设计低通FIR数字滤波器,如果要设计其他类型的FIR数字滤波器,只需要采用对应的理想滤波器频率响应即可,在此不再进一步讨论。


http://www.ppmy.cn/embedded/149456.html

相关文章

工业安全监测审计系统(源码+文档+部署+讲解)

本文将深入解析“工业安全监测审计系统”的项目&#xff0c;探究其架构、功能以及技术栈&#xff0c;并分享获取完整源码的途径。 系统概述 工业安全监测审计系统是一个综合性的管理平台&#xff0c;旨在提高审计和考核工作的效率和质量。系统通过首页、装置信息、装置审计记…

Rust调用C动态库

Rust调用C动态库 环境 rust: 1.83.0(2024-11-26) bindgen: 0.71.1 cmake: 3.26.41. rust bindgen bindgen 是一个能自动为 C&#xff08;或 C&#xff09;库生成 Rust 绑定的辅助库和命令行工具。C &#xff08;目前&#xff09;的支持并不完整。 也就是说&#xff0c;bind…

YOLO模型格式转换:pt -> onnx -> rknn

导出 RKNPU 适配模型说明 Source ​ 本仓库基于 https://github.com/ultralytics/ultralytics 仓库的 c9be1f3cce89778f79fb462797b8ca0300e3813d commit 进行修改,验证. 修改前的源码链接&#xff1a; https://github.com/ultralytics/ultralytics/tree/c9be1f3cce89778f79f…

uniapp 微信小程序 数据空白展示组件

效果图 html <template><view class"nodata"><view class""><image class"nodataimg":src"$publicfun.locaAndHttp()?localUrl:$publicfun.httpUrlImg(httUrl)"mode"aspectFit"></image>&l…

深度学习与图像处理(国产深度学习框架——飞桨官方指定教材)

计算机视觉从小白到大师之路 《深度学习与图像处理&#xff08;PaddlePaddle版&#xff09;》这一本就够了 1.引言 随着人工智能技术的飞速发展&#xff0c;各行各业对深度学习、图像处理相关领域的人才需求日益迫切。本书旨在通过系统的理论讲解与丰富的实战案例&#xff0…

Node-解决sequelize配置时区

目录 什么是 UTC&#xff08;协调世界时&#xff09;&#xff1f; UTC 的重要性 UTC 和本地时间的关系 如何转换 UTC 和本地时间&#xff1f; 为什么要使用 UTC&#xff1f; 如何在编程中使用 UTC&#xff1f; Day.js 示例&#xff1a; 使用 Sequelize 进行数据库操作时&…

AI与药学:ChatGPT与临床培训——药学博士(Pharm-D)学生的看法、担忧和实践

一、文献信息 标题: ChatGPT and Clinical Training: Perception, Concerns, and Practice of Pharm-D Students 作者: Zawiah M, Al-Ashwal FY, Gharaibeh L, Abu Farha R, Alzoubi KH, Abu Hammour K, Qasim QA, Abrah F 期刊: Journal of Multidisciplinary Healthcare 二…

docker基础命令入门、镜像、运行容器、操作容器

一. Docker 基础入门相关命令 1.1 启动Docker 1.2 查看 Docker 运行状态 1.3 停止 Dokcer 1.4 重启Docker 1.5 配置开机启动 docker 1.6 查看 docker 所有命令 二. Docker 镜像相关命令 2.1 docker search 镜像名称——(查询某个镜像) 2.2 docker pull 镜像名称:version…