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

与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.mzph.cn/bicheng/65308.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

openssh9.9P1-CentOS7升级包

用于CentOS7.x系统的openssh版本升级&#xff0c;同时要求openssl版本为1.1.1w&#xff0c;SSL已经升级的只需要升级ssh即可。 处理方法 注意&#xff1a; 升级前&#xff0c;要确保root可以ssh登录或普通账号登录后能切换到root。将包里的文件上传至服务的/root目录下&#xf…

No Python at ‘C:\Users\MI\AppData\Local\Programs\Python\Python39\python.exe‘

目录 一、检查环境配置 1.1 安装键盘“winR”键并输入cmd 1.2 输入“python” 二、解决问题 2.1 检查本地的python配置路径 2.2 打开PyCharm的Settings 2.3 找到Python Interpreter 2.4 删除当前python版本 2.5 新添版本 PyCharm运行时出现的错误&#xff1a; No Py…

重温设计模式--6、享元模式

文章目录 享元模式&#xff08;Flyweight Pattern&#xff09;概述享元模式的结构C 代码示例1应用场景C示例代码2 享元模式&#xff08;Flyweight Pattern&#xff09;概述 定义&#xff1a; 运用共享技术有效地支持大量细粒度的对象。 享元模式是一种结构型设计模式&#xff0…

自动化办公-合并多个excel

在日常的办公自动化工作中&#xff0c;尤其是处理大量数据时&#xff0c;合并多个 Excel 表格是一个常见且繁琐的任务。幸运的是&#xff0c;借助 Python 语言中的强大库&#xff0c;我们可以轻松地自动化这个过程。本文将带你了解如何使用 Python 来合并多个 Excel 表格&#…

分布式光纤传感|分布式光纤测温|线型光纤感温火灾探测器DTS|DTS|DAS|BOTDA的行业16年的总结【2024年】

背景&#xff1a; 从2008年&#xff0c;从事分布式光纤传感行业已经过了16年时间了&#xff0c;依稀记得2008年&#xff0c;看的第一遍论文就是中国计量大学张在宣老爷子的分布式光纤测温综述&#xff0c;我的经历算是行业内极少数最丰富的之一。混过学术圈&#xff1a; 发表…

游戏开发-UE4高清虚幻引擎教程

简介 Unreal Engine 4 相关教程&#xff0c;涵盖美术流程、独立游戏制作编程、虚拟现实实战、高级材质系统、蓝图可视化编程及进阶、RPG 游戏与特效开发、VR 交互虚拟漫游等方面。包含大量视频教程、工程文件及源码&#xff0c;如 UE4 零基础美术教程中有火焰材质等案例及模型…

多个微服务 Mybatis 过程中出现了Invalid bound statement (not found)的特殊问题

针对多个微服务的场景&#xff0c;记录一下这个特殊问题&#xff1a; 如果启动类上用了这个MapperScan注解 在resource 目录下必须建相同的 com.demo.biz.mapper 目录结构&#xff0c;否则会加载不到XML资源文件 。 并且切记是com/demo/biz 这样的格式创建&#xff0c;不要使用…

聊聊 Mongod 以及 MongoDB 常用命令

Mongod mongod 是 MongoDB 数据库服务器的核心守护进程&#xff0c;它负责启动并管理 MongoDB 数据库实例。简单来说&#xff0c;mongod 是 MongoDB 数据库服务器程序&#xff0c;它负责处理数据存储、数据请求、数据复制等后台服务。运行 mongod 是启动 MongoDB 数据库的第一…

解读DeepseekV3

本年度还剩几天&#xff0c;Deepseek就发布了这么值得惊喜的产品&#xff0c;我觉得是真正做AI&#xff0c;也喜欢AI同学&#xff0c;对这个魔幻的2024年12月&#xff0c;一定是未来多少年想起都能回忆起这波澜壮阔的岁月。 我见过的最省的GPT4o&#xff0c;Claude&#xff0c…

一种寻路的应用

应用背景 利用长途车进行货物转运的寻路计算。例如从深圳到大连。可以走有很多条长途车的路线。需要根据需求计算出最合适路线。不同的路线的总里程数、总价、需要的时间不一样。客户根据需求进行选择。主要有一些细节&#xff1a; 全国的长途车车站的数据的更新&#xff1a; …

Linux-Ubuntu之串口通信

Linux-Ubuntu之串口通信 一&#xff0c;串口通信1.串口通信寄存器配置2.串口通信软件实现①手动波特率②自动波特率③主函数 二&#xff0c;printf和scanf实现串口的输入显示 一&#xff0c;串口通信 1.串口通信寄存器配置 串口通信利用接口是这个TTL&#xff0c;下载程序用的…

手机发烫怎么解决?

在当今这个智能手机不离手的时代&#xff0c;手机发烫成了不少人头疼的问题。手机发烫不仅影响使用手感&#xff0c;长期过热还可能损害手机硬件、缩短电池寿命&#xff0c;甚至引发安全隐患。不过别担心&#xff0c;下面这些方法能帮你有效给手机 “降温”。 一、使用习惯方面…

YashanDB 23.2 YAC -单库多实例架构多活共享集群安装部署指南

一、概述 1.1 文档目标 ​ 本说明旨在指导技术人员在 CentOS 7 x86_64 操作系统上完成崖山数据库企业版 23.2 的共享集群安装与部署。通过系统架构、集群拓扑及部署需求的精确描述&#xff0c;帮助读者在开始安装前对崖山数据库的架构形成清晰认识。本文以高效、稳定、安全为…

JavaScript(一):变量与常量

目录 var let const 在JavaScript中&#xff0c;主要使用var、let和const关键字来声明变量或常量 var var是JavaScript早期时声明变量的方式&#xff0c;目前比较少用到 作用域&#xff1a; 函数内部声明&#xff1a;只在函数内部有效函数外部声明&#xff1a;全局有效 变量…

【开发问题记录】执行 git cz 报require() of ES Module…… 错误

文章目录 1、问题2、解决3、参考链接 1、问题 在对 commitizen 进行完&#xff0c;一系列的初始化以后 &#xff0c; 对代码进行 提交 到暂存区&#xff0c;然后要提交到 本地仓库 的报错 然后因为安装了 commitizen 所以是想用 git cz 进行提交的&#xff0c; 执行命令的时候…

LaTeX 是一种基于标记的排版系统,广泛用于创建高质量的文档,特别是在需要复杂数学公式、表格、文献引用等的场景中

LaTeX 是一种基于标记的排版系统&#xff0c;广泛用于创建高质量的文档&#xff0c;特别是在需要复杂数学公式、表格、文献引用等的场景中。以下是关于 LaTeX 的详细解释&#xff1a; 1. LaTeX 的基本概念 本质&#xff1a;LaTeX 是基于 TeX 的排版系统&#xff0c;提供了更高…

AI三驾马车——数据、算法与算力的一体化融合体验

一、概述 随着AI大模型、云计算和大数据技术的快速发展&#xff0c;智能算力市场需求持续增长。今年7月由国家信息中心发布的《智能算力产业发展白皮书》指出&#xff0c;随着AI大模型等关键技术取得突破&#xff0c;算力需求正从通用计算转向智能计算。智能计算是指面向人工智…

【可靠有效】springboot使用netty搭建TCP服务器

Netty Netty是一个高性能、异步事件驱动的网络应用程序框架,它提供了对并发和异步编程的抽象,使得开发网络应用程序变得更加简单和高效。 在Netty中,EventLoopGroup是处理I/O操作的多线程事件循环器。在上面的示例中,我们创建了两个EventLoopGroup实例:bossGroup和worker…

React性能优化:构建更高效的应用

在现代前端开发中,React已经成为构建复杂、交互频繁应用的首选框架。然而,随着应用规模的扩大和功能的丰富,组件的频繁重渲染可能会成为性能瓶颈,影响用户体验。为了提升React应用的性能,开发者需要掌握一系列性能优化技巧和工具。本文将详细介绍React性能优化的各个方面,…

PyTorch Lightning Callback介绍

PyTorch Lightning Callback 介绍 在 PyTorch 中&#xff0c;callbacks&#xff08;回调函数&#xff09;不是原生支持的核心功能&#xff0c;但在深度学习中非常常见&#xff0c;尤其是用来监控训练过程、调整超参数或执行特定的任务。许多高级深度学习框架&#xff08;如 Py…