7

mam te 6 współczynników dla osiągając EQ:Współczynniki IIR dla wartościowania EQ, jak przekazać je do vDSP_deq22?

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

Z tych zmiennych pośrednich:

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

Dokumentacja vDSP_deq22() stwierdza, że ​​"5 wejść single-precision, współczynniki filtru" powinny być przekazywane, ale Mam 6 współczynników! Ponadto, w jakiej kolejności przekazuję je do vDSP_deq22()?

Update (17/05): polecam wszystkim do korzystania z mojego klasy DSP wydałem na github: https://github.com/bartolsthoorn/NVDSP To będzie prawdopodobnie zaoszczędzić sporo pracy.

Odpowiedz

8

Filtr 2nd-order można wyrazić następującym równaniem różnicowym (a i b mogą być wymieniane w zależności od sposobu ich już zdefiniowane):

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

Można podzielić przez przez a0 dostać wyrażenie dla y[n], a następnie potrzebujesz tylko 5 współczynników.

Dokumentacja, którą znalazłem here określa kolejność (zobacz podane równanie). Wygląda na to, że zamówienie jest:

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

Dziękuję, bardzo jasne wyjaśnienie! – bartolsthoorn

+0

Ehm, nie sądzisz, że to {b0/a0, b1/a0, b2/a0, a1/a0, a2/a0} ' – bartolsthoorn

+2

@bartolsthoorn: Mój mózg ma, ale moje palce nie ... –

Powiązane problemy