Forum: Digitale Signalverarbeitung / DSP / Machine Learning Software für IIR Coefficienten


von Alon (Gast)


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

: Verschoben durch Admin
von Kai Klaas (Gast)


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

von Alon (Gast)


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.

von Kai Klaas (Gast)


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

von Alon (Gast)


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?

von Silvio K. (exh)


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

von Daniel R. (daniel_r)


Lesenswert?

>Kennt jemand eine gute Software, um diese IIR Coefficienten zu
>kalkulieren?

MATLAB

von Karl (Gast)


Lesenswert?

in kostenlos: Octave, wobei es von der Einfachheit der Bedienung her 
nicht an die das MATLAB FDA-Tool herankommt. Damit ist es wirklich 
trivial ein einfaches Filter zu berechnen.

von Alon (Gast)


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?

von Silvio K. (exh)


Lesenswert?

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

Scilab ist praktisch Matlab, nur kostenfrei und Opensource. Man kann 
sogar gucken, wie die Koeffizienten berechnet werden.

von Alon (Gast)


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.

von Alon (Gast)


Lesenswert?

Ist meine Vermutung zu dumm?
Mache ich einen Denkfehler?

von Silvio K. (exh)


Lesenswert?

Lad doch mal ne Filterkurve hoch, dann weiß ich auch worum es geht.

Alon schrieb:
> am besten funktioniert, wenn die gewünschte Frequenz
> ca. viertel der Samplefrequenz ist?

Wie definierst du "am besten funktioniert" ?

von eProfi (Gast)


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.

von Raimund R. (corvuscorax)


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.

von max (Gast)


Lesenswert?

Um einen belieigen Frequenzgang mit einem FIR Filter zu realisieren 
verwendet man die IFFT.

Für einen TP genügt auch sin(x)/x mit einem Fenster.

von Daniel K. (crazyman)


Lesenswert?

nur so mal nebenbei IIR Filter haben einen absolut krummen Phasengang! 
Die FIR Filter können einen linearen Phasengang haben wenn man die 
Koeffizienten symmetrisch auslegt.

von Karl (Gast)


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.

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.