IIR peaking filter 探秘

2023-10-22 21:30
文章标签 filter 探秘 iir peaking

本文主要是介绍IIR peaking filter 探秘,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

IIR peaking filter 探秘

  • 引言
  • 带通变peaking
      • 第一步:给带通增加一个增益控制旋钮(系数)
      • 第二步:并联一个直通信号 y(n)= x(n)
  • 双线性变换到数字域
  • 频域分析
  • 结论

引言

一阶滤波器虽好,但是只能压一头,如果需要带通/带阻/peaking/notch一类的IIR滤波器,多需要高阶来帮忙了,本文先介绍一下peaking 滤波器的基本概念,peaking 滤波器是audio音频的parametric equalizer的基本单元,了解了它,我们就是可以一窥神奇和parametric equalizer了。

带通变peaking

首先我们还是给出前文得到的带通滤波器传递函数:
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
带宽和通带中频如下定义
B W = Ω h − Ω l BW= \Omega_h- \Omega_l BW=ΩhΩl
Ω m = Ω h ∗ Ω l \Omega_m=\sqrt{ \Omega_h* \Omega_l} Ωm=ΩhΩl
实际当中客户会提出品质因数Q来限定 Ω m \Omega_m Ωm Ω h Ω l \Omega_h \Omega_l ΩhΩl的关系:
Q = Ω m Ω h − Ω l = Ω m B W Q=\frac{\Omega_m}{ \Omega_h- \Omega_l}=\frac{\Omega_m}{ BW} Q=ΩhΩlΩm=BWΩm
按照两步走的方法导出一个peaking 滤波器:

第一步:给带通增加一个增益控制旋钮(系数)

我们定义一个系数 B 0 B_0 B0,令带通滤波器的通带增益可调。
H ( s ) = B 0 ∗ B W s s 2 + Ω m 2 + B W s H(s) = \frac{ B_0*BWs}{s^2+\Omega_m ^2+BWs} H(s)=s2+Ωm2+BWsB0BWs

第二步:并联一个直通信号 y(n)= x(n)

并联直通信号的结果是传递函数,当s=0时, ∣ H ( s ) ∣ = 1 + B 0 |H(s)|=1+B_0 H(s)=1+B0;当s= ∞ \infty ,|H(s)|=1。截止频率 Ω c \Omega_c Ωc。下面是传递函数的数学表达: H ( s ) = 1 + B 0 ∗ B W s s 2 + Ω m 2 + B W s = s 2 + Ω m 2 + ( 1 + B 0 ) ∗ B W s s 2 + Ω m 2 + B W s H(s) =1+\frac{ B_0*BWs}{s^2+\Omega_m ^2+BWs} =\frac{ s^2+\Omega_m ^2+(1+B_0)*BWs}{s^2+\Omega_m ^2+BWs} H(s)=1+s2+Ωm2+BWsB0BWs=s2+Ωm2+BWss2+Ωm2+(1+B0)BWs
peaking滤波器也可以理解为带有增益的带通滤波器和直联信号的并联形式。那么notch 滤波器可以通过带阻并联直通来实现吗?答案是否定的,其实notch 滤波器和peaking滤波器可以根据 B 0 B_0 B0调整增益来实现。

双线性变换到数字域

数字滤波器的通带中心频率: ω m = 2 π f m f s \omega_m =\frac{2\pi f_m}{f_s} ωm=fs2πfm
预设Q值,我们可以得到带宽:
B W = Ω m Q BW=\frac{\Omega_m}{Q} BW=QΩm
代入先整理一下我们的传递函数: H ( s ) = s 2 + Ω m 2 + ( 1 + B 0 ) ∗ Ω m Q s s 2 + Ω m 2 + Ω m Q s H(s) =\frac{ s^2+\Omega_m ^2+(1+B_0)*\frac{\Omega_m}{Q}s}{s^2+\Omega_m ^2+\frac{\Omega_m}{Q}s} H(s)=s2+Ωm2+QΩmss2+Ωm2+(1+B0)QΩms
H ( s ) = s 2 + Ω m 2 + ( 1 + B 0 ) ∗ Ω m Q s s 2 + Ω m 2 + Ω m Q s H(s) =\frac{ s^2+\Omega_m ^2+(1+B_0)*\frac{\Omega_m}{Q}s}{s^2+\Omega_m ^2+\frac{\Omega_m}{Q}s} H(s)=s2+Ωm2+QΩmss2+Ωm2+(1+B0)QΩms
数字和模拟频率的转换关系: Ω m = ω m T \Omega_m = \frac{\omega_m}{T} Ωm=Tωm
双线性变换一般要求对频率作预畸变处理,采用如下公式: Ω m = 2 T tan ⁡ ω c 2 \Omega_m = \frac{2}{T}\tan{\frac{\omega_c}{2}} Ωm=T2tan2ωc
带入双线性变换公式: s = 2 T 1 − z − 1 1 + z − 1 和 ω m = 2 π f m f s s =\frac{2}{T} \frac{1-z^{-1}}{1+z^{-1}} 和 \omega_m =\frac{2\pi f_m}{f_s} s=T21+z11z1ωm=fs2πfm

直接变换我们得到
H ( s ) = ( 1 + ( f m π f s ) 2 + ( 1 + B 0 ) π f m Q f s ) + 2 ( ( f m π f s ) 2 − 1 ) z − 1 + ( 1 + ( f m π f s ) 2 − ( 1 + B 0 ) π f m Q f s ) z − 2 ( 1 + ( f m π f s ) 2 + π f m Q f s ) + 2 ( ( f m π f s ) 2 − 1 ) z − 1 + ( 1 + ( f m π f s ) 2 − π f m Q f s ) z − 2 = Y ( Z ) X ( Z ) H(s) =\frac{(1+(\frac{f_m\pi}{f_s})^2+\frac{(1+B_0)\pi f_m}{Qf_s})+2((\frac{f_m\pi}{f_s})^2-1)z^{-1}+(1+(\frac{f_m\pi}{f_s})^2-\frac{(1+B_0)\pi f_m}{Qf_s})z^{-2}}{(1+(\frac{f_m\pi}{f_s})^2+\frac{\pi f_m}{Qf_s})+2((\frac{f_m\pi}{f_s})^2-1)z^{-1}+(1+(\frac{f_m\pi}{f_s})^2-\frac{\pi f_m}{Qf_s})z^{-2}}=\frac{Y(Z)}{X(Z)} H(s)=(1+(fsfmπ)2+Qfsπfm)+2((fsfmπ)21)z1+(1+(fsfmπ)2Qfsπfm)z2(1+(fsfmπ)2+Qfs(1+B0)πfm)+2((fsfmπ)21)z1+(1+(fsfmπ)2Qfs(1+B0)πfm)z2=X(Z)Y(Z)
我们令 a = 1 + ( f m π f s ) 2 + π f m Q f s a=1+(\frac{f_m\pi}{f_s})^2+\frac{\pi f_m}{Qf_s} a=1+(fsfmπ)2+Qfsπfm b = π f m f s b=\frac{\pi f_m}{f_s} b=fsπfm,将上式简化如下
H ( s ) = ( 1 + B 0 b Q a ) + 2 ( b 2 − 1 a ) z − 1 + ( 1 − ( 2 + B 0 ) b Q a ) z − 2 1 + 2 ( b 2 − 1 a ) z − 1 + ( 1 − 2 b Q a ) z − 2 H(s) =\frac{(1+\frac{B_0b}{Qa})+2(\frac{b^2-1}{a})z^{-1}+(1-\frac{(2+B_0)b}{Qa})z^{-2}}{1+2(\frac{b^2-1}{a})z^{-1}+(1-\frac{2b}{Qa})z^{-2}} H(s)=1+2(ab21)z1+(1Qa2b)z2(1+QaB0b)+2(ab21)z1+(1Qa(2+B0)b)z2
这个系数计算比之一阶要复杂了非常多,也为频域分析和增益计算增加了难度。这时该方程只需要客户的中心频率和Q值。双线性变换、差分方程略。

频域分析

利用Octave开源的工具,我们设定采样频率 f s f_s fs=48000Hz和频率 f m f_m fm=6000Hz,Q=10, B 0 B_0 B0=0.414 绘出 H ( z ) H(z) H(z)频域响应曲线:
在这里插入图片描述
可以看出 ω m = 2 π f m f s = π 4 \omega_m=2\pi\frac{fm}{fs}=\frac{\pi}{4} ωm=2πfsfm=4π的中心频率被加强了,不过该滤波器的 1 + B 0 = G 1+B_0=G 1+B0=G的条件不成立了,实际增益到了27dB,还有一个就是高低频也没有完全收敛到0dB。

结论

至此,我们二阶的IIR peaking滤波器设计完成,本文只为理解Peaking滤波器的一些基本原理,实际应用中有很多成熟的peaking filter的设计方法可以参考,有兴趣的同学可以自己去寻找和比较。

这篇关于IIR peaking filter 探秘的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/263711

相关文章

Hbase Filter+Scan 查询效率优化

Hbase Filter+Scan 查询效率问题 众所周知,Hbase利用filter过滤器查询时候会进行全表扫描,查询效率低下,如果没有二级索引,在项目中很多情况需要利用filter,下面针对这种情况尝试了几种优化的方案,仅供参考,欢迎交流。 根据业务要求,作者需要根据时间范围搜索所需要的数据,所以作者设计的rowKey是以时间戳为起始字符串的。 正确尝试: 1.scan 设置 开始行和结

Spring Boot 注解探秘:HTTP 请求的魅力之旅

在SpringBoot应用开发中,处理Http请求是一项基础且重要的任务。Spring Boot通过提供一系列丰富的注解极大地简化了这一过程,使得定义请求处理器和路由变得更加直观与便捷。这些注解不仅帮助开发者清晰地定义不同类型的HTTP请求如何被处理,同时也提升了代码的可读性和维护性。 一、@RequestMapping @RequestMapping用于将特定的HTTP请求映射到特定的方法上

Filter基本原理和使用

https://www.cnblogs.com/xdp-gacl/p/3948353.html 一、Filter简介   Filter也称之为过滤器,它是Servlet技术中最激动人心的技术,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件或静态 html 文件等进行拦截,从而实现一些特殊的功能。例如实现URL级别的权限访问控

黑神话悟空背后的技术揭秘与代码探秘

《重塑神话:黑神话悟空背后的技术揭秘与代码探秘》 引言 在国产游戏领域,《黑神话:悟空》无疑是一颗璀璨的明星,它不仅融合了深厚的中国文化元素,更在技术上实现了诸多突破,为玩家带来了前所未有的沉浸式体验。本文将深入剖析《黑神话:悟空》背后的关键技术,并通过代码案例展示其技术实现的魅力。 一、高精度动作捕捉技术 《黑神话:悟空》中的角色动作之所以如此逼真,得益于高精度动作捕捉技术的应用

在UE的内容浏览器中添加自定义的Filter

目标需求 在UE的内容浏览器中,可以使用Filter来过滤资源: 目标需求是在这之中添加一个自定义的Filter。 其代码上是非常简单的,在本文末尾。 然而我觉得找到方法的过程也是挺有意思的,因此我也记录了下来。 探索过程 1. 在哪定义? 首先,我猜测Other Filters下的各个项目,也都是通过代码添加的。因此,我调了其中一项,比如Show Redirectors,然后对代码进

Flink实例(六十八):布隆过滤器(Bloom Filter)的原理和实现

什么情况下需要布隆过滤器? 先来看几个比较常见的例子 字处理软件中,需要检查一个英语单词是否拼写正确在 FBI,一个嫌疑人的名字是否已经在嫌疑名单上在网络爬虫里,一个网址是否被访问过yahoo, gmail等邮箱垃圾邮件过滤功能 这几个例子有一个共同的特点: 如何判断一个元素是否存在一个集合中? 常规思路 数组链表树、平衡二叉树、TrieMap (红黑树)哈希表 虽然上面描述的

AI技术颠覆游戏开发:谷歌DeepMind GameNGen实时生成《DOOM》探秘

引言 近年来,生成式人工智能(AIGC)在图像和视频生成领域取得了巨大突破。然而,谁能想到,这项技术正逐渐渗透进游戏开发领域,且潜力巨大。2023年8月29日,谷歌DeepMind发布了名为《扩散模型是实时游戏引擎》(Diffusion Models Are Real-Time Game Engines)的论文,提出了全新的AI游戏生成引擎GameNGen。令人惊讶的是,GameNGen无需传统

过滤器(Filter)和拦截器(Interceptor)

在Web开发中,过滤器(Filter)和拦截器(Interceptor)都是重要的组件,它们都可以对HTTP请求进行预处理、后处理以及一些额外的操作。然而,它们之间在多个方面存在明显的区别 1. 运行位置 过滤器(Filter):运行在Web服务器和Servlet容器之间的组件,可以拦截所有进出该容器的请求和响应。过滤器是Servlet规范的一部分,不依赖于特定的框架。拦截器(Intercep

使用filter改变改变地址,但又不想被本过滤器再次拦截的方法

继承HttpServletRequestWrapper重写里面的方法 如果是servlet重写getRequestURI() 如果是spring mvc重写 getServletPath()  可以根据getDispatcherType()类确定是那种调度类型,一般客户端请求action,或controller都是REQUEST,controller跳转到页面是FORWARD。

VitePress 项目结构探秘:项目根与源码目录

在 VitePress 的世界里,构建文档网站变得前所未有的简单和高效。作为 Vite 生态中的一颗璀璨明珠,VitePress 专为文档网站量身打造,它利用 Markdown 文件和 Vue 组件,帮助我们快速生成静态网站。在深入使用 VitePress 之前,理解项目根和源码目录这两个核心概念至关重要。 一、项目根目录 项目根目录是 VitePress 查找 .vitepress 特殊目录