Forum: Digitale Signalverarbeitung / DSP / Machine Learning IIR Direktform konvertieren


von Bernhard _. (Firma: dl1bg) (bernhard_)


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

von Michael A. (michiavelli)


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.

von Bernhard _. (Firma: dl1bg) (bernhard_)


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

von Martin (Gast)


Lesenswert?

Poste  mal die Parameter,
hab  gerade  keine Lust zu arbeiten.
Matlab lizenzen satt.

von Bernhard _. (Firma: dl1bg) (bernhard_)


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.