滤波器阶数 vs 抽头数 vs 系数数

信息处理 过滤器 过滤器设计 无限脉冲响应 有限脉冲响应
2022-01-03 22:13:34

我正在慢慢学习 DSP,并试图围绕一些术语来思考:

  • 问题 1:假设我有以下滤波器差分方程:

    y[n]=2x[n]+4x[n2]+6x[n3]+8x[n4]

    右侧有 4 个系数。“抽头数”也是4吗?“过滤顺序”也是4吗?

  • 问题 2:我正在尝试使用 MATLABfir1(n, Wn)函数。如果我想创建一个 10 抽头过滤器,我会设置吗?n=10

  • 问题 3:假设我有以下递归(可能是 IIR)滤波器差分方程:

    y[n]+2y[n1]=2x[n]+4x[n2]+6x[n3]+8x[n4]

    由于左侧和右侧的系数数量不同,我将如何确定“抽头数”和“滤波器阶数”?

  • 问题 4:以下逻辑 if-and-only-if 语句是否正确?

    • 过滤器是递归过滤器是 IIR。
    • 滤波器是非递归滤波器是 FIR。
2个回答

好的,我将尝试回答您的问题:

Q1:抽头数不等于滤波器阶数。在您的示例中,过滤器长度为 5,即过滤器扩展到 5 个输入样本 [ ]。抽头数与滤波器长度相同。在您的情况下,您有一个等于零的抽头(的系数),因此您碰巧有 4 个非零抽头。尽管如此,滤波器长度为 5。FIR 滤波器的阶数为滤波器长度减 1,即您的示例中的滤波器阶数为 4。x(n),x(n1),x(n2),x(n3),x(n4)x(n1)

Q2:Matlab 函数 fir1() 中的是过滤器阶数,即您得到一个包含元素的向量作为结果(因此是您的过滤器长度 = 抽头数)。nn+1n+1

Q3:过滤器顺序又是4。你可以从实现过滤器所需的最大延迟中看出。它确实是一个递归 IIR 滤波器。如果按抽头数表示滤波器系数的数量,那么对于阶 IIR 滤波器,您通常有系数,即使在您的示例中它们中有几个是零。nth2(n+1)

Q4:这是一个有点棘手的问题。让我们从简单的情况开始:非递归滤波器总是有一个有限的脉冲响应,即它是一个 FIR 滤波器。通常递归滤波器具有无限脉冲响应,即它是一个 IIR 滤波器,但也存在使用递归结构实现有限脉冲响应的退化情况。但后一种情况是个例外。

  • 问题1:在FIR滤波器的情况下,抽头数=系数s数=滤波器长度。过滤器的阶数等于过滤器 1 的长度。
  • 问题 2:应设置为 9。n
  • 问题 3:这是一个 IIR 滤波器,因为您在其中有反馈。尝试将方程转换回 z 变换并将其表示为传递函数,例如,然后您可以看到您在问什么,或者可能会为 IIR 阅读更多内容过滤器来确定它们的顺序。
    Y(z)/X(z)=H(z)
  • 问题 4:FIR 滤波器是直接的,意味着它没有反馈,但对于 IIR 滤波器,您会有反馈。我建议您使用 FIR 滤波器,因为它们具有线性相位。另一方面,对于相同大小的 FIR 滤波器,IIR 滤波器的计算量较少,因为 IIR 滤波器的系数数量较少,但 IIR 滤波器没有线性相位。所以,你可以说这是一种权衡。