可调谐巴特沃思滤波器有任何标准的实现形式吗?


17

实现巴特沃思滤波器的标准方法之一是级联第二级部分,每个部分对应于一对复共轭极点。例如,对于四阶滤波器,将有两个二阶部分。如果我们考虑低通滤波器的极点位置在z平面上的变化,因为截止点设计为从0hz到Nyquist附近,则每对极点“扫出”的路径对应于单位圆内的一对弧,如下图所示[用于四阶滤波器]:

四阶Butterworth低通滤波器的Z平面极点位置

给定这些过滤器已经存在了多长时间,并且考虑到这些“弧”对应于s平面中的直线,这可以说是有人会开发出具有单个参数且能够扫极的实现形式在“运行时”(相对于“设计时”)沿弧线移动。但是,我还没有遇到过类似的事情。

提出各种方法的相对简单,尤其是在范围段内,并且愿意为此付出一点额外的计算。我想知道的是以下内容:

是否存在某种标准方法来实现给定阶数的可调谐[数字]巴特沃斯滤波器,即1)具有最佳属性(例如效率,鲁棒性),2)覆盖整个范围?

还是这真的是一个如此简单的问题,没人理会呢?如果是这样,似乎它将显示在“静态”设计选项旁边的过滤器设计程序中。

我确实发现了这一点:具有可变截止频率的多用途Butterworth滤波器,但是起初在Google搜索中,关于其中的内容似乎没有太多信息。

更新(回复:答案)

为了更清楚一点:

  • 我正在寻找带有参数(例如[0,1]的参数)的“元设计”,该参数将自动调整从DC到Nyquist的截止(同时保持增益归一化),以用于时变系统。类似于此两极谐振器,但有Butterworth约束。想法是,计算参数比在运行时执行典型的脱机设计过程更有效。
  • 我什至没有在寻找如何设计“元过滤器”(即用变量而不是数字进行数学运算),我想知道是否有标准[非显而易见]实现形式的选择,因为,也就是说,与静态情况相对应的直接方法最终会在时变情况下出现数字问题。
  • 也许没有问题,而直接的方法就是实践中使用的方法。那太好了。我担心的是,在我查阅过的任何资料中,我都没有看到这个话题的明确提及,但是也许我只是错过了一些非常明显的东西,所以我问。
  • 在这里添加更多细节的过程中,我遇到了对参数双二阶结构的一般处理,这几乎是我要寻找的(并且有一些不错的参考)。

更新2

我正在寻找与我在Jason R的第二条评论中输入的答案相同的答案,如下所示:

“哦,是的,您想要以抽头状态格子形式使用某某论文中的参数化III-2b,因为它可以在使用最小数量的乘法的情况下解决某某边缘情况。”

也许没有类似的东西存在,但是我的问题是它是否存在,如果存在,它是什么,或者在哪里可以找到它?

头奖

根据提姆·韦斯科特(Tim Wescott)在Jason R的答案中的comp.dsp线程中给出的“观察者规范形式”的引用,我决定假设我可能必须开始研究控制系统文献,因此我尝试进行搜索Butterworth“状态空间”,它发现了以下非常酷的设计/实现方法,不仅是参数化的Butterworth,而且还有Chebyshev和Elliptic过滤器:

Sophocles J. Orfanidis,“高阶数字参数均衡器设计”,J。Audio Eng。SOC。卷 53,第1026-1046页,2005年11月。

可能需要花一些时间才能深入研究,但是根据我到目前为止所读的内容,如果不是我想要的内容,我会感到非常惊讶。我将此内容提供给Jason R,作为comp.dsp参考,使我了解了Orfanidis论文。他的答案也是设计巴特沃斯滤波器的实用指南。

Answers:


10

我不确定您在寻找什么。正如您在问题中指出的那样,巴特沃思滤波器系列传递函数已被很好地理解,并且易于分析计算。实现Butterworth滤波器结构非常简单,该结构可以通过滤波器阶数和截止频率进行调整:

  1. 根据所选的滤波器阶数,截止频率和采样率,计算巴特沃思模拟原型滤波器的极点位置。由于巴特沃思滤波器没有零,因此传递函数由极点位置(和直流增益)决定。

  2. 使用双线性变换,将模拟原型的极点位置映射到滤波器的数字实现中的相应位置。

  3. 同样,数字滤波器由在步骤2中找到的极点位置定义。通过将极点成对分组,将滤波器分为二阶部分

而已。正如我所说,使用您可能需要的任何参数以编程方式设计巴特沃斯滤波器都非常简单;实施这些操作都不是十分复杂。

编辑:我不太确定您要寻找什么最终结果。我想您反而对如何实现随时间变化的IIR滤波器最感兴趣,而这些IIR滤波器不一定特定于Butterworth滤波器。我假设您的目标是在更改滤波器截止频率时最大程度地减少伪影。今年早些时候在comp.dsp新闻组讨论中对此进行了介绍。虽然我不确定您对这种过滤器结构的用例或要求是什么,但是有多种方法可以完成切换。

我知道您说过,您希望滤波器具有定义截止频率的单个参数,但是事实仍然是,您的可调结构必须具有一种将截止频率转换为所需系数的方法(或者在Butterworth情况下,仅极位置)。上面描述的过程I适用于根据所需的标准化采样率生成极点位置。

您可以通过分析z平面中数字滤波器极点位置的几何形状来简化极点位置计算过程。模拟巴特沃思滤波器的极点位于s平面左半部分的一个半圆中。双线性变换将此半圆映射为问题描述中所示的椭圆形图案。使用此已知模式到模拟Butterworth滤波器的极点,双线性变换的映射函数以及某些代数,您可能能够针对数字滤波器的极点位置提出一个相对简单的表达式,从而为您提供外观更直接的滤波器调整动作。


贾森(Jason),我不是在寻找如何设计给定的巴特沃思规格,而是在寻找“元设计”。我将更详细地更新问题。
datageist

1
回复:编辑。您在上一段中描述的过程正是我将如何处理的过程-我只是想知道是否实际上已经涵盖了任何地方。换句话说,诸如“哦,是的,您想使用某某人论文中的参数化III-2b,以抽头状态格形式使用,因为它可以在使用最小数量的乘法的同时解决某某情况下的边缘情况。 ”
datageist

1
一针见血的小评论:在Z平面上,BW滤波器确实确实为零。对于低通滤波器,它们都为-1,对于高通滤波器,它们均为+1。
希尔马

s±ss0

2

是的,有针对Butterworth的标准实现形式,以及几乎所有其他过滤器响应。它们全部在我的开源IIR过滤器库中完全实现。这是一段代码,可为任意度的Butterworth滤波器生成极点/零对:

void AnalogLowPass::design (int numPoles)
{
  if (m_numPoles != numPoles)
  {
    m_numPoles = numPoles;

    reset ();

    const double n2 = 2 * numPoles;
    const int pairs = numPoles / 2;
    for (int i = 0; i < pairs; ++i)
    {
      complex_t c = std::polar (1., doublePi_2 + (2 * i + 1) * doublePi / n2);
      addPoleZeroConjugatePairs (c, infinity());
    }

    if (numPoles & 1)
      add (-1, infinity());
  }
}

如您所见,极点的位置是通过将s平面细分为“成对”的相等段来计算的。

针对所有常见类型的过滤器响应提供了适当的代码:Chebyshev,Elliptic,Legendre,包括每种的架子版本。

https://github.com/vinniefalco/DSPFiltersDemo.git

https://github.com/vinniefalco/DSPFilters.git

屏幕截图


DSPFilters库通过使用参数化方程式在运行时计算数字滤波器的零点对/零点对,直接解决了原始问题所考虑的用例。我将修改答案,还包括源代码片段。
文尼法尔科
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.