Beide glätten das Signal, Variante zwei jedoch stärker. Wo liegt jetzt
der Unschied zwischen den Beiden bzw. wie lassen sich hier die
Grenzfrequenz berechenen. Beim Ersten glaube ich so: fg = 1/(Ta **
NR_OF_MIDDLE ** 2 * PI). Stimmt das?
Ich glaube Variante 1 Funktioniert nicht zuverlässig, da von der Summe
immer der älteste Wert wieder abgezogen wird und durch einen neuen
ersetzt wird. War der älteste Wert Null wird das Ergebnis falsch, da die
Summe nicht kleiner wird. Kann es sein das es ein Hochpass ist?
Max M. schrieb:> Das haben Mittelwerte so an sich das sie auch mal gösser werden!
Stimmt, die 0 war je bereits Teil des Mittelwertes, das hatte ich
übersehen...
Ich denke der wesentliche Unterschied ist, das Variante 1 nach n Werten
vergessen hat, was vorher los war, da ja immer wieder der älteste Wert
gegen den neuesten ausgetauscht wird. Variante zwei vergisst nichts, da
immer Summe/n aus der Summe gezogen wird. Das erklärt auch, warum das
Filter träger ist.
Allerdings habe ich immernoch keine Ahnung wie man daraus nun die
Eckfrequenz errechnet.
Ingo L. schrieb:> Beide glätten das Signal, Variante zwei jedoch stärker.
Du meinst wohl eher, sie reagiert deutlich träger.
Das ist kein Wunder, da vergangene Werte nur sehr langsam abgeschwächt
werden. Sie entspricht daher nur einem einfachen RC-Tiefpaß.
Besser ist dagegen Variante 1, da sie eine echten Integrator bildet,
d.h. veraltete Werte werden sofort vergessen. Allerdings ist der
RAM-Verbrauch höher.
Wenn's nur ums Glaetten geht, nimm den exponenellen Mittelwert.
Als : http://www.ibrtses.com/embedded/exponential.html
Der benoetigt nur einen Speicherwert, und nur eine Addition und einmal
schieben.
Also ich würde mir ja nen symmetrischen FIR in Octave erstellen lassen,
mit Vorgabe von Grenzfrequenz und erwünschter Dämpfung.
Erst coden und dann überlegen "was macht mein Code eigentlich" ist nicht
so irre zielführend.
Variante 2 wird meist auch einfacher implementiert, wenn man mit float
oder fixed.Zahlen arbeitet:
out = alt + (neu-alt)/x. Das ist äquivalent zu
out = (neu + alt*(x-1))/x
und äuqivalent zu der exponentiellen Mittelung die hier empfohlen wurde,
wenn x=2^n ist
x ist das Maß, wie weit geglättet werden soll.
Peter D. schrieb:> Sie entspricht daher nur einem einfachen RC-Tiefpaß.
Genau. Mit dessen Tau=Abtastrate*x
Grenzfrequenzen etc. sind analog zu RC-Filtern.
> Besser ist dagegen Variante 1, da sie eine echten Integrator bildet,> d.h. veraltete Werte werden sofort vergessen.
Desshalt heissen diese Filter auch FIR-Filter (Finite Impuls Response)
im Gegensatz zum RC oben als IIR (Infinite ...)
Ingo L. schrieb:> Habe mich jetzt auch für die Variante1 (FIR) entschlossen. Wie errechnet> sich hier die Eckfrequenz?
Bei der Version must Du genau wissen, was Du tust. Ist zwar auch ein
Tiefpasse, aber anders als bei der RC-Variante kommt nach der maximalen
Dämpfung (bei T = Abtastrate * N) das Signal wieder durch, jedoch
Phasenverschoben. Beispiel: Stell Dir vor, Du tastest mit 1ms ab und
mittelst über 50 Takte:
100Hz-Wechselspannung wird perfekt zu 0 gemittelt, da immer genau eine
ganze Vollwelle integriert wird.
50Hz-Wechselspannung kommen jedoch mit 180° Phasenverschiebung wieder
durch, da immer genau der Mittelwert der letzten Halben Phase anliegt.
Hättest Du ein 50Hz Rechteck, käme ein 50Hz Sägezahn mit voller
amplitude raus.
Zudem kommt hinzu, dass die Bezeichnung (gleitender Mittelwert) oftmals
auch für die exponentielle Glättung verwendet wird.
Ganz unabhängig davon musst Du bei jedem Digitalfilter noch dafür
sorgen, dass die Eingangswerte schon physikalisch begrenzt sind. Du
kannst mit einem Digigalfilter z.B. keinen ADC filtern, dessen Eingang
SignaleAnteile über der Samplerate hat.
Nr1: gleitender Mittelwert, Vorstellung ein Fenster wird über das Signal
geschoben und von den Werten innerhalb des Fensters der Mittelwert
gebildet. Interessant ist hier der Frequenzgang. Er hat nämlich
Nullstellen. Macht man den Filter genau 20ms lang, kann man eine 50Hz
Störung vollständig weg filtern.
Nr2: IIR-Tiefpass erster Ordnung. Die Sprungantwort entspricht der eines
RC-Filters. Man kann damit das Verhalten eines RC-Tiefpass nachbilden.
Das ist kein gleitender Mittelwert. Der Begriff "Exponentialfilter" mag
an das aussehen der Sprungantwort angelehnt sein, gebräuchlich ist der
Begriff in der Signalverarbeitung nicht.
Achim S. schrieb:> Ingo L. schrieb:>> Habe mich jetzt auch für die Variante1 (FIR) entschlossen. Wie errechnet>> sich hier die Eckfrequenz?>> Bei der Version must Du genau wissen, was Du tust. Ist zwar auch ein> Tiefpasse, aber anders als bei der RC-Variante kommt nach der maximalen> Dämpfung (bei T = Abtastrate * N) das Signal wieder durch, jedoch> Phasenverschoben.
Durch das Sampling wiederholt sich das Spektrum periodisch, ja. Aber das
ist eh eine Verletzung des Shannon Nyquist Abtasttheorems. Ein
Anti-Aliasing Filter wird immer vorrausgesetzt bei solchen Fragen.
THOR schrieb:> Durch das Sampling wiederholt sich das Spektrum periodisch, ja. Aber das> ist eh eine Verletzung des Shannon Nyquist Abtasttheorems. Ein> Anti-Aliasing Filter wird immer vorrausgesetzt bei solchen Fragen.
Nyquist und Anti-Aliasing beziehen sich normalerweise auf die Abtastung,
nicht auf die Sampleanzahl des FIR-Filters. Also dass bei einer
Abtastrate von 1ms keine Frequenzen über 500Hz liegen. Das habe ich am
Ende auch angemerkt. Ein IIR-Filter glättet dann in jedem Fall stetig,
das FIR-Filter halt nicht.
Achim S. schrieb:> Ganz unabhängig davon musst Du bei jedem Digitalfilter noch dafür> sorgen, dass die Eingangswerte schon physikalisch begrenzt sind. Du> kannst mit einem Digigalfilter z.B. keinen ADC filtern, dessen Eingang> SignaleAnteile über der Samplerate hat.
Markus schrieb:> Der Begriff "Exponentialfilter" mag> an das aussehen der Sprungantwort angelehnt sein, gebräuchlich ist der> Begriff in der Signalverarbeitung nicht.
Es ist die digitale Form des PT1-Gliedes, nur halt mit P = 1;
Ingo L. schrieb:> Beide glätten das Signal, Variante zwei jedoch stärker.
Dann hast du irgendwo nen Fehler gemacht.
Im Grunde ist es egal, ob man einen gleitenden Mittelwert bei jedem
neuen Sample komplett ausrechnet oder sich das Ergebnis gemerkt hat und
bei jedem Sample den ältesten abzieht und den jüngsten addiert.
Ingo L. schrieb:> Wie errechnet sich hier die Eckfrequenz?
Na dann denke doch mal nach: Wenn du zuvor nur Nullen hattest und dann
alle neuen Samples gleich 1 sind, dann siehst du ne lineare Rampe am
Ausgang. Sie ist so lang wie die Länge deines Filters. Wenn du nun
wieder Nullen nachschiebst, kommst du wieder bei null an, aber erst nach
so viel Samples, wie dein Filter lang ist. Also hast du für eine
Vollwelle 2*Filterlänge an Periode. Du hast dabei aber aus einem
Rechteck ein Dreieck gemacht und das ist noch kein Sinus. Also ist deine
echte Eckfrequenz nochmal ein Stück niedriger. Grob geschätzt würde ich
den Sinus bei etwa 2/3 deiner Dreieckfrequenz ansiedeln.
W.S.
W.S. schrieb:> Im Grunde ist es egal, ob man einen gleitenden Mittelwert bei jedem> neuen Sample komplett ausrechnet
Wo wird der bei jedem neuen Sample komplett neu gerechnet. Beim
IIR-Filter (2) steht