2012-04-29 17 views
7

tengo estos 6 coeficientes para alcanzar un máximo de ecualización:Coeficientes IIR para EQ pico, ¿cómo pasarlos a vDSP_deq22?

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

Con estas variables intermedias:

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

La documentación de vDSP_deq22() afirma que "5 entradas de precisión simple, coeficientes de filtro" se debe pasar, pero Tengo 6 coeficientes! Además, ¿en qué orden los paso a vDSP_deq22()?

Actualización (17/05): lo recomiendo a todos a utilizar mi clase DSP Liberé en github: https://github.com/bartolsthoorn/NVDSP Probablemente se ahorrará un poco de trabajo.

Respuesta

8

Un filtro de segundo orden se puede expresar como la siguiente ecuación en diferencias (a y b puede intercambiarse dependiendo de cómo se les ha definido):

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

Se puede dividir a través de a0 para obtener una expresión para y[n], y luego solo necesitas 5 coeficientes.

La documentación que encontré here especifica el orden (ver la ecuación que se proporciona). Parece que el orden es:

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

¡Gracias, explicación realmente clara! – bartolsthoorn

+0

Ehm, ¿no crees que es '{b0/a0, b1/a0, b2/a0, a1/a0, a2/a0}' – bartolsthoorn

+2

@bartolsthoorn: Mi cerebro sí, pero mis dedos no ... –

Cuestiones relacionadas