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.
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
??
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
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