峰值均衡器的IIR系数,如何将它们传递给vDSP_deq22?

时间:2012-04-29 19:43:45

标签: c macos signal-processing core-audio accelerate-framework

我有6个系数用于峰值EQ:

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):我建议每个人都使用我在github上发布的DSP类:https://github.com/bartolsthoorn/NVDSP这可能会为你节省很多工作。

1 个答案:

答案 0 :(得分:8)

二阶滤波器可以表示为以下差分方程(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个系数。

我找到的文档here指定了顺序(请参阅给出的等式)。看起来顺序是:

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