mikrocontroller.net

Forum: Digitale Signalverarbeitung / DSP adaptiv IIR Filter Koeffizienten ändern, wie?


Autor: Adib (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute,

ich möchte gerne IIR Koeffizienten zur Laufzeit anpassen.
Sprich Filter Grenzfrequenz ändern.

Ich habe Bedenken, dass wenn ich die Koeffizienten direkt tausche es 
evtl. Sprünge im Ausgangssignal gibt oder Instabilitäten.

Habt Ihr da eventuell Hinweise, wie man solche Funktionalität 
implementiert?
Oder weiterführende Links?

Danke und Grüße,

Adib.
--

Autor: Tobias Plüss (hubertus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hoi,

das würde ich bei einem IIR nicht machen, denn der Grund ist: du 
müsstest vor jeder Änderung der Koeffizienten erst prüfen, ob das 
Resultierende Filtee stabil sein wird. Was machst du, wenn es nicht 
stabil ist?

Daher nimmt man für adaptive Filter FIR-Filter, weil diese immer stabil 
sind und du die Koeffizienten modifizieren kannst, ohne dabei in Teufels 
Küche zu kommen.

Autor: Adib (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Tobias,

Ich hatte mir gedacht zumindest aus einem Satz vordefinierter 
Koeffizienten zu wählen.

Ich weiss aber nicht, inwiefern die Speicherelemente eine Rolle spielen. 
Ich würde ungern das Filter komplett "resetten".

Danke, Adib.
--

Autor: Manfred M. (bittbeisser)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich bin nur ein Bastler und kein Profi. Daher habe ich das was Du vor 
hast schon mal in meinem Morsedecoder Experiment ausprobiert.

 > Ich weiss aber nicht, inwiefern die Speicherelemente eine Rolle
 > spielen. Ich würde ungern das Filter komplett "resetten".
Aber genau das musst Du machen! Ich hatte das ausprobiert mit mehreren 
vordefinierten Parameter Sets. Bei der Umschaltung gab es immer sehr 
hohe Peaks, die meine Ergebnisse störten.

Beim "resetten" gibt es zwar Unterbrechungen, aber bei meiner Anwendung 
stören die weniger oder fallen gar nicht auf. Bei einem 4-poligen 
IIR-Tiefpass ist die Unterbrechung ja nicht allzu groß.

Eine Alternative wäre natürlich mehrere Filter parallel laufen zu lassen 
und dann nur die Ausgänge umzuschalten. Aber ich denke dann könnte man 
auch schon fast über FIR Alternativen nachdenken.

Was ich nicht weiter zuende gedacht habe, ist die Möglichkeit, eine 
bestimmte Anzahl von Werten in einem (Ring-) Speicher aufzubewahren, um 
dann das neue Filter damit zu initialisieren. Das ist zwar auch nicht 
exakt, aber ein möglicher Kompromiss.

: Bearbeitet durch User
Autor: Tobias Plüss (hubertus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und was soll denn der Vorteil des IIR sein?
Klar, man bräuchte weniger Taps, aber sämtliche Algorithmen für die 
Adaption der Filterkoeffizienten werden grausig kompliziert, sofern es 
überhaupt möglich ist. Hinzu kommt das oben erwähnte 'reseten' des 
Filters.

Ich würde wirklich dazu raten, ein adaptives FIR-Filter mal anzuschauen. 
Reset entfällt, und mit dem NLMS-Algorithmus kann man eine schnelle und 
gute Adaption erreichen. Der Adaptionsalgorithmus ist ein Zweizeiler, 
wenn ich mich recht erinnere, also wirklich einfach ;-)

Autor: Manfred M. (bittbeisser)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Und was soll denn der Vorteil des IIR sein?
z.B. niedrige Latenz und geringe CPU-Last.

Autor: Christoph Kessler (db1uq) (christoph_kessler)
Datum:
Angehängte Dateien:

Bewertung
1 lesenswert
nicht lesenswert
Im DSP-Buch von Grüningen gibt es ein Kapitel über abstimmbare 
Digitalfilter
ISBN 9783905681420 ab Seite 61
Da wird teilweise mit einen einzigen Parameter abgestimmt
Das Buch wird alle paar Jahre bei einem anderen Verlag wieder neu 
herausgebracht, mit vielen Änderungen. Das Kapitel kenne ich nur aus der 
Auflage.
Beitrag "Re: Chorus Effekt"
im DAFX-Buch könnte auch was zum Thema stehen

: Bearbeitet durch User
Autor: Dergute Weka (derguteweka)
Datum:
Angehängte Dateien:

Bewertung
1 lesenswert
nicht lesenswert
Moin,

Ich glaub', es ist garnicht so schlimm, wenn man bei der Variation der 
Filterkoeffizienzen keinen zu grossen Humbug treibt.
Hoert sich zumindest in dem Dingens so an, wie ich mir's vorgestellt 
hab. Das ist ein Cauer 2.Ordnung mit 10dB Ripple, 40dB Sperrdaempfung, 
dessen Grenzfrequenz  linear variiert wird, waehrend es mit einem 
Rechteckpuls angeregt wird.
In dem Beispiel wird die Grenzfrequenz ueber einen Parameter zwischen 
0..1 eingestellt.
Hier wird das Filter tatsaechlich instabil, wenn ich damit nah' bei 0 
oder 1 bin. Das kommt aber daher, weil ich die Filterkoeffizienten nur 
durch Polynome 2. Ordnung approximiere; die liegen dann bei 0 und 1 am 
tuechtigsten "neben" den echten Werten - da ist die Instabilitaet dann 
auch kein Wunder.

Gruss
WK

Autor: Wolfgang (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Adib schrieb:
> Habt Ihr da eventuell Hinweise, wie man solche Funktionalität
> implementiert?

Nimm ein MF10. Dann brauchst du nur die Taktfrequenz zu ändern.
http://www.ti.com/lit/an/snoa572c/snoa572c.pdf

Autor: Thomas U. (thomasu)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tobias P. schrieb:
> Und was soll denn der Vorteil des IIR sein?
> Klar, man bräuchte weniger Taps, aber sämtliche Algorithmen für die
> Adaption der Filterkoeffizienten werden grausig kompliziert, sofern es
> überhaupt möglich ist.
Das muss natürlich vorher und in engen Grenzen geschehen.

> Hinzu kommt das oben erwähnte 'reseten' des
> Filters.
Das sollte kein Problem sein. Man könnte 2 Filter nehmen und 
alternierend verwenden.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.