我有一个关于数字滤波器频率响应的问题。特别是频率响应的相位方面。
- 为什么我们似乎不关心某些应用中的非线性相位响应?
- 如果我们离线过滤(即不是实时),是否可以校正相位失真?
鉴于我们有一个滤波器模型,我们可以获取输出的相位失真信号,然后单独移动信号中的频率吗?
似乎对于我们不能允许相位失真的应用,我们经常实现 FIR 滤波器。在哪些应用中绝对需要 FIR 滤波器?基本上任何东西都被实时过滤了?
我有一个关于数字滤波器频率响应的问题。特别是频率响应的相位方面。
鉴于我们有一个滤波器模型,我们可以获取输出的相位失真信号,然后单独移动信号中的频率吗?
似乎对于我们不能允许相位失真的应用,我们经常实现 FIR 滤波器。在哪些应用中绝对需要 FIR 滤波器?基本上任何东西都被实时过滤了?
为什么我们似乎不关心某些应用中的非线性相位响应?
很可能是因为这些特定应用程序不关心相位!
如果我们离线过滤(即不是实时),是否可以校正相位失真?
使用另一个滤波器,它与失真滤波器相结合,具有所需的相位特性,是的。这种过滤器是否存在的问题实际上是一个复杂的问题,取决于扭曲过滤器!
鉴于我们有一个滤波器模型,我们可以获取输出的相位失真信号,然后单独移动信号中的频率吗?
这就是复杂性的来源:如果只选择“单一”频率,则只能表示完全周期性的无限信号(傅里叶变换中带宽时间乘积的限制)。所以你需要某种“足够连续”的系统。
对于我们不能允许相位失真的应用,我们似乎也经常实现 FIR 滤波器。在哪些应用中绝对需要 FIR 滤波器?基本上任何东西都被实时过滤了?
不; 实时不是这里的重点。
所以,有很多应用需要线性系统。
这实际上减少了您对 IIR 和 FIR 滤波器的选择。
然而,是否选择其中任何一个的问题通常是设计可能性之一(我个人觉得用窗口方法设计 FIR 相对容易,而设计好的 IIR 相对困难,但那就是我,在 FIR 中长大- 友好的环境);这通常也是一个问题,即 IIR 设计在有限位宽假设下可以保持多长时间,或者 FIR 变得多长时间。
总体而言,数字滤波器的选择是一个热门话题,实际上在图书馆的书架上都摆满了。在不了解为过滤器设置的许多要求的情况下,不可能只说“我们使用它”。
话虽如此,在许多情况下,您确实需要一些易于适应的东西。FIR 非常适合这一点,因为您通常“只”必须在软件中交换一些抽头值,并且根据 FIR 的实际实现,您甚至可能在该交换期间有类似连续响应的东西。
请注意,有关您使用哪种类型的滤波器的所有问题通常都涉及权衡——您的滤波器响应并不完美,但无论如何您都无法实现无限长度的 FIR。您的延迟很低,但您为此付出了代价,在阻带中进行了次优抑制。您的抽取滤波器具有可调节的抽取,但作为交换,它的 CIC 响应相当圆。
许多这些权衡涉及实现过滤器所需的实际事物。您真的不应该假设一个有经验的 DSP 硬件设计人员只会将您的 Matlab FIR 放入他的 FPGA/ASIC 设计中。首先,这些设计中通常没有浮点,所以他首先需要检查动态范围,转换为定点,估计由此产生的误差,进行调整,其次,在 matlab 中可能很难的事情在硬件上可能更容易;根据每秒兆样本的符号位更改样本行进的路径?如果您不断地在 CPU 缓存中交换分接头,将完全影响 CPU 性能,但对于 FPGA 设计,这并不重要,因为无论如何硬件都需要在那里。在软件中使用 IIR?重点是什么,对内存的线性访问是可取的,并且缓存速度很快,所以如果过滤器很长,使用基于 FFT 的 FIR 实现可能是最快的。在硬件中,如果可以用一半长度的 IIR 来做同样的事情,那将是一种可怕的空间浪费。
回到相位失真和滤波器选择的问题:我们知道测试 FIR 滤波器是否具有线性相位非常简单:如果它的抽头是对称的(在复杂情况下是厄米特),那么它具有线性相位。这是一个强大的工具,也用于设计线性相位系统(不要与线性系统混淆)。使用 IIR 逼近线性相位可能会变得非常复杂/不可能,而使用非线性滤波器获得线性相位 - 我是一名通信工程师;非线性滤波器几乎是混频器,所以如果我们不打算丢弃相位信息,我们大多数时候都会避免使用它们。