IIR滤波器的设计与实现(内含设计IIR滤波器的高效方法)

写在前面:初学者学习这部分内容,要直接上手写代码可能会感到比较困难,我这里推荐一种高效快速的设计IIR,FIR滤波器的方法------MATLAB工具箱:filterDesigner。打开的方法很简单,就是在命令行键入:filterDesigner,就可以打开了。打开以后,界面是这样的:

直接输入设计的参数,想要的类型就可以很快的设计出滤波器了。点击"文件",还可以生成MATLAB代码。

还有一个很值得介绍的是:MATLAB FTVTool(滤波器可视化工具)

示例:(可视化工具会打卡下面这个窗口)

复制代码
b = firls(80,[0 0.11 0.19 1],[1 1 0 0],[1 100]); % Design an FIR filter
hd = dfilt.dffir(b); % Create the direct-form FIR filter.
set(hd,'Arithmetic','fixed');  % Quantize filter using 16-bit
% fvtool(b,hd);      % Compare the fixed-point filter with reference
h1 = copy(hd);       % Copy hd to h1
set(h1,'CoeffWordLength',12); % Use 12 bits for coefficients
fvtool(hd, h1);      % Compare 12-bit & 16-bit filters
  • (笔记正文)

  • 背景知识

    • 理想滤波器的特性,实际滤波器的妥协

      • 滤波:去除信号中不想要的成分或者增强所需成分

      • 理想与实际的妥协------容许有一定的误差:1.通带可能有波纹;2.阻带可能有非零增益;3.通带和阻带之间可能有过渡带。

    • FIR vs IIR

      • FIR:可实现任意幅度和相位响应、可实现线性相位但通常需要较大的阶数𝑀。

      • IIR:基于模拟滤波器设计而转换得到;通常只能实现频率选择性滤波但通常只需较小的阶数M

  • IIR数字滤波器的设计

    • 基于模拟滤波器的设计

      • 模拟滤波器的4种就经典类型:

        • 通带阻带都单调的巴特沃斯

        • 通带等波纹,阻带单调的切比雪夫I型(过渡带比巴特沃斯窄)

        • 阻带等波纹,通带单调的切比雪夫II型(过渡带比巴特沃斯窄)

        • 通带阻带都等波纹的椭圆滤波器(过渡带最窄)

      • IIR数字滤波器设计流程:

        • 预畸变:将关键的频率指标由数字域的𝜔转换为模拟域的Ω

        • 频率转换:若设计高通、带通或带阻,可由原型模拟低通

        • 滤波器𝐻LP(𝑠)通过频率转换得到

        • 低通设计:设计出原型模拟低通滤波器𝐻LP(𝑠)

        • 双线性变换:从模拟𝑠域映射到数字𝑧域

        • 验证:验证所得𝐻(𝑧)的性能

      • 模拟原型低通滤波器:以以巴特沃兹滤波器为例(省略推导过程)

        • 由4个参数作为滤波器指标(或者是通带衰减,阻带衰减rs,rp)

        • 子主题 2

      • 模拟𝑠域的频率变换:从低通到高通、带通、带阻

        • 低通------>高通

        • 低通------>带通

        • 低通------>带阻

      • 双线性变换:从模拟𝑠域到数字𝑧域

        • 目的:从模拟滤波器𝐻(𝑠)映射到数字滤波器𝐻(𝑧)

        • 使用双线性变换前,需对指定频率𝜔 进行预畸变至Ω = 2 tan( 𝜔/2)

    • IIR滤波器设计案例


相关推荐
学长毕设3 小时前
基于SpringBoot的青少年编程学习平台系统-附源码
spring boot·学习·青少年编程
小小de风呀7 小时前
de风——【从零开始学习Linux】(九):进程基础 —— 从冯诺依曼体系到 fork 创建进程
linux·学习
李某学编程7 小时前
基于ARM的微机原理学习笔记(一)
arm开发·笔记·学习
Song_RsHt8 小时前
Redis 与微服务,什么场景下无可替代
java·redis·后端·学习·微服务
sbjdhjd8 小时前
AI产业周度动态:从“更强模型”走向“可执行、可治理、可计价”的系统竞争 (2026年10月19日—10月25日)
人工智能·笔记·ai·开源·gemini·信息差·claude code
ss2739 小时前
AI时代首先数据库-PostgreSQL实战笔记 27 PostgreSQL数据写入与读取流程解析
数据库·笔记·postgresql
深圳老胡10 小时前
压力检测空吸功能硬件方案全解析:主流压力传感器品牌与实现路径
笔记·单片机·代码规范
程序猿追10 小时前
返回 null 不一定入队成功:鸿蒙 KMP上的并发优先队列观察笔记
笔记·华为·harmonyos·kmp
~kiss~11 小时前
PRO-LONG: Programmatic Memory Enables Long-Horizon Reasoning 程序式记忆赋能长程推理
学习
程序猿编码11 小时前
不依赖 vLLM/llama.cpp:一套面向学习的 DeepSeek-R1 CUDA 推理实现
c++·学习·语言模型·llama·vllm·大模型推理