IIR Direktform konvertieren

OP (Firma: dl1bg) #3600461
Lesenswert?

Hallo zusammen,

für die Filter der CMSIS-lib möchte ich mir gerne Parameter berechnen, 
konkret für den IIR q31 in Direktform 1
http://www.keil.com/pack/doc/CMSIS/DSP/html/group___biquad_cascade_d_f1.html

Leider liefert mein Programm (IowaHills IIR) die Parameter in Direktform 
2. Direkt übernehmen kann ich die errechneten Verstärkungsfaktoren 
sicherlich nicht, zumal die beiden Formen unterschiedlich viele für A 
und B haben.

Aber wie rechne ich die Faktoren um oder geht das gar nicht?

Viele Grüße, Danke
Bernhard
#3600785
Lesenswert?

Es ist meiner Kenntnis nach (und mit MATLAB kurz verifiziert) egal, ob 
ein IIR-Filter für Direktform I oder II ausgelegt wird, die 
Koeffizienten sind stets identisch, genauso die des daraus 
resultierenden SOS-Filters.

Letztendlich handelts es sich bei der DF II ja nur um eine alternative 
Struktur, um Verzögerungsglieder zu sparen. Das Verhalten bleibt gleich.
OP (Firma: dl1bg) #3602046
Lesenswert?

Hallo Michael,
danke für die Hlife. Gestern habe ich mal einen Filter getestet, 
natürlich (wie immer wenn mehrere Unbekannte im Spiel sind) hat es nicht 
funktioniert.

Die Reihenfolge der Parameter bei der Initialisierung habe ich 
eingehalten:
b10, b11, b12, a11, a12, b20, b21, b22, a21, a22, ...

Leider kommt unabhängig vom Eingangssignal ein erstaunlich weißes 
Rauschen heraus...

Hast du auch einfach die A und B übernommen (A0 ist immer 1)?

Danke
Bernhard
OP (Firma: dl1bg) #3602757
Lesenswert?

Mallo Michael,

sorry, hatte den code nicht auf der Arbeit verfügbar. Das sind die 
Parameter für einen 350 Hz Hochpass bei 16 kHz Abtastrate.
Format wie oben beschrieben, ich schiebe sie um 4 digit nach rechts und 
konvertiere dann ins 1q31 Format; der "post shift" des Filters wird 
entsprechend gesetzt.

Viele Grüße
Bernhard

  0.769006743615837429,
  -1.532955291799885210,
  0.769006743615837429,
  -1.499286785090970580,
  0.571681993940589384,
  0.885119583087940476,
  -1.765332612573540460,
  0.885119583087940476,
  -1.746589602510248080,
  0.788982176239173327,
  0.946919106380585185,
  -1.890334841029155170,
  0.946919106380585185,
  -1.878729849877659670,
  0.905443203912665973,
  0.974530611957186932,
  -1.947483293736083530,
  0.974530611957186932,
  -1.938101919155153620,
  0.958442598495303777,
  0.989560471369030359,
  -1.978923338028869110,
  0.989560471369030359,
  -1.969980644238615630,
  0.988063636528314082

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren