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
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
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.
Alexander H. schrieb: > dass es Einfluss auf die > Rundungseffekte hat, in welcher Reihenfolge man die einzelnen Biquads > auf die Daten anwendet. Das kann nur damit zu tun haben, wie groß die Werte bei der jeweiligen Rechnung werden und wie danach gerundet oder abgeschnitten wird.
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.
Ausführlichere Informationen zu Filtern finden Sie vielleicht unter: https://www.perceptive-ic.com/products/id/80
> 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" : * https://de.wikipedia.org/wiki/Ausl%C3%B6schung_(numerische_Mathematik) * https://de.wikipedia.org/wiki/Normalisierung_(Informatik)#Gleitkommaarithmetik
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.