Forum: Digitale Signalverarbeitung / DSP / Machine Learning IIR-Filter, Biquads in welcher Reihenfolge auf Daten anwenden


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Alexander H. (ill_son)


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

von Dergute W. (derguteweka)


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

von jojo (Gast)


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.

von Alf (Gast)


Lesenswert?

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.

von -gb- (Gast)


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.

von Perceptive L. (perceptive_l)


Lesenswert?

Ausführlichere Informationen zu Filtern finden Sie vielleicht unter: 
https://www.perceptive-ic.com/products/id/80

von Klaus K. (Gast)


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" :
* 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
Noch kein Account? Hier anmelden.