选择IIR滤波器实现时应考虑哪些因素?


Answers:


9

首先,从维基百科了解一些有关Direct Form I和II实现的信息。

直接形式I需要更多的内存,但是它是一种较为简单的策略,并且不太可能出现舍入和共振问题。

直接形式II需要较少的内存,但它有可能发生异常的交互,增加数量并产生更大的舍入错误。通过级联较小的滤波器,尤其是二阶滤波器,可以减少很多这种情况。


2
无论哪种情况,都应该级联第二部分。
奥利弗·查尔斯沃思

1
简而言之,这是内存与舍入错误之间的权衡吗?
anasimtiaz 2011年

2
IMO超弱回答。从技术上讲,它回答了问题……但仅是“技术上”。我希望看到某种语言的源代码。我知道如何实现一个简单的FIR滤波器。让我们看一下IIR源代码。
特雷弗·博伊德·史密斯

2
此外,就每个样本执行的数学运算而言,哪种方法更好实施I或II?
anasimtiaz 2011年

1
我知道如何进行FIR滤波。我也知道什么是直接表格I / II / III / IV。我没有经验的是IIR:设计或实现。我最初的评论不是很有建设性。我应该说:“我了解I-IV的直接形式,请您谈谈如何设计/实现IIR滤波器?”
特雷弗·博伊德·史密斯

9

有点过时了,但也许应该得到更全面的答案,尤其是因为Direct Form II会给您带来很多麻烦。首先,没有“一刀切”的产品,最佳选择取决于您的特定应用和约束。你可以考虑的是

  1. 内存:直接形式II和转置形式II占用的状态内存要比直接形式I和转置形式I少一些,但是在级联的二阶节实现中,差异很小
  2. MIPS:就乘法和加法的数量而言,所有四个实现都是相同的。但是,取决于特定处理器的指令集,实现效率可能存在显着差异。因此,“取决于”。
  3. 定点属性:这有很大的不同。首先,您必须确保状态变量不会溢出,因此您需要分析输入/输出与状态变量之间的传递函数。在这里,直接表格I和换位表格II是明显的赢家。状态变量与输入和输出之间的关系为+ 106dB左右。例如,在直接形式II中,从输入到状态的传递函数仅由极点给出。我已经看到了现实中的示例,该示例实际上可以超过100 dB的增益。对于定点实现,这绝对是非非。
  4. 噪声:就截断和舍入错误而言,所有实现都大致相同。3)中提到的状态变量传递函数问题也在一定程度上影响了它,即使使用32位浮点,我也已经看到Direct Form II滤波器的可听噪声问题。

因此,总而言之,转位表II通常是最佳选择。在某些定点场景中,尤其是在存在严重噪声问题的情况下,Direct Form I更好,因为它可以更容易地通过Error Spectrum Shaping等进行增强。


这是一个更全面,更好的答案!
Lorem Ipsum

2
我今天以一种更加困难的方式弄清楚了为什么Direct Form I是我的应用程序的更好选择。感谢您的答复!
anasimtiaz 2011年

1

除非您使用的是资源非常匮乏的系统或有极端要求,否则实际上选择直接形式I还是II都没有关系。例如,如果您正在PC或智能手机上做事,那真的没关系。就个人而言,我更喜欢表格I。

真正的问题通常是MIPS,如果您打算进行定点实施,事情会变得更加复杂。例如,在ARM上,如果系数和滤波器状态均为32位,则IIR滤波器将消耗更多的MIPS。如果您需要实现例如截止频率非常低的低通滤波器,则需要32位的状态和系数。在这些情况下,您可以使用其他类型的过滤器,例如状态变量过滤器。


1

除了诸如数值精度之类的技术差异外,还存在稳定性问题。当数字滤波器的极/零对彼此靠近时,频率响应可能在各个位置变得不稳定(通常接近奈奎斯特或接近零)。

当IIR滤波器用于音乐应用时,当对滤波器参数进行实时调制(例如,改变低通滤波器的截止频率)时,实现的选择会对滤波器的稳定性产生深远的影响。

我有一个开源应用程序,可让您听取以下各个实现的差异以及时变参数(例如截止频率或峰值增益)的差异:

  • 直接表格I
  • 直接表格II
  • 换位直接表格I
  • 转置直接表格II
  • 格形
  • 状态变量

该项目在这里:

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

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

屏幕截图


1
您已经发布了好几次,并且我倾向于执行垃圾邮件政策,除非您的答案实际上是针对问题定制的。这些帖子都没有直接回答问题,也没有推广产品。编辑它们以直接回答问题,否则它们将被删除。
声子

0

除了上面有关内存,MIPS,噪声和稳定性的注释之外;还有另一个通常被忽略的因素。这个因素是重置能力;在我的大多数情况下,这非常重要。

使用Direct Form II实现时,没有用于延迟输出的状态,因此,如果将“ Direct Form II”过滤器“重置”为“ 5”,则其初始输出将不会是5。 -直观,在使用Simulink时造成了严重的挫败感。因此,我几乎总是使用Direct Form I实现。不幸的是,如果您具有DSP工具箱,Simulink仅支持Direct Form I,即使如此,它仍然不能让您从输入信号中设置初始条件。

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.