一阶IIR数字滤波器的设计

  • 最简单的低通滤波器传递函数入手
    • 对原始滤波器的改造
    • 低通变高通
    • 低通变带通
    • 高通变带阻
  • 从模拟到数字,采用双线性变换,简单方便
  • 频域分析
  • 结论

最简单的低通滤波器传递函数入手

万事开头难,所以我们先研究这个最简单的滤波器传递函数:
H ( s ) = 1 1 + s H(s) = \frac{1}{1+s} H(s)=1+s1​

这是一个最简单的1阶低通滤波器的传递函数,当s=0时, |H(s)|=1;当s= ∞ \infty ∞,|H(s)|=0。首先我们需要确定这个滤波器的截止频率,分析连续时间域的傅氏变换形式: H ( j Ω ) = 1 1 + j Ω H(j\Omega) = \frac{1}{1+j\Omega} H(jΩ)=1+jΩ1​ 求|H(j Ω \Omega Ω)|=1/ 2 \sqrt 2 2 ​等价于求 Ω = 1 \Omega=1 Ω=1, Ω \Omega Ω=2 π \pi πf,所以此滤波器的-3db截止频率是f=1/2 π \pi π=0.159 Hz。这个恐怕是没办法满足大部分要求的。

对原始滤波器的改造

H ( s ) = Ω c Ω c + s H(s) = \frac{\Omega_c}{\Omega_c+s} H(s)=Ωc​+sΩc​​
这里 Ω c \Omega_c Ωc​=2 π \pi π f c f_c fc​, 通过这个函数可以轻松的搞定截止频率的问题,看上去我们的这个巴特沃兹一阶滤波器好像可以用了。

低通变高通

用s= 1 s \frac{1}{s} s1​ 带入上面的公式,就会得到高通滤波器了。
H ( s ) = Ω c s Ω c s + 1 H(s) = \frac{\Omega_c s}{\Omega_c s+1} H(s)=Ωc​s+1Ωc​s​
可以直观的观察当s=0时, |H(s)|=0;当s= ∞ \infty ∞,|H(s)|=1。那此时的截止频率该怎么算,还是 Ω c \Omega_c Ωc​=2 π \pi π f c f_c fc​吗?答案当然是否定的了,我们定义高通截止频率 Ω h \Omega_h Ωh​= 1 Ω c \frac{1}{\Omega_c} Ωc​1​,显然,之前在 设计低通的时候确定的截止频率要取倒数了,或者干脆放弃 Ω c \Omega_c Ωc​, 1 Ω h \frac{1}{\Omega_h} Ωh​1​=2 π \pi π f h f_h fh​,我们得到 f h f_h fh​= 1 2 π Ω h \frac{1}{2\pi\Omega_h} 2πΩh​1​。
当然,我们可以用另一个直观的表达来重写这个传递函数
H ( s ) = s s + Ω h H(s) = \frac{s}{s+\Omega_h} H(s)=s+Ωh​s​
可以看出 Ω h \Omega_h Ωh​就是截止频率了。

低通变带通

低通变带通要比之前变高通复杂了,替换公式
s = s 2 + Ω m 2 B W s s = \frac{s^2+\Omega_m ^2}{BWs} s=BWss2+Ωm2​​
代入最原始的低通滤波器,我们会得到如下传递函数
H ( s ) = B W s s 2 + Ω m 2 + B W s H(s) = \frac{BWs}{s^2+\Omega_m ^2+BWs} H(s)=s2+Ωm2​+BWsBWs​
数学推算,留给读者自己吧,我也没有推出来,以后理清了再补上。

高通变带阻

高通变带阻,一样的替换公式,
s = s 2 + Ω c 2 B W s s = \frac{s^2+\Omega_c ^2}{BWs} s=BWss2+Ωc2​​
带入如下初始的高通滤波器
H ( s ) = s s + 1 H(s) = \frac{s}{s+1} H(s)=s+1s​
得到如下传递函数
H ( s ) = s 2 + Ω m 2 s 2 + Ω m 2 + B W s H(s) = \frac{s^2+\Omega_m ^2}{s^2+\Omega_m ^2+BWs} H(s)=s2+Ωm2​+BWss2+Ωm2​​

从模拟到数字,采用双线性变换,简单方便

假设我们需要为外放输出的数字音频作一个高通滤波器,截止频率在400Hz,采样频率48000Hz,第一章我们已经有了一个原型: H ( s ) = s s + 1 H(s) = \frac{s}{s+1} H(s)=s+1s​
数字滤波器的截止频率计算公式: ω c = 2 π f f s \omega_c =\frac{2\pi f}{f_s} ωc​=fs​2πf​

数字和模拟频率的转换关系: Ω c = ω c T \Omega_c = \frac{\omega_c}{T} Ωc​=Tωc​​
双线性变换一般要求对频率作预畸变处理,采用如下公式: Ω c = 2 T tan ⁡ ω c 2 \Omega_c = \frac{2}{T}\tan{\frac{\omega_c}{2}} Ωc​=T2​tan2ωc​​
以400Hz截止频率和48000Hz采样率来计算: ω c = 2 π f f s = π 60 ≈ 0.05236 \omega_c =\frac{2\pi f}{f_s}=\frac{\pi}{60}\approx 0.05236 ωc​=fs​2πf​=60π​≈0.05236
直接变换
Ω c = ω c T ≈ 0.05236 T \Omega_c = \frac{\omega_c}{T}\approx \frac{0.05236}{T} Ωc​=Tωc​​≈T0.05236​
预压缩变换
Ω c = 2 T tan ⁡ ω c 2 ≈ 0.05236 T \Omega_c = \frac{2}{T}\tan{\frac{\omega_c}{2}} \approx \frac{0.05236}{T} Ωc​=T2​tan2ωc​​≈T0.05236​
居然两个结果算得一样,哈哈。做如下代换 s = s Ω c {s=\frac{s}{\Omega_c}} s=Ωc​s​我们得到如下传递函数 H ( s ) = s Ω c + s = s T 0.05236 + s T H(s) = \frac{s}{\Omega_c+s}= \frac{sT}{0.05236 +sT} H(s)=Ωc​+ss​=0.05236+sTsT​
最后用双线性变换公式: s = 2 T z − 1 z + 1 = 2 T 1 − z − 1 1 + z − 1 s = \frac{2}{T} \frac{z-1}{z+1}=\frac{2}{T} \frac{1-z^{-1}}{1+z^{-1}} s=T2​z+1z−1​=T2​1+z−11−z−1​把s域映射到z域:
H 1 ( z ) = 1 − z − 1 1.02618 − 0.97371 z − 1 H_1(z) = \frac{1-z^{-1}}{1.02618-0.97371z^{-1}} H1​(z)=1.02618−0.97371z−11−z−1​

频域分析

利用Octave开源的工具,几乎可以替换Matlab, H ( z ) H(z) H(z)绘出频域响应曲线

至此,我们一阶的高通滤波器的系数已经得出。

结论

我们用最简单的模拟低通滤波器推导出一个简单的数字高通滤波器,基本满足假设的使用要求。本文主要参考了《Real-Time Digital Signal Processing Fundamentals, Implementations and Applications》,其他内容如有纰漏欢迎回复指正,谢谢。

一阶IIR数字滤波器的设计相关推荐

  1. 一阶shelf IIR数字滤波器的设计和实现

    一阶shelf IIR数字滤波器的设计和实现 还是从最简单的低通滤波器传递函数入手 第一步:给低通增加一个增益控制旋钮(系数) 第二步:并联一个直通信号 y(n)= x(n) low变high 从模拟 ...

  2. IIR数字滤波器的设计及应用——MATLAB

    一.实验目的 (1)熟悉双线性变换法和双重映射法设计IIR数字滤波器的原理与方法. (2)掌握IIR数字滤波器的MATLAB实现方法设计各种滤波器. (3)观察分析滤波器输入输出数据波形,理解数字滤波 ...

  3. MATLAB——IIR数字滤波器的设计

    1.基础知识 1.1.数字滤波器设计的基本步骤 我们知道模拟滤波器的设计是数字滤波器的设计的基础.在学习数字信号处理的过程中,IIR数字滤波器的设计的步骤是 (1)确定采样间隔Ts或者采样频率fs. ...

  4. m基于Matlab的fir和iir数字滤波器的设计与仿真

    目录 1.算法概述 2.仿真效果预览 3.MATLAB部分代码预览 4.完整MATLAB程序 1.算法概述 MATLAB系统供了许多工具箱(Toolbox),借助于信号处理工具箱(signal pro ...

  5. 数字信号处理(六)IIR数字滤波器的设计

    文章目录 数字滤波器 数字滤波器技术指标 数字低通滤波器的幅频响应曲线 IIR滤波器设计方法 IIR滤波器的函数模型设计法(间接法) 模拟低通滤波器的技术指标 模拟滤波器原型介绍 1.巴特沃斯模拟低通 ...

  6. 经典IIR数字滤波器设计一般步骤的总结

    基于Butterworth模拟LPF进行经典IIR数字滤波器一般设计的步骤总结   趁着这两天刚考完试,DSP忘掉的东西还不多,赶紧写篇note记录一下自己总结的经典IIR数字滤波器的一般设计流程. ...

  7. matlab的数字滤波器,基于Matlab的IIR数字滤波器设计方法比较及应用

    0 引言 数字滤波器(Digital Filter)是指输入.输出都是离散时间信号,通过一定运算关系改变输入信号所含频率成分的相对比例或者滤除某些频率成分的器件.数字滤波器在数字信号处理中起着非常重要 ...

  8. iir数字滤波器设计及matlab实现,iir数字滤波器设计及其matlab实现

    iir数字滤波器设计及其matlab实现 1IIR 数字滤波器设计及其 MATLAB 实现自动化学院 杨梅 201422070125摘 要IIR 数 字 滤 波 器 在 设 计 上 可 以 借 助 成 ...

  9. matlab滤波器设计双陷滤波,基于MATLAB 双线性变换法IIR 滤波器的设计

    摘要:滤波是信号处理的基础,因此滤波器的设计也就成为数字信号处理的基本问题之一.数字滤波是对数字信号处理不可或缺的环节,其好处远远大于模拟滤波器.本文应用MATLAB,实现了用双线性变换法设计IIR滤 ...

最新文章

  1. 10. JavaScript学习笔记——JSON
  2. 【转】程序debug正常release错误
  3. 2015蓝桥杯省赛---java---A---3(九数分三组)
  4. VBA类之一(初识类)
  5. 第一季7:海思制作的rootfs包含哪些内容?
  6. [深度学习-TF2实践]应用Tensorflow2.x训练DenseNet模型在Cifar10数据上,测试集准确率90.07%
  7. 微软简化 Windows 10 上的 WSL 安装
  8. 程序员月入2万与5千,这就是差距!
  9. ASP.NET URL重写浅析
  10. SharePoint 2010--为WebPart创建自定义属性
  11. 【Flutter】微信项目实战【01】基本框架搭建
  12. python3 模板库 好用_关于3个Python模板库的比较
  13. ZStack实践汇 | 详解ZStack高级功能--裸金属服务部署实践
  14. 系统设计的原则、特点与任务
  15. LidarSLAM(三):EVO- SLAM轨迹精度评价工具
  16. openwrt安装GPS设备,使用GPSD获取GPS信息
  17. STM32填坑:时钟使能必须在外设初始化之前
  18. 信创办公--基于WPS的Word最佳实践系列(快速自定义访问工具栏)——以添加“输出为PPTX”命令为例
  19. Prettier + Vetur 进行Vue2项目代码格式化
  20. android 陀螺仪简单使用,判读手机是否静止状态

热门文章

  1. BFS - Dungeon Master
  2. 2022届毕业生面经总结,目前已拿到阿里+微软双offer,希望大家给点建议!
  3. memcmp性能测试
  4. Pycharm常用快捷键【快查字典版】
  5. c#企业微信在线支付
  6. Visual C++注册
  7. 函数极限:函数极限的多种形式
  8. 【Scrum模式语言3】完成的定义
  9. 【强化学习】Actor-Critic算法详解
  10. Arduino开发教程汇总