IIR Direktform konvertieren

OP (Firma: dl1bg) #3600461
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
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
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
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

Eine eigene Frage? Dieser Thread ist über 12 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.