我有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这可能会为你节省很多工作。
答案 0 :(得分:8)
二阶滤波器可以表示为以下差分方程(a
和b
可以互换,具体取决于你如何定义它们:
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 }