FIR数字滤波器设计——窗函数设计法——滤波器的时域截断
与IIR数字滤波器的设计类似,设计FIR数字滤波器也需要事先给出理想滤波器频率响应 H ideal ( e j ω ) H_{\text{ideal}}(e^{j\omega}) Hideal(ejω),用实际的频率响应 H ( e j ω ) H(e^{j\omega}) H(ejω)去逼近 H ideal ( e j ω ) H_{\text{ideal}}(e^{j\omega}) Hideal(ejω),在此以低通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(ejω)={e−jωτ,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(ejω)]=2π1∫−ωcωce−jωτ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} τ=2N−1。这种截断方式就好比用一个 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,0⩽n⩽N−1其他 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(ejω)=DTFT[hideal(n)⋅w(n)]=2π1[Hideal(ejω)∗WN(ejω)]
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(ejω)=DTFT[RN(n)]=e−j2N−1ω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(ejω)的幅度函数只取决于理想低通的幅度函数 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) (ω=ωc−N2π)的时候。负肩峰表示卷积结果的极小值,负肩峰出现在窗函数主瓣即将进入理想低通滤波器 ( ω = − ω 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) (ω=ωc+N2π)的时候。
只要确保 h ( n ) h(n) h(n)为偶对称或奇对称的,就可以不再“操心”线性相位的需求,“专心”考虑FIR数字滤波器的幅度指标即可。
实际滤波器幅频响应起伏振荡的幅度取决于窗函数旁瓣的相对幅度,而起伏振荡的次数取决于窗函数旁瓣的数量。增加窗函数的长度(不改变窗函数的形状),过渡带的宽度变窄,振荡起伏变密,但是滤波器肩峰的相对值(相对于1或者0)保持8.95%不变,这种现象称作“吉布斯(Gibbs)效应”。
我们知道信号的时域截断会引起频谱泄漏。窗函数法也是在时域进行截断,出现的“过渡带”“吉布斯效应”等其实都是频谱泄漏在FIR数字滤波器设计中的体现。只不过信号的时域截断引起的频谱泄漏主要是分析信号的频谱,这里的频谱泄露主要是分析系统(滤波器)的频谱。
这里只介绍利用窗函数法设计低通FIR数字滤波器,如果要设计其他类型的FIR数字滤波器,只需要采用对应的理想滤波器频率响应即可,在此不再进一步讨论。
相关文章:

FIR数字滤波器设计——窗函数设计法——滤波器的时域截断
与IIR数字滤波器的设计类似,设计FIR数字滤波器也需要事先给出理想滤波器频率响应 H ideal ( e j ω ) H_{\text{ideal}}(e^{j\omega}) Hideal(ejω),用实际的频率响应 H ( e j ω ) H(e^{j\omega}) H(ejω)去逼近 H ideal ( e j ω ) H_{\text{ideal}}…...

MySQLOCP考试过了,题库很稳,经验分享。
前几天,本人参加了Oracle认证 MySQLOCP工程师认证考试 ,先说下考这个证书的初衷: 1、首先本人是从事数据库运维的,今年开始单位逐步要求DBA持证上岗。 2、本人的工作是涉及数据库维护,对这块的内容比较熟悉ÿ…...

WPF 绘制过顶点的圆滑曲线 (样条,贝塞尔)
在一个WPF项目中要用到样条曲线,必须过顶点,圆滑后还不能太走样,捣鼓一番,发现里面颇有玄机,于是把我多方抄来改造的方法发出来,方便新手: 如上图,看代码吧: ----------…...

Kafka 幂等性与事务
文章目录 幂等性实现机制配置使用局限性 事务使用场景配置使用实现机制事务过程事务初始化事务开始事务提交事务取消事务消费 幂等性 Producer 无论向 Broker 发送多少次重复的数据,Broker 端只会持久化一条,保证数据不丢失且不重复。 实现机制 通过引…...

day2 Linux操作系统指令
思维导图 在家目录下创建目录文件,dir 1、dir下创建dir1和dir2 2、把当前目录下的所有文件拷贝到dir1中, 3、把当前目录下的所有脚本文件拷贝到dir2中 4、把dir2打包并压缩为dir2.tar.xz 5、再把dir2.tar.xz移动到dir1中 6、解压dir1中的压缩包 7、使用…...

AI一周重要会议和活动概览
一、小模型的曙光和机会之思辨高峰论坛 会议介绍:小模型的曙光和机会之思辨”高峰论坛暨第32期CSIG图像图形学科前沿讲习班于2025年1月3—4日在杭州举办,会议由中国图象图形学学会主办,中国图象图形学学会前沿科技论坛委员会承办。本次论坛设…...
重启ubuntu服务器,如何让springboot服务自动运行
文章目录 1. 使用 systemd 服务步骤: 2. 使用 cron 的 reboot 任务步骤: 3. 使用 init.d 脚本(适用于较旧版本)步骤: 推荐方案 为了确保在重启Ubuntu服务器后,让springboot的服务test.jar象 nohup java -ja…...
python系列教程237——启动扩展功能
朋友们,如需转载请标明出处:https://blog.csdn.net/jiangjunshow 声明:在人工智能技术教学期间,不少学生向我提一些python相关的问题,所以为了让同学们掌握更多扩展知识更好地理解AI技术,我让助理负责分享…...

U盘格式化工具合集:6个免费的U盘格式化工具
在日常使用中,U盘可能会因为文件系统不兼容、数据损坏或使用需求发生改变而需要进行格式化。一个合适的格式化工具不仅可以清理存储空间,还能解决部分存储问题。本文为大家精选了6款免费的U盘格式化工具,并详细介绍它们的功能、使用方法、优缺…...

循环神经网络(RNN)入门指南:从原理到实践
目录 1. 循环神经网络的基本概念 2. 简单循环网络及其应用 3. 参数学习与优化 4. 基于门控的循环神经网络 4.1 长短期记忆网络(LSTM) 4.1.1 LSTM的核心组件: 4.2 门控循环单元(GRU) 5 实际应用中的优化技巧 5…...
马原复习笔记
文章目录 前言导论物质实践人类社会资本主义社会主义共产主义后记 前言 一月二号下午四点多考试,很友好,不是早八,哈哈哈。之前豪言壮语和朋友说这次马原要全对,多做了几次测试之后,发现总有一些知识点是自己不知道的…...
Android Room 框架的初步使用
一、简介 Room 是一个强大的对象关系映射库,它允许你将 SQLite 数据库中的表映射到 Java 或 Kotlin 的对象(称为实体)上。你可以使用简单的注解(如 Entity、Dao 和 Database)来定义数据库表、数据访问对象(…...
什么是过度拟合和欠拟合?
在机器学习中,当一个算法的预测非常接近或者直接等于它的训练数据,导致不能够准确预测除了训练数据以外的数据,我们把这种情况称为过度拟合。算法能够非常接近甚至就是训练的数据,是个非常好的事,但是它不能准确预测除…...
DotnetSpider实现网络爬虫
1. 使用DotnetSpider框架 DotnetSpider是一个开源的、轻量、灵活、高性能、跨平台的分布式网络爬虫框架,适用于.NET平台。它可以帮助开发者快速实现网页数据的抓取功能。 1.1 安装DotnetSpider NuGet包 首先,你需要在你的.NET项目中安装DotnetSpider NuGet包。你可以通过…...

锐捷WLAN产品出货量排名第一!
摘要:2024年Q3锐捷WLAN产品出货量排名第一!锐捷多形态Wi-Fi 7产品重磅出击! 近日, IT市场研究和咨询公司IDC发布《IDC中国企业级WLAN市场跟踪报告,2024年Q3》。报告显示,锐捷WLAN产品在2024年Q3出货量位居行业首位。至此,锐捷WLAN产品在2024年的Q1、Q2、Q3均实现了市场出货量的…...

win32汇编环境下,对话框程序中生成listview列表控件,点击标题栏自动排序的示例
;把代码抄进radasm里面,可以直接编译运行。重要的地方加了备注。 ;这个有点复杂,重要的地方加了备注 ;以下是ASM文件 ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>…...

自动化文档处理:Azure AI Document Intelligence
Azure AI Document Intelligence支持多种文件格式,包括PDF、JPEG、PNG等。其核心功能是将这些文档按页进行内容提取,并转化为LangChain文档。其默认输出格式是Markdown,这使得文档可以通过MarkdownHeaderTextSplitter进行语义分片。您也可以使…...

【Maven】Maven打包机制详解
Maven打包的类型? 以下是几种常见的打包形式: 1、jar (Java Archive) 用途:用于包含 Java 类文件和其他资源(如属性文件、配置文件等)的库项目。特点: 可以被其他项目作为依赖引用。适合创建独立的应用程…...
Python 向量检索库Faiss使用
Faiss(Facebook AI Similarity Search)是一个由 Facebook AI Research 开发的库,它专门用于高效地搜索和聚类大量向量。Faiss 能够在几毫秒内搜索数亿个向量,这使得它非常适合于实现近似最近邻(ANN)搜索&am…...
pd.Timestamp接收的参数类型
pd.Timestamp() 是 Pandas 中用于表示单个日期时间的函数,它可以接受多种类型的参数。以下是 pd.Timestamp() 可以接受的主要参数类型,并举例说明: 1. 日期时间字符串(Date/Time String) pd.Timestamp() 可以接收标准…...

stm32G473的flash模式是单bank还是双bank?
今天突然有人stm32G473的flash模式是单bank还是双bank?由于时间太久,我真忘记了。搜搜发现,还真有人和我一样。见下面的链接:https://shequ.stmicroelectronics.cn/forum.php?modviewthread&tid644563 根据STM32G4系列参考手…...

8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂
蛋白质结合剂(如抗体、抑制肽)在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上,高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术,但这类方法普遍面临资源消耗巨大、研发周期冗长…...

C++ 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...

逻辑回归暴力训练预测金融欺诈
简述 「使用逻辑回归暴力预测金融欺诈,并不断增加特征维度持续测试」的做法,体现了一种逐步建模与迭代验证的实验思路,在金融欺诈检测中非常有价值,本文作为一篇回顾性记录了早年间公司给某行做反欺诈预测用到的技术和思路。百度…...
作为测试我们应该关注redis哪些方面
1、功能测试 数据结构操作:验证字符串、列表、哈希、集合和有序的基本操作是否正确 持久化:测试aof和aof持久化机制,确保数据在开启后正确恢复。 事务:检查事务的原子性和回滚机制。 发布订阅:确保消息正确传递。 2、性…...

AI语音助手的Python实现
引言 语音助手(如小爱同学、Siri)通过语音识别、自然语言处理(NLP)和语音合成技术,为用户提供直观、高效的交互体验。随着人工智能的普及,Python开发者可以利用开源库和AI模型,快速构建自定义语音助手。本文由浅入深,详细介绍如何使用Python开发AI语音助手,涵盖基础功…...
MySQL 主从同步异常处理
阅读原文:https://www.xiaozaoshu.top/articles/mysql-m-s-update-pk MySQL 做双主,遇到的这个错误: Could not execute Update_rows event on table ... Error_code: 1032是 MySQL 主从复制时的经典错误之一,通常表示ÿ…...

【Veristand】Veristand环境安装教程-Linux RT / Windows
首先声明,此教程是针对Simulink编译模型并导入Veristand中编写的,同时需要注意的是老用户编译可能用的是Veristand Model Framework,那个是历史版本,且NI不会再维护,新版本编译支持为VeriStand Model Generation Suppo…...

《Docker》架构
文章目录 架构模式单机架构应用数据分离架构应用服务器集群架构读写分离/主从分离架构冷热分离架构垂直分库架构微服务架构容器编排架构什么是容器,docker,镜像,k8s 架构模式 单机架构 单机架构其实就是应用服务器和单机服务器都部署在同一…...
规则与人性的天平——由高考迟到事件引发的思考
当那位身着校服的考生在考场关闭1分钟后狂奔而至,他涨红的脸上写满绝望。铁门内秒针划过的弧度,成为改变人生的残酷抛物线。家长声嘶力竭的哀求与考务人员机械的"这是规定",构成当代中国教育最尖锐的隐喻。 一、刚性规则的必要性 …...