Software für IIR Coefficienten

Gast #1548861
Lesenswert?

Hallo Zusammen,
Ich möchte bestimmte Audiofrequenzen mit einem DSP betonen, dabei wäre 
eine lineare Phasenverschiebung im Durchlassbereich sehr wünschenswert.
Die einzige Möglichkeit, die ich kenne ist ein IIR-Resonanzfilter, gibt 
es andere Möglichkeiten?
Kennt jemand eine gute Software, um diese IIR Coefficienten zu 
kalkulieren?
Die Software sollte mindestens die Phasenverschiebung, im Durchlass und 
im Sperrbereich, grafisch anzeigen.
Danke
Gast #1548904
Lesenswert?

>Ich möchte bestimmte Audiofrequenzen mit einem DSP betonen, dabei wäre
>eine lineare Phasenverschiebung im Durchlassbereich sehr wünschenswert.

Warum unbedingt eine lineare Phasenverschiebung? Wenn du den 
Frequenzgang verbiegst, wird sich das viel störender anhören, als ein 
krummer Phasengang. Überdies, Phasenverschiebungen bleiben absolut 
unhörbar, voraussgesetzt sie sind für linkes und rechtes Ohr genügend 
gleich. Das ist auch gut so, denn sonst könnte man keine gut klingenden 
Lautsprecher bauen.

Kai Klaas
Gast #1548962
Lesenswert?

Am wichtigsten ist für mich eine gute Software, die Koeffizienten für 
stabile Filter kalkuliert und die verursachte Phasenverschiebung 
irgendwie anzeigt.

Ich möchte unbedingt erfahren, wie die Phasenverschiebung aussieht und 
nicht nur die Koeffizienten berechnen.

Das einzige was ich bisher gefunden habe, war eine kostenlose Software 
vom TI
http://focus.ti.com/docs/toolsw/folders/print/coefficient-calc.html
Diese Software hat aber offensichtlich Fehler. Die Filter verhalten sich 
nicht immer planmäßig.
Gast #1548988
Lesenswert?

>Am wichtigsten ist für mich eine gute Software, die Koeffizienten für
>stabile Filter kalkuliert und die verursachte Phasenverschiebung
>irgendwie anzeigt.

Aber du weißt, daß IIR-Filter im Gegensatz zu FIR-Filtern intrinsisch 
instabil sind? Da genügen oft schon kleine Rundungsfehler, um das Ding 
zum Schwingen zu bringen.

Kai Klaas
Gast #1549141
Lesenswert?

Kai Klaas schrieb:
> Aber du weißt, daß IIR-Filter im Gegensatz zu FIR-Filtern intrinsisch
> instabil sind? Da genügen oft schon kleine Rundungsfehler, um das Ding
> zum Schwingen zu bringen.

Es liegt aber nicht an Rundungsfehlern.
Diese Software funktioniert gut, wenn die gewünschte Frequenz ca. ¼ der 
Samplefrequenz ist, sonst kaum. Diese Software hat offensichtlich ein 
Fehler.

Gibt es keine andere Software?
#1549236
Lesenswert?

Ich habe zufällig diese Woche ein IIR-Filter in C geschrieben und ich 
habe die gleiche Frage gehabt. Die Antwort lautet:
Scilab

z.B.

-->filterkoef=iir(4,'lp','butt',[0.025 0], [0 0])
 filterkoef  =

                                       2            3
    0.0000312 + 0.0001250z + 0.0001874z + 0.0001250z
                   4
       + 0.0000312z
    ---------------------------------------------------
                                       2            3
    0.6630105 - 2.9240527z + 4.8512759z - 3.5897339z
          4
       + z

-->

Zum Plotten gibt es ein mitgeliefertes Beispiel
Gast #1549513
Lesenswert?

Ich habe kein MATLAB, aber vielleicht gelingt es mir eine ältere Version 
(7.0) zu installieren.

Kann ich dann das FDA-Tool herunterladen und damit verwenden?
Kann ich dann damit definitiv auch IIR-"Resonanzfilter" berechnen?
Gast #1552576
Lesenswert?

Wie ich bereits einmal geschrieben habe, funktioniert die Software vom 
TI sehr gut, wenn die gewünschte Frequenz ca. viertel der Samplefrequenz 
ist.

Alon schrieb:
> Diese Software funktioniert gut, wenn die gewünschte Frequenz ca. ¼ der
> Samplefrequenz ist, sonst kaum. Diese Software hat offensichtlich ein
> Fehler.

Kann es eigentlich sein, dass ein IIR-Resonanzfilter sowieso (unabhängig 
von der Software) am besten funktioniert, wenn die gewünschte Frequenz 
ca. viertel der Samplefrequenz ist?

y[n] = b0*x[n] + b1*x[n-1] + b2*x[n-2] - a1*y[n-1] - a2*y[n-2]

Die Koeffizienten b1 und a1 sind dann Null und die Rückkupplung aus dem 
Ausgang (durch a2) erfolgt nach genau einer halben Periode.

y[n] = 1*x[n] + 0 + b2*x[n-2] - 0 - a2*y[n-2]

Der Abstand zwischen [n] und [n-2] ist genau eine halbe Periode.
Gast #1557720
Lesenswert?

Schau mal bei www.digitalfilter.com vorbei.
Toshio Iwata hat hier (früher) einige Java-Programme veröffentlicht.
Kann evtl. sein, dass er jetzt Geld dafür verlangt.

oder suche "IIR design software"  oder "IIR coefficient calculation"
oder "digital filter design formula"

Wichtig ist das Vorzeichen, wenn der Filter komisch reagiert, diese 
genau prüfen und ggf. umdrehen.
#1560531
Lesenswert?

Auch bei uns in der Firma setzen wir DSPs ein. Zwar nicht zu den 
üblichen Audio-Anwendungen, aber die Theorie ist im Prinzip identisch.
Viele Kunden kommen auch mit dem Wunsch IIR-Filter einsetzen zu wollen. 
Eigentlich kein Problem, aber bei Filtern höherer Ordnung hat auch ein 
DSP mit Single-Floats (32-Bit(!)) schon so seine Stabilitätsprobleme. 
Und die Ursache sind tatsächlich Rundungsfehler.
Eine einfache Möglichkeit die Stabilität des Filters marginal zu 
überprüfen ist den größten Koeffizienten durch den kleinsten 
Koeffizienten zu teilen. Kommt dann dort ein Zahl heraus, die die zur 
Verfügung stehende Mantisse des vorhandenen Float-Formats 'sprengt', 
wird das Filter instabil.
Ein konretes Beispiel habe ich jetzt nicht ad hoc zur Hand, aber häufig 
(halt abhängig vom Verhältnis fs zu fc) ist der größte Koeffizient z.B. 
im einstelligen Bereich (also 1,.. oder 2,...) und der kleinste 
Koeffizient im Milli- oder Mikrobereich (also evtl. 0,001.. bis 
0,000001...). Damit unterscheiden sich die Koeffizienten folglich um 
einen Faktor von bis zu 10^6 oder gar mehr. Ein 32-Bit-(Single-)Float 
hat eine binäre Mantisse von 23-Bit, was dezimal etwa einem 
Mantissenumfang von 10 Mio. entspräche.
IIR-Filter sind nun nichts anderes als Multiply-and-Accumulate-Aktionen. 
Zu einem Wert von 1,... einen Wert von 0,000001 zu addieren, würde 
bedeuteten, daß die kleine Zahl, die ursprünglich noch eine Mantisse von 
23-Bit hatte, bur noch mit 2 bis 3 relevanten Mantissen-Bits zu den 
1,... hinzuaddiert würden. Ein immenser Rundungsfehler entsteht.
Nun ist es so, das die IIR-Filterkoeffizienten bei 1/4 der 
Samplingfrequenz den kleinsten Abstand voneinander haben. Je näher man 
an fc=0 bzw. fc=fs/2 kommt, umso weiter entfernen sich die Koeffizienten 
voneinander und das Filter wird immer instabiler je höher die Ordnung 
wird.
Gast #1563314
Lesenswert?

Das Problem mit Instabilität auf Grund der hohen Rundungsenergie 
(Rundungsfehler kann man auch als Störgrößen betrachten) lässt sich mit 
Wellendigitalfiltern einigermaßen in den Griff bekommen.

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