Ich habe eine Frage bezüglich der Hintereinanderschaltung von IIR-Filtern, die ich nicht beantwortet bekomme. Hier gibt es dazu etwas in Sachen Verzögerung, was das Thema aber nur am Rande behandelt: Beitrag "Genauigkeit von IIR-Filtern beziffern" Ich benutzte ein einfaches Filter des Typs: Y(n) = (7 * Y(n-1) + X (n) ) / 8 Als Beispiel erhalte ich beim Sprung X = 0->1 die folgenden Werte für Y: 0 | 0,00 … 0 | 0,00 … 1 | 0,13 … 1 | 0,23 … 1 | 0,33 … 1 | 0,41 … 1 | 0,49 … 1 | 0,55 … 1 | 0,61 … 1 | 0,66 … 1 | 0,70 … 1 | 0,74 … 1 | 0,77 … 1 | 0,80 … 1 | 0,82 … 1 | 0,85 … 1 | 0,87 … 1 | 0,88 … 1 | 0,90 … 1 | 0,91 … 1 | 0,92 … 1 | 0,93 … 1 | 0,94 … Wie berechne ich daraus die Grenzfrequenz des Filters? Nach dem Wechsel von 0 auf 1 dauert es 16 Takte, bis die 90% erreicht sind, also wäre die Anstiegszeit 6% der Tastfrequenz. Kann ich das in eine (relative) Grenzfrequenz umrechnen? Wenn die Abtastung 1.2kHz beträgt, wären dies etwa 13ms. Mit der bekannten Formel t = 0,35/fg gelange ich zu 215 Hz als Grenzfrequenz. Kommt das hin? Das Filter hat dann 6dB pro Oktave Abfall soweit ich weis. Was passiert, wenn ich 2 dieser Filter hintereinander benutze? Bei der GF müssten es dann 6dB statt 3dB sein und damit die neue GF etwas sinken? Bekomme ich dann bei der neuen GF insgesamt ein Filter mit 12 dB / Oktave?
Mark schrieb: > Wie berechne ich daraus die Grenzfrequenz des Filters? Ich würde (wie bei einem RC-Filter) über die Zeitkonstante "tau" gehen. > Nach dem Wechsel von 0 auf 1 dauert es 16 Takte, bis > die 90% erreicht sind, also wäre die Anstiegszeit 6% > der Tastfrequenz. Kann ich das in eine (relative) > Grenzfrequenz umrechnen? Wenn die Abtastung 1.2kHz > beträgt, wären dies etwa 13ms. Sind alles Näherungsformeln; muss aber im Prinzip auch (ungefähr) zum richtigen Ergebnis führen. > Mit der bekannten Formel t = 0,35/fg gelange ich zu > 215 Hz als Grenzfrequenz. Kommt das hin? Hmm. Ich komme auf ungefähr 25Hz... > Das Filter hat dann 6dB pro Oktave Abfall soweit ich > weis. Ja. > Was passiert, wenn ich 2 dieser Filter hintereinander > benutze? Bei der GF müssten es dann 6dB statt 3dB sein > und damit die neue GF etwas sinken? Ja, klar. Die übliche 3dB-Grenzfrequenz sackt etwas ab. > Bekomme ich dann bei der neuen GF insgesamt ein Filter > mit 12 dB / Oktave? Klar.
Egon D. schrieb: > Ich würde (wie bei einem RC-Filter) über die Zeitkonstante > "tau" gehen. Ich suche ja diesen Zusammenhang. Die Frage ist, was Tau ist. Ich habe aktuell 1.2kHz Abtastfrequenz und bekomme eben diese knapp 17 Takte bis das Signal auf 90% kommt. Egon D. schrieb: > Sind alles Näherungsformeln; muss aber im Prinzip auch > (ungefähr) zum richtigen Ergebnis führen. Das sind keine Näherungsformeln. Das ist umgerechnet 1.2kHz / 17 Takte. Egon D. schrieb: > Hmm. Ich komme auf ungefähr 25Hz... Wie das? Kann man eigentlich irgendwie direkt von dem Faktor 7/8 auf Tau und fg kommen?
Moin, Mark schrieb: > Kann man eigentlich irgendwie direkt von dem Faktor 7/8 auf Tau und fg > kommen? Ja, klar kann man. Ist halt bisschen Rechnerei. Aber ich find Tau und 6dB/octave da jetzt nicht so passend. Grad in den oberen Frequenzbereichen, also knapp vor Fabtast/2 sieht so ein digitales Filter halt doch etwas anders aus, als das analoge RC-Tiefpasspendant. Zum Berechnen nimmste den Frequenzgang in der z-Ebene, das waeren bei deinem Beispiel also
1 | h(z)=1/(8-7*z⁻¹) |
Dann kannste fuer z auch exp(j*Omega) einsetzen; das dann in sin und cos aufspalten; fuer den -3dB Punkt sollte dann der Betrag von |H(z)|= 0.707 sein, d.h. das Quadrat des Betrags 0.5; so kommste dann auf einen Wert fuer Omega; den dann mit der Abtastfrequenz entnormieren und "schon ists fertig". Geht sicher auch mit 2 in Kette geschalteten Filtern, aber mir isses fuer solche Faxen zu rechnen grad eindeutig viel zu heiss ;-) Gruss WK
Mark schrieb: > Kann man eigentlich irgendwie direkt von dem Faktor 7/8 auf Tau und fg > kommen? Fur ein Tiefpassfilter mit folgender Gleichung: Y(n) = (m-1)/m*Y(n-1) + 1/m*X(n) habe ich berechnet, dass die 3dB-Grenzfrequenz f0 = fsampl/(2*PI) * arccos{[4m(m-1)+2]/[2m(m-1)]} und die Zeitkonstante tau = 1/fsampl * ln[m/(m-1)] betragen.
Jaroslaw schrieb: > arccos{[4m(m-1)+2]/[2m(m-1)]} Der Term liefert aber einen Wert von 2.x und dafür gibt es keinen ARCCOS. vlt ARCTAN?
Mark schrieb: > Jaroslaw schrieb: >> arccos{[4m(m-1)+2]/[2m(m-1)]} > Der Term liefert aber einen Wert von 2.x und dafür gibt es keinen > ARCCOS. vlt ARCTAN? Mein Fehler. Bei +33*C kann sowas passieren. Ausgebessert: f0 = fsampl/(2*PI) * arccos{[2m(m-1)-1]/[2m(m-1)]} Fuer m=8 haetten wir f0 = fsampl/(2*PI) * arccos(111/112) ~ fsampl * 0,021284
wären aber nur 2% der Abtastfrequenz. Kann irgendwie nicht stimmen. Der Anstieg beim Sprung ist steiler, finde ich. Es passt auch nicht zur der Faustformel in der WP mit den 0,35 fg. Oder kommt es von der digitalen Filterung und die Formeln gelten nicht?
Mark schrieb: > wären aber nur 2% der Abtastfrequenz. Richtig. Ziemlich genau der Wert, den ich schon vor Tagen nannte... > Es passt auch nicht zur der Faustformel in der WP mit > den 0,35 fg. Da fehlt der Kehrwert: t_a = 0.35 / fg Oder umgeformt: fg = 1 / (2.85 * t_a) Für ta = 17 Takte ergibt sich eine Grenzfrequenz von fg = 1/48 * f_sample, also ca. 0.02 * f_sample.
Egon D. schrieb: > fg = 1/48 * f_sample, also ca. 0.02 * f_sample. Die 2,128% sind sogar ziemlich genau 1/47. Das sind gut 2 Wellen pro 100 Samples - egal bei welcher Frequenz. Sobald die Welle eingeschwungen ist, sind es gut 70% Amplitude. Der Anstieg nach dem Sprung (Beginn mit Cosinus = 1) scheint auch plausibel. Der zitierte Anstieg beim Puls aus der Tabelle ist vielleicht scheinbar steiler, das liegt aber an der schlechten Dämpfung dieses Filters und den vielen Oberwellen im rechteckigen Sprung. Nehme ich noch eine Welle dazu, gibt es noch mehr Dämpfung und Phasenverschiebung - die 50% / - 6dB passen genau. Um jetzt mit diesen 2 Stufen nur auf -3dB zu kommen, also die Grenzfrequenz zu ermitteln, braucht es eine Frequenz von knapp 2/3.
Also die Dämpfung bei der gewählten Konstellation kann ich jetzt nachvollziehen. Ich komme aber mit der Formel noch nicht ganz klar: Jaroslaw schrieb: > f0 = fsampl/(2*PI) * arccos{[2m(m-1)-1]/[2m(m-1)]} Eine gewählte Konstellation wie oben, 7/8, ist dasselbe wie 14/16. Wie berechne ist das dann? Das eigentliche Ziel wäre ein parametrischer Filter wie z.B. X/32, bei dem mit X die Grenzfrequenz des Filters in 3%-Stufen genau eingestellt werden könnte.
>> f0 = fsampl/(2*PI) * arccos{[2m(m-1)-1]/[2m(m-1)]} > Eine gewählte Konstellation wie oben, 7/8, ist dasselbe wie 14/16. Wie > berechne ist das dann? Allgemeine Form: Y(n) = (m-1)/m*Y(n-1) + 1/m*X(n) m ist immer der Kehrwert des Koeffizienten bei X(n)! "Unser" Filter: Y(n) = 7/8*Y(n-1) + 1/8*X(n) m = 8 Y(n) = 14/16*Y(n-1) + 2/16*X(n) m = 8 (Filter ist identisch) Y(n) = 15/16*Y(n-1) + 1/16*X(n) m = 16 --> niedrigere fg, hoehere tau Y(n) = 14/16*Y(n-1) + 1/16*X(n) verhaelt sich etwas anders als ein klassischer analoger "R in Serie, C auf Masse" Tiefpass 1. Ordnung; z.B. die Uebertragungsfunktion bei f=0 betraegt 1/2.
Jaroslaw schrieb: > Y(n) = 14/16*Y(n-1) + 2/16*X(n) > m = 8 (Filter ist identisch) ja, das wäre dasselbe wie 1/8 , 7/8. Aber wie berechne ich das mit der Formel arccos{[2m(m-1)-1]/[2m(m-1)]} Und wie berechnet man 3/8 und 5/8 bzw 7/32 , 25/32?
Mark schrieb: > Jaroslaw schrieb: > >> Y(n) = 14/16Y(n-1) + 2/16X(n) >> m = 8 (Filter ist identisch) > > ja, das wäre dasselbe wie 1/8 , 7/8. > Aber wie berechne ich das mit der Formel arccos{[2m(m-1)-1]/[2m(m-1)]} > Und wie berechnet man 3/8 und 5/8 bzw 7/32 , 25/32? So gar nicht. Die Koeffizienten sind da stark eingeschränkt. Das einfache rekursive Mittelwertfilter hat die Differenzengleichung
Damit nochmal so berechnen, wie WK das beschrieben hat.
Rezy schrieb: > nochmal so berechnen, wie WK das beschrieben hat. Also so: Dergute W. schrieb: > Zum Berechnen nimmste den Frequenzgang in der z-Ebene, das waeren bei > deinem Beispiel alsoh(z)=1/(8-7*z⁻¹) Nach der Definition von Rezy (mit "a") wären 1/8 allgemein k/q und h(z) = 1/(8-7*z⁻¹) wäre (q - (q-k)*z⁻¹). > Dann kannste fuer z auch exp(j*Omega) einsetzen; das dann in sin und cos > aufspalten ??
Nicht ganz. Die z-Transformierte ist
Folglich
Nun wird z substituiert, um die DTFT zu erhalten. Dafür z=exp(j*Omega). Also
Für die Grenzfrequenz soll
gelten. Das nur noch nach f (für -3dB f_c) auflösen, rechnen und umstellen. Das Omega ist die auf fs normierte Kreisfrequenz, also
Damit bekommst du schließlich die Grenzfrequenz in Abhängigkeit von alpha und fs.
Moin, Hier eine Stelle im www von sicherlich Vielen, wo das schonmal wer vorgerechnet hat: https://dsp.stackexchange.com/questions/40462/exponential-moving-average-cut-off-frequency Gruss WK
Man muss hier allerdings beachten, dass das Moving average Filter keine klassiche Genzfrequenz hat. In der Regel geht man davon aus, dass ein Teifpassfilter bis zur Genzfrequenz einen nahezu flachen Amplitudengang hat und dann mit -x db/dekade abfällt. Das ist aber beim Moving Average Filter nicht so: Wenn wir von einem Filter
ausgehen, dann ist der Amplitudengang
Einen Plot habe ich mal angehängt. Ebenso als Vergleich ein zufälliges Chebychev Filter zum Vergleich.
Moin, M. H. schrieb: > Man muss hier allerdings beachten, dass das Moving average Filter keine > klassiche Genzfrequenz hat. Mumpitz. > In der Regel geht man davon aus, dass ein Teifpassfilter bis zur > Genzfrequenz einen nahezu flachen Amplitudengang hat und dann mit -x > db/dekade abfällt. Das ist halt deine Definition. Die muss man nicht teilen. Gruss WK
Dergute W. schrieb: >> In der Regel geht man davon aus, dass ein Tiefpassfilter bis zur >> Grenzfrequenz einen nahezu flachen Amplitudengang hat und dann mit -x >> db/dekade abfällt. > Das ist halt deine Definition. Die muss man nicht teilen. Ich würde die teilen, denn ein idealer Tiefpass verhält sich genau so wie es M.H. beschreibt. Dass der moving average nur für passende Frequenzen null wird und für darüber liegende wieder kommt, ist natürlich unbestritten. Wie könnte man dies ins Spiel bringen? Was ist mit dem Bogen, der in der ersten Oktave kommt? Ist der schon zu mehr als 30% weggefiltert? Dann wären die Amplituden dieser- und aller anderen Frequenzen darüber geringer als die Amplitude der Grenzfrequenzdefinition und damit im "Stoppband". Die Grenzfrequenz des Moving Average wäre also dort, wo der erste Bogen auf 70% geht.
Dr. T. schrieb: > Die Grenzfrequenz des Moving Average wäre also dort, wo der erste Bogen > auf 70% geht. Dr. T. schrieb: > Ich würde die teilen, denn ein idealer Tiefpass verhält sich genau so > wie es M.H. beschreibt. Dass der moving average nur für passende > Frequenzen null wird und für darüber liegende wieder kommt, ist > natürlich unbestritten. Ich vermute du lässt dich von meiner zugegebenermaßen beschi**enen Farbwahl verwirren. Das Filter mit dem "Rippel" im Stoppband war der Chebychev. Die anderen Kurven sind alle exponentielle Moving-Average-Filter. Das Moving average Filter kommt nicht mehr nach oben. Zumindest nicht, solange man kein Aliasing hat und unter der halben Samplefrequenz bleibt.
Man kann allerdings auch über den Zeitbereich gehen und sich überlegen, nach wie vielen Samples das Filter nach einem Sprung von 0->1 den Wert 0<=p<=1 erreicht. Nehmen wir an, dass das Filter mit dem Eingangssignal
beaufschalgt wird. Für alle n < 0 sei der Eingang 0. In diesem Fall kann man aus der Differenzengleichung
herleiten, dass der gefilterte Ausgang
beträgt. Für den Ausgangswert p zum Zeitschritt n_p gilt somit
Mittles den endlichen geometrischen Reihe
erhält man dann:
Umgestellt ergibt sich der Zeitschritt des (sicheren) Erreichens eines Wertes p zu:
Wenn man von der üblichen Definition der Zeitkonstanten tau ausgeht, dass zum Zeitpunkt Tau der Ausgang den Wert
annimmt, dann ist dieser zum Zeitschritt
erreicht.
Moin, M. H. schrieb: > Man kann allerdings auch über den Zeitbereich gehen und sich überlegen, > nach wie vielen Samples das Filter nach einem Sprung von 0->1 den Wert > 0<=p<=1 erreicht. Jaaaaaa, das kann man machen. Deshalb hat's auch der Threaderoeffner in seinem ersten Post ganz oben so beschrieben. Dann hat ihn halt die Neugierde geplagt, das in eine Grenzfrequenz umzurechnen, weswegen er hier gefragt hatte. Und das kann man auch machen. Auch, wenn so ein Filter evtl. keinen ganz sauber erkennbaren Uebergang zwischen Durchlass- und Sperrbereich hat und im Durchlass auch schon ordentlich "abkackt". Bessel, Gauss, (Root-)Raised-Cosine sind z.b. solche Kanditaten. Trotzdem kann man auch da prima Grenzfrequenzen angeben. Gruss WK
M. H. schrieb: > 1+(1−α)2−2(1−α)cos(Ω) Diese Formel von oben sieht komisch aus: Man erkennt nicht, wie der Wert nach hinten zu höheren Frequenzen kleiner werden kann. Fehlt da noch ein Divisor? Was genau ist Omega?
Kai schrieb: > M. H. schrieb: >> 1+(1−α)2−2(1−α)cos(Ω) > Diese Formel von oben sieht komisch aus: Man erkennt nicht, wie der Wert > nach hinten zu höheren Frequenzen kleiner werden kann. Fehlt da noch ein > Divisor? Was genau ist Omega? Das Ganze steht im Divisor (unter dem Bruchstrich). Omega ist die Frequenz normiert auf 2pi
mit der Samplefrequenz f_S Hier kann man damit mal herumspielen: https://www.desmos.com/calculator/7mvs9eqdpb
:
Bearbeitet durch User
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.