Forum: Digitale Signalverarbeitung / DSP / Machine Learning kaskadierte Mittelwertfilter (MAV)


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 Alex (haidanai)


Lesenswert?

Ich möchte hier meine Erfahrungen zu hintereinander geschalteten 
Moving-Average-Filtern (MAV) darlegen. Vieleicht hilft es ja anderen.
- Problem: Tiefpass mit Mikrocontroller, der möglichst schnell berechnet 
werden kann, also hohe Samplingraten ermöglicht.
-> Ein einzelner MAV hat eine geringe Sperr-Dämpfung.
Wenn man jedoch mehrere MAVs so hintereinander schaltet, dass deren 
Nullstellen möglichst gleich verteilt zwischeneinander liegen,
bekommt man ein recht gutes Tiefpassverhalten bei sehr kleiner 
Rechenzeit.
Die Nullstellen liegen bei Omega= 1/N, 2/N, ... (N ist Mittelwertanzahl)
Beispiel für dreistufigen MAV (N1= 19, N2= 15, N3= 12):
-3dB-Grenzfrequenz ist 1/60 Samplingfrequenz
Dann hat die erste Sidelobe -46dB, die folgenden bleiben unter -51dB.
Und ab F= 7,7 * Grenzfrequenz bleibt er unter -60dB - bis zur 
Nyquistfrequenz.
Auf 120MHz-SAM4S braucht der Filter 0,5µs zum berechnen.
Allgemein 3-er-Kaskade: N1 gegeben; dann N2 = N1 / 1,22; N3 = N1 / 1,58
Die Werte sind natürlich zu runden.
Für mehr als 3 MAVs ändern sich die N1/Nx-Verhältnisse entsprechend und 
die Sperrdämpfung wird noch besser.
Nachteile der MAVs sind
- die größere Verzögerungszeit gegenüber richtigen FIRs
- der frühere Abfall im Durchlassbereich gegenüber richtigen FIRs,
dafür kein Überschwingen in Sprungantwort

von Berni-Bär 🐼 (stm32prof)


Lesenswert?

Sollte das eine Abhandlung werden? Ist ein wenig oberflächlich.

Hast du das nun selber rausbekommen und warst überrascht, weil du uns 
das mtteilen möchtest? Du hast überwiegend bekannte Fakten zitiert. 
Kaskadierte Mittelwertfilter sind so alt, dass sie schon Staub angesetzt 
haben und aufgrund der heute verfügbaren Rechenleistung / Cent praktisch 
keine Rolle mehr spielen.

Alex schrieb:
> Allgemein 3-er-Kaskade:
Nennen wir im Allgemeinen CIC.

Alex schrieb:
> die größere Verzögerungszeit gegenüber richtigen FIRs
Das solltest du mal näher ausführen, wann CIC wirklich mehr verzögern. 
Letztenendes kommt es auf die Zeit an, die nach dem letzten 
berücksichtigten Datum vergeht und da der CIC recheneffektiver ist, kann 
das nur weniger sein!

Alex schrieb:
> dafür kein Überschwingen in Sprungantwort
Ein FIR-Filter, dessen Koeffizienten so eingestellt sind, dass der 
Frequenz gang dem entspricht, was auch der CIC bringt, gibt es kein 
Überschwingen.

Wo hast du das denn her?

von Dergute W. (derguteweka)


Lesenswert?

Moin,

N paar Bilder mit Frequenzgaengen (und beschrifteten Achsen) wuerden mir 
gefallen.

Gruss
WK

von Alex (haidanai)



Lesenswert?

@Dergute W.
OK, gerne. Ich habe die Diagramme für 60kSPS beschriftet
PS: Die Signalverzögerung bis 0% bis 50% beträgt (N1+N2+N3)/2

von 🐻 Bernie - Bär (stm32prof)


Lesenswert?

Was ist denn jetzt hier die genaue Aussage? Gibt es da etwas Neues zu 
berichten?

Auf den ersten Blick sieht man, warum diese Filter nicht viel taugen:

1) Schon bei 1kHz ist -3dB erreicht. Ende des nutzbaren Filterbereiches. 
Mit Schärfung, die du dir ansehen könntest, kann man es Faktor 2 heben.

2) Noch bei dem 10-fachen der Nutzfrequenz rumpeln ganzzahlig passende 
Frequenzen durch den Filter hindurch.

von Alex (haidanai)


Lesenswert?

@Bär:
Du scheinst wenig Ahnung von Digitalfiltern zu haben ;-)
- Dieser Filter (Tiefpass!!!) wurde extra auf 1kHz Grenzfrequenz 
ausgelegt
- Wie jeder(!) Digitalfilter ist der Frequenzgang symmetrisch zur
  Nyquistfrequenz, in meinem Fall also bei 30kHz
- Mit den hier vorgeschlagenen MAV-Längen ist der Frequenzgang optimiert
  bei geringer Gruppenlaufzeit

Aber ich habe nichts anderes erwartet, dass hier nur rumgemäkelt wird.
Und tschüss...

von Berni-Bär 🐼 (stm32prof)


Lesenswert?

Alex schrieb:
> Du scheinst wenig Ahnung von Digitalfiltern zu haben ;-)
Deine voreilige Schlussfolgerung.

Für deinen 1k-Fall mag das noch ganz gut gehen, weil die Abtastfrequenz 
sehr weit oberhalb liegt, konkret bei Faktor 30. Jetzt denke dir einen 
Fall mit 10kHz. Dann lässt dein Filter soviel Oberwellen und Alias 
durch, dass er nicht mehr zu gebrauchen ist.

Das sind Fakten, die seit langem bekannt sind und auch du nicht ändern 
kannst. So ein MAF bearbeitet schon Frequenzen oberhalb 10% Nyquist 
nicht mehr richtig! Mit einem ordentlichen FIR und gewichteten 
Koeffizienten lassen sich dagegen Bänder bis hin zu 80% der 
Nyquistfrequenz nutzen.

P.S. Du solltest eventuell auch noch einmal erklären, wie du auf die 
Abkürzung "MAV" für deine "neuen" Filter kommst. Die heißen im englisch 
z.B. SMA etc...

: Bearbeitet durch User
von L. (rezyy)


Lesenswert?

Ich verstehe diesen Post nicht ganz. Das sind einfache Mittelwertfilter, 
die sind allseits bekannt.

Alex schrieb:
> Wenn man jedoch mehrere MAVs so hintereinander schaltet, dass deren
> Nullstellen möglichst gleich verteilt zwischeneinander liegen,
> bekommt man ein recht gutes Tiefpassverhalten bei sehr kleiner
> Rechenzeit.

Wenn du die Nullen wirklich ideal gleichverteilt haben möchtest, baust 
du dir einen SMA-Filter mit Länge N1+N2+N3-2. Dann hast du aber 
natürlich wieder einen simplen SMA-Filter, der einfach nur länger ist..

> Die Nullstellen liegen bei Omega= 1/N, 2/N, ... (N ist Mittelwertanzahl)
> Beispiel für dreistufigen MAV (N1= 19, N2= 15, N3= 12):
> -3dB-Grenzfrequenz ist 1/60 Samplingfrequenz
> Dann hat die erste Sidelobe -46dB, die folgenden bleiben unter -51dB.
> Und ab F= 7,7 * Grenzfrequenz bleibt er unter -60dB - bis zur
> Nyquistfrequenz.
> Auf 120MHz-SAM4S braucht der Filter 0,5µs zum berechnen.
> Allgemein 3-er-Kaskade: N1 gegeben; dann N2 = N1 / 1,22; N3 = N1 / 1,58
> Die Werte sind natürlich zu runden.

Da du effektiv die unterschiedlichen SMA-Filter miteinander faltest, 
bekommst du allmählich etwas Gauß-ähnliches heraus. Die Impulsantwort 
sieht also zumindest Gauß-änhlich aus.. Entsprechend gestaltet sich der 
Frequenzgang abhängig der gewählten SMA-Längen.

> Nachteile der MAVs sind
> - die größere Verzögerungszeit gegenüber richtigen FIRs
> - der frühere Abfall im Durchlassbereich gegenüber richtigen FIRs,

Auch das hier sind "richtige" FIRs.. Es ist nur ein spezielles Design 
mit Vor- / Nachteilen.

> - Mit den hier vorgeschlagenen MAV-Längen ist der Frequenzgang optimiert
>   bei geringer Gruppenlaufzeit

Entsprechend gilt auch das hier nicht wirklich. Worauf hast du denn 
"optimiert"? Kann man so pauschal nicht sagen.

Alex schrieb:
> - Wie jeder(!) Digitalfilter ist der Frequenzgang symmetrisch zur
>   Nyquistfrequenz, in meinem Fall also bei 30kHz

Diese Symmetrie gilt nur für reell-wertige digitale Filter. Das ist 
nicht allgemein gültig.

von J. S. (engineer) Benutzerseite


Lesenswert?

L. schrieb:
> Mittelwertfilter, > die sind allseits bekannt.
... und hinreichend diskutiert :-)

> einen SMA-Filter mit Länge N1+N2+N3-2. Dann hast du aber
> natürlich wieder einen simplen SMA-Filter, der einfach nur länger ist..
... der aber andere Eigenschaften hat, als eine klassische Kaskade

Zu den gewählten Werten: Man kann für kaskadierte / parallelisierte 
Filter auch Primzahlen verwenden.

und ja, man kann sie auch schärfen.

Der Punkt ist nur: Je mehr man sich von ganzahligen, identischen und 
bestenfalls noch binären Werten entfernt, desto geringer ist der Vorteil 
der einfachen und effektiven Berechnung der Filterwerte.

Der reine Hogenauer-Filter ist nach wie vor im Einsatz, aber eben für 
den erwähnten Zweck bei hohen Überabtastverhältnisse zur Dezimation, 
z.B. bei Delta-Sigma-Wandlern.

von Berni-Bär 🐼 (stm32prof)


Lesenswert?

L. schrieb:
> Das sind einfache Mittelwertfilter,
> die sind allseits bekannt.
Beitrag "Eigenschaften des Moving Avarage Filters"

von Andi F. (chefdesigner)


Lesenswert?

Dergute W. schrieb:
> N paar Bilder mit Frequenzgaengen

Der Frequenzgang eines Filters ist doch bekannt und berechenbar. 
Eigentlich müssten sich dann andere Filter durch Multiplikation direkt 
überlagern lassen.

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.