Hallo, liegt die Grenzfrequenz dieses Filters bei 10Hz oder 9,94Hz y = (y*63+x)/64; wenn diese Funktion mit 4kHz aufgerufen wird? fg = 1/(2+pi+63*250us) = 10Hz oder fg = 1/(2+pi+64*250us) = 9,94Hz oder ist der Ansatz ganz falsch? Viele Grüße, Ingo
wahrscheinlich fragt sich jeder wo der sinn hinter deiner frage ist, ob 10Hz oder 9,94Hz grenz frequenz interessiert doch nichtmal meinen hamster, vorallem bei einem solch erbärmlichen Filter(falls das überhaupt ein funktionierender Filter ist, habs mir nicht angeschaut).
Chris schrieb: > wahrscheinlich fragt sich jeder wo der sinn hinter deiner frage ist welche der Gleichungen für die Berechnung der Grenzfrequenz stimmt. > habs mir nicht angeschaut eben Markus schrieb: > komischer Filter, wenn ich mir den anschaue kannste daraus y = x machen ja, dass ist der Sinn dieses Tiefpassfilters, dachte das wäre offensichtlich... Ingo
Das ist ein IIR Filter erster Ordnung, Polstelle bei Z= 63/64, also ziemlich nah bei 1. Um die Grenzfrequenz zu finden würde ich das mal plotten lassen.
Ingo meinte vllt. y(k+1) = (y(k)*63+x(k))/64; Aber selbst das ist falsch, denn so ist das Ding instabil, einfach zu sehen wenn man x(k)= 1 für alle k setzt. Siehe Beitrag "Grenzfrequenz digitaler Tiefpass" Da muß Ingo wohl nochmal bißchen die Frage überarbeiten. Cheers Detlef
Ingo L. schrieb: > ja, dass ist der Sinn dieses Tiefpassfilters, dachte das wäre > offensichtlich... Das Ding ist doch gar kein Filter. Was du reinsteckst kommst du auch wieder raus. Biste dir mit der Funktion sicher?
Jetzt gehts weiter in octave (oder matlab): > t1 = tf([1], [1 -63/64]) > bode(t1)
@Markus: Das ist richtig, 1/64 fehlt noch. Allerdings ist das nur ein Faktor, also eine (negative) Verstärkung.
> t1=tf([1], [1 -63/64]) #urspruengliche Fkt > t2=tf([1/64], [1 -63/64]) #korrektur Verstärkung > bode(t2) > print("transferfunction.png") # ist angehängt.
Um also auf die eigentliche Frage zurückzukommen: Die Grenzfrequenz liegt nicht genau bei 1. (Ich rechnete komplett einheitenlos, mit den 4kHz Abtastung musst du selber sehen, wie es passt)
Eure tollen Rechnungen in Ehren, aber das ist doch einfach eine gleitende Mittelwertbildung über die letzten 64 und den aktuellen Wert: y(k) = 63/64y(k-1) + 1/64x(k) Der neue Mittelwert ergibt sich aus dem alten Mittelwert mit 63/64 gewichtet, plus dem neuen Eingangswert mit 1/64 gewichtet. Auch was daran instabil sein soll kann ich jetzt nicht so richtig erkennen.
Udo Schmitt schrieb: > y(k) = 63/64y(k-1) + 1/64x(k) Es weiss ja keiner wie die Funktion wirklich aussieht. Dies war ja nur eine Vermutung weil die vom TE angegebene Funktion keinen Sinn macht.
Hallo, ich berechne ein Tiefpassfilter nach folgender Näherungsformel: y(k+1) = (1-h/Tf)*y(k) + (h/Tf)*x(k) mit h ... Abtastzeit Tf... Filterzeitkonstante G(s) = 1 / (1 + Tf*s) Es ergibt sich: (h/Tf) = 1/64 = 250µs/(250µs*64) = 250µs/16ms also Tf = 16ms fg = 1/(2*pi*16ms) = 9,947Hz Die obige Formel würde exakt lauten: y(k+1) = exp(-h/Tf)*y(k) + (1-exp(-h/Tf))*x(k) Näherungsweise: exp(-h/Tf) = 1 - (h/Tf) + (h/2!Tf)^2 - (h/3!Tf)^3 + -... man könnte also rechnen: 1-exp(-h/Tf)) = 1/64 -h/Tf = ln(1-1/64) Tf = -h/ln(1-1/64) = - 15,875ms fg = 1/(2*pi*Tf) = 10,026Hz Gruss
So, danke erstmal für die Antworten. Udo Schmitt schrieb: > Eure tollen Rechnungen in Ehren, > aber das ist doch einfach eine gleitende Mittelwertbildung über die > letzten 64 und den aktuellen Wert: > y(k) = 63/64y(k-1) + 1/64x(k) > > Der neue Mittelwert ergibt sich aus dem alten Mittelwert mit 63/64 > gewichtet, plus dem neuen Eingangswert mit 1/64 gewichtet. > > Auch was daran instabil sein soll kann ich jetzt nicht so richtig > erkennen. So war das auch geplant. Obwohl ein gleitender Mittelwert ist es nicht direkt. Bin aber für weitere Indormationen dazu dankbar, ob das so funktioniert... Ingo
Ingo L. schrieb: > So war das auch geplant. Obwohl ein gleitender Mittelwert ist es nicht > direkt. Vieleicht nicht mathematisch korrekt, weil nicht der älteste Wert rausfliegt, sondern 1/64 vom Mittel der letzten 64 Werte. Praktisch kommt das aufs selbe raus. Ingo L. schrieb: > Bin aber für weitere Indormationen dazu dankbar Darfs auch Outdoor sein? Ist grad so schön draussen :-) Ingo L. schrieb: > ob das so funktioniert... Wenn du eine gleitende Mittelwertbildung willst , ja!
@ Waldo Joa, das ist genau das was ich auch gemacht habe, nur halt mathematisch korrekt beschrieben. Also scheint das so zu passen. Sehr schön :) Ingo
Udo Schmitt schrieb: >> Bin aber für weitere Indormationen dazu dankbar > Darfs auch Outdoor sein? Ist grad so schön draussen :-) ;-) Udo Schmitt schrieb: > Wenn du eine gleitende Mittelwertbildung willst , ja! Nee gleitender Mittelwertbildung mache ich immer wirklich gleitend über n Werte, kostet aber aufm AVR Rechenzeit. Das obige ist nicht so rechenlastig und Funktioniert auch wenns nur quick & dirty gefilter werden soll, z.B. ne LCD Ausgabe oder so...
Wieso ist eine Mittelwertbildung aufwändig? Da reicht doch eine Addition und ein Shift
Markus schrieb: > Du wolltest also diese realisieren: Ja, richtig. Markus schrieb: > Wieso ist eine Mittelwertbildung aufwändig? Da reicht doch eine Addition > und ein Shift Aufwändig habe ich nicht gesagt, nur rechenlastig. Wenn man einen gleitenden Mittelwert über 10 Werte macht, dauert das länger also die obige Methode. Wie es bei einem gleitenden Mittelwert über 2^n Werte aussieht weiß ich nicht, kann man sicher etwas mehr Geschwindigkeit rausholen halt wegen dem Shift. Ingo
Die Grenzfrequenz von dem Filter beträgt 10.0259Hz bei 4kHz Abtastrate. Das Ding ist stabil, als ich oben Gegenteiliges behauptete hatte ich partiellen blackout. Rechnung: Pol bei 63/64. Wenn man dann den Einheitskreis gegen den Uhrzeigersinn weitergeht hat man die Grenzfrequenz, wenn der Aufpunkt vom Pol sqrt(2)/64 entfernt ist. Also hat man ein Dreieck mit den drei Seitenlängen 63/64, 1 und sqrt(2)/64. Das hat mit dem Cosinussatz einen Winkel von 0.0157 rad, entnormiert auf Abteastfrequenz 10.0259Hz. Probe: abs(1/(1-63/64))/abs(1/(exp(j*0.0157)-63/64)))=sqrt(2), passt math rulez Cheers Detlef
Detlef: Kannst du mir bitte genauer erklären, wie du die Grenzfrequenz bestimmst? Im Z-Bereich, welchen Punkt suchst du da? Muss der nicht auf dem Einheitskreis liegen?
Siehe angehängte Skizze: Der Pol liegt im Einheitskreis auf der reelen Achse bei 63/64. Zur Berechnung des Frequenzgangs geht man mit den w jetzt von w=0 (entspricht 1 auf der rellen Achse) beginnend gegen den Uhrzeigersinn los. Für w=0 ergibt sich für den Betrag des Frequenzgangs 1/(Entfernung zum Pol)=64. Der Betrag ist bei der Grenzfrequenz auf 64/sqrt(2) abgesunken, da beträgt die Entfernung des Aufpunktes auf dem Einheitskreises zum Pol dann sqrt(2)/64. Also habe ich ein Dreieck mit drei bekannten Seiten und ich suche den Winkel, das ist schlicht. So geht das. Cheers Detlef
Ok, nur mal Interessehalber, wie errechne ich die Grenzfrequenz einer Gleitenden mittelwertbildung über n Werte wenn neue Werte bzw. die Funktion mit 4 kHz berechnet werden? Ingo
Hallo, Ein gleitender Mittelwert ist ein FIR Filter nter Ordnung. Die Filterkoeffizienten liegen alle gleich bei 1/n. Waldo
Waldo schrieb: > Ein gleitender Mittelwert ist ein FIR Filter nter Ordnung. Die > Filterkoeffizienten liegen alle gleich bei 1/n. Wie kann man damit den Grenzfrequenz errechnen. Kannst du Literatur empfehlen? Ingo
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.