IIR-Filter, Biquads in welcher Reihenfolge auf Daten anwenden

OP #7325461
Lesenswert?

Hallo,

ich habe folgende Frage. Ich bin dabei, für ein Projekt in C# ein digitales Butterwoth-Filter zu implementiert. Ich hab die Berechnung für die Koeffizienten der Polynome, die bilineare Z-Transformation sowie die Anwendung der einzelnen Biquads auf die Daten implementiert.

Eins ist mir noch unklar. Ich habe gelesen, dass es Einfluss auf die Rundungseffekte hat, in welcher Reihenfolge man die einzelnen Biquads auf die Daten anwendet. Leider habe ich nichts dazu gefunden, wie man die günstigste Reihenfolge bestimmt. Weiß da jemand was, bzw. ist das auf einem PC überhaupt erforderlich. Ich arbeite nur mit Datentyp double.

Danke und Grüße, Alex

#7325484
Lesenswert?

Moin,

Alexander H. schrieb:

Ich arbeite nur mit Datentyp double.

Dann wirst du wohl auch eher keine Rundungsprobleme haben. Sprich: Wird eh wurscht sein. Wenn doch: Stimmt irgendwas grob nicht.

Allgemein wuerd' ich so ausm Bauch raus sagen: Zuerst das Signal in die (Teil)Filter, wo die Pole am gutmuetigsten sind (also am weitesten weg vom Einheitskreis, bzw. moeglichst nahe an (0,0) in der z-Ebene. Ist aber nur mein Bauchgefuehl.

Gruss WK

Gast #7325626
Lesenswert?

Biquads sind immer nur zweiter Ordnung, was für Rundungsprobleme schonmal sehr gut ist. Ich hatte mal Probleme mit single floating point Filtern sehr nahe am Einheitskreis, aber das scheint ja hier auch kein Problem zu sein. Ich würde mir bei double + biquad keinerlei Gedanken machen ehrlich gesagt.

Gast #7427597
Lesenswert?

Alf schrieb:

as kann nur damit zu tun haben, wie groß die Werte bei der jeweiligen Rechnung werden und wie danach gerundet oder abgeschnitten wird.

Sehe ich ebenso. Wenn man an allen Stellen Klarheit schafft, dass die Rundung keine relevanten Fehler erzeugt, ist die Reihenfolge egal. Es kann natürlich sein, dass ein Zwischenergebnis eine grundsätzlich höhere Dynamik hat, die man dann mitschleppen müsste / dürfte, was es einfacher machen könnte, A vor B statt B vor A zu prozessieren, um etwas Rechenzeit und Auflösungsbedarf / Wortbreite zu sparen.

Gast #7532824
Lesenswert?

Ich habe gelesen, dass es Einfluss auf die Rundungseffekte hat, in welcher Reihenfolge man die einzelnen Biquads auf die Daten anwendet. Leider habe ich nichts dazu gefunden, wie man die günstigste Reihenfolge bestimmt.

Aehm, wenn man nichts findet dann denkt man mal selber drüber, vielleicht ist ja die Lösung so trivial, das man über das Thema kein "Tutorial for dummys" verfasst?! Oder man experimentiert einfach mal mit verschiedenen Varianten und vergleicht deren Ergebnisse.

Eine Grundregel in der Numerik zur Vermeidung des Verlustes von signifikanten Stellen ist es , möglichst (Fliesskommazahlen) Zahlen gleicher Größe zu addieren, also sortiert man bspw. für eine Akkumulation die Zahlen nach Größe und addiert sie paarweise. Dieses Verfahren kannst du natürlich auch für Reihenfolge der Biquads anwenden, nicht klein (0,0000001) mit groß (9999,0) addieren.

Und falls du unbedingt ne Fundstelle brauchst wegen dem Zusammenhang Reihenfolge Genauigkeit, dann schau mal dort und in die "thematische Umgebung" :

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