-->

IIR系数峰值EQ,如何将它们传递给vDSP_deq22?(IIR coefficients for

2019-06-24 01:52发布

我有一个峰值EQ这6个系数:

b0 = 1 + (α ⋅ A)
b1 = −2⋅ωC
b2 = 1 - (α ⋅ A)
a0 = 1 + (α / A)
a1 = −2 ⋅ ωC
a2 = 1 − (α / A)

有了这些中间变量:

ωc = 2 ⋅ π ⋅ fc / fs
ωS = sin(ωc)
ωC = cos(ωc)
A = sqrt(10^(G/20))
α = ωS / (2Q)

的文档vDSP_deq22()指出,“5单精度输入,滤波器系数”应该被通过,但我有6个系数! 此外,为了什么我把它们传递给vDSP_deq22()

更新(17/05/2012):我推荐大家使用我的DSP类我在GitHub上发布: https://github.com/bartolsthoorn/NVDSP它可能会节省你不少一些工作。

Answer 1:

2阶滤波器可以表示为下面的差分方程( ab可能取决于你如何定义它们互换):

a0.y[n] = b0.x[n] + b1.x[n-1] + b2.x[n-2] - a1.y[n-1] - a2.y[n-2]

您可以通过划分a0获得的表达式y[n]然后你只需要5个系数。

我发现的文档这里指定的顺序(查看通过给出的公式)。 它看起来像的顺序是:

{ b0/a0, b1/a0, b2/a0, a1/a0, a2/a0 }


文章来源: IIR coefficients for peaking EQ, how to pass them to vDSP_deq22?