2012-04-29 10 views
7

Ho questi 6 coefficienti per picco EQ:Coefficienti IIR per EQ peaking, come passarli a vDSP_deq22?

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

Con queste variabili intermedie:

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

La documentazione di vDSP_deq22() afferma che "5 ingressi singola precisione, coefficienti di filtro" dovrebbero essere passati ma Ho 6 coefficienti! Inoltre, in che ordine li passo a vDSP_deq22()?

Update (17/05): Consiglio a tutti di usare la mia classe DSP ho rilasciato su github: https://github.com/bartolsthoorn/NVDSP Sarà probabilmente risparmiare un bel po 'di lavoro.

risposta

8

Un filtro di 2 ° ordine può essere espresso come la seguente equazione alle differenze (a e b possono essere scambiati a seconda di come li avete definito):

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

si può dividere attraverso da a0 per ottenere un espressione per y[n] e quindi sono necessari solo 5 coefficienti.

La documentazione che ho trovato here specifica l'ordine (vedere l'equazione fornita). Sembra che l'ordine sia:

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

Grazie, spiegazione davvero chiara! – bartolsthoorn

+0

Ehm, non pensate che sia '{b0/a0, b1/a0, b2/a0, a1/a0, a2/a0}' – bartolsthoorn

+2

@bartolsthoorn: Il mio cervello lo fa, ma le mie dita non ... –