首页/新闻资讯/正文详情

[数字信号处理]IIR滤波器的直接设计(C代码)

发布时间:2026/11/4 1:00:43 来源:云帆数科 栏目:资讯中心
[数字信号处理]IIR滤波器的直接设计(C代码)
【修订版】本文已整理到我的个人博客,订正了原文的几处错误:传递函数的分子应为 (1+z⁻¹)^N(原文写成了高通的 (1−z⁻¹)^N),增益 K 的分子分母写反了,「N 重极点」应为 N 重零点。CSDN 这一版保留原样,之后的勘误与更新只在博客进行:6.IIR滤波器的直接设计 | Finn's blog1.IIR滤波器的直接设计原理 不利用模拟滤波器,直接进行数字滤波器的设计的方法,称为直接设计。回忆之前所说的IIR滤波器的直接设计,我们首先设计了巴特沃斯模拟滤波器,然后进行双线性变换,得到数字滤波器。我所使用的是巴特沃斯低通滤波器作为原型滤波器,其振幅特性如下所示。 首先,我们先把数字滤波器的指标,根据下式转为模拟滤波器的指标。 然后根据模拟滤波器的设计指标,计算次数N,然后计算极点,最后选择出稳定的极点,计算模拟滤波器的传递函数。然后,我们通过拉普拉斯反变换,再使用差分替代微分,得到了S平面-Z平面的对应关系,将其转为数字滤波器。 详细的,戳链接 ---------[数字信号处理]IIR滤波器的间接设计(C代码) 现在,我们将这个过程,稍微调整一下。 1.1 巴特沃斯低通数字滤波器的设计 首先,转换指标的公式,直接带入巴特沃斯低通模拟滤波器的振幅特性表达式,然后化简,我们可以得到一个新的振幅特性同样的,这个振幅特性具有巴特沃斯低通模拟滤波器的一些特性。函数为单调递减的,通带与阻带都没有纹波。这个新的滤波器,称为巴特沃斯低通数字滤波器。 与之前一样的,我们的首先先确定所需要的滤波器的次数N,根据次数计算出极点,选择稳定的极点来计算出传递函数,然后就可以得到滤波器的系数了。 首先是次数的计算,次数的计算,还是要根据阻带衰减指标,根据下式计算。将巴特沃斯低通数字滤波器的振幅特性带入,我们就可以计算出所需要的滤波器的次数N。 下一步,我们是需要计算极点。这里与之前的间接设计不同,我们需要做一些变形。首先,将其振幅特性做平方,变为然后,把部分稍微做下变形,然后,将替换为Z,带入,则得到了如下式子通过这个式子,就可以很方便的计算极点与零点。很容易的能看出,这个滤波器的零点是-1,并且为N重极点(这里是振幅特性的平方所以不是2N)。此时,分母多项式为由于一步解开很麻烦,我们先将这个式子,关于解开,我们可以得到如下解,再解z,然后再我们就可以得到极点了,如下所示。

相关推荐

[数字图像处理]数字图像的整数倍扩大(数字图像插值)
[数字图像处理]数字图像的整数倍扩大(数字图像插值)

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 1:00:43

[数字信号处理]使用窗函数设计FIR滤波器
[数字信号处理]使用窗函数设计FIR滤波器

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 1:00:43

[数字图像处理]频域滤波(1)--基础与低通滤波器
[数字图像处理]频域滤波(1)--基础与低通滤波器

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 1:00:43

没 iPhone 也能玩:DiPlay 热点模式白嫖 CarPlay
没 iPhone 也能玩:DiPlay 热点模式白嫖 CarPlay

没 iPhone 也能玩:DiPlay 热点模式白嫖 CarPlay 【免费下载链接】DiPlay Independent CarPlay receiver for compatible Android head units. Wired and wireless public preview. 项目地址: https://gitcode.com/gh_mirrors/di/DiPlay 先说个扎心的帖子 车… · 2026/11/4 1:47:00

如何用Hermes Agent打造你的智能投资助手:从零到专业分析的完整指南
如何用Hermes Agent打造你的智能投资助手:从零到专业分析的完整指南

如何用Hermes Agent打造你的智能投资助手:从零到专业分析的完整指南 在AI技术快速发展的今天,拥有一个能理解市场动态、提供专业投资建议的智能助手已经成为现实。Hermes Agent作为一款自学习AI代理框架,为你提供了构建个性化金融分析系统的… · 2026/11/4 1:47:00

沁恒 RISC-V 蓝牙应用中常用蓝牙参数的设定和修改
沁恒 RISC-V 蓝牙应用中常用蓝牙参数的设定和修改

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 1:47:00

KoboldCpp v1.98 使用指南:一个文件跑起本地 AI 模型,5 分钟见到第一条回复
KoboldCpp v1.98 使用指南:一个文件跑起本地 AI 模型,5 分钟见到第一条回复

KoboldCpp v1.98 使用指南:一个文件跑起本地 AI 模型,5 分钟见到第一条回复 【免费下载链接】koboldcpp KoboldCpp - Run GGUF AI models locally with a KoboldAI UI. One File. Zero Install. 项目地址: https://gitcode.com/gh_mirrors/ko/koboldcp… · 2026/11/4 1:47:00

用一局太空侵略者看懂 SQLAlchemy ORM:多态继承与 joinedload 预加载实战
用一局太空侵略者看懂 SQLAlchemy ORM:多态继承与 joinedload 预加载实战

用一局太空侵略者看懂 SQLAlchemy ORM:多态继承与 joinedload 预加载实战 【免费下载链接】sqlalchemy The Database Toolkit for Python 项目地址: https://gitcode.com/gh_mirrors/sq/sqlalchemy SQLAlchemy ORM 常被当成 CRUD 脚手架,但仓库里… · 2026/11/4 1:47:00

深度揭秘:Hermes Agent如何构建企业级多智能体通信架构
深度揭秘:Hermes Agent如何构建企业级多智能体通信架构

深度揭秘:Hermes Agent如何构建企业级多智能体通信架构 在当今分布式AI系统日益复杂的背景下,多智能体协作的效率直接决定了系统的整体性能。Hermes Agent作为一款面向企业级应用的开源多智能体框架,通过创新的消息传递机制和智能协调协议&a… · 2026/11/4 1:46:00

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 13:10:28

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 6:04:24

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 5:52:46

AI辅助技术栈评估:提升研发决策效率60%
AI辅助技术栈评估:提升研发决策效率60%

1. 项目背景与核心价值技术决策一直是研发团队面临的重大挑战。随着技术生态的快速演进,技术栈的选择、维护和迭代变得愈发复杂。我们团队在过去两年里,先后经历了三次重大技术栈迁移,每次都需要投入大量人力进行技术评估和风险分析。直到去年… · 2026/11/4 0:00:17

从生成Token到直接决策:Jev如何重塑AI Agent工程实践
从生成Token到直接决策:Jev如何重塑AI Agent工程实践

1. 从"生成文字"到"拍板决策":Jev 到底在解决什么问题大多数人第一次接触大模型,脑子里建立的模型是"输入问题、输出文字"。你问它今天天气怎么样,它给你一段描述;你让它写个周报,它给你… · 2026/11/4 0:00:17

32G统一内存跑大模型:内存账、TPS实测与端云分流
32G统一内存跑大模型:内存账、TPS实测与端云分流

想在一台 32G 统一内存的小主机上把大模型跑成"日常可用",这件事我前后折腾了小半年。标题里说的这台 Mac mini M6,是我们这次讨论的目标平台,具体到手规格以实物为准;但下面这套推算方法和实测思路,对任何统… · 2026/11/4 0:00:17

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 13:10:28

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 6:04:24

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 5:52:46

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码