Hallo zusammen, ich möchte gerne einen digitalen FIR-Filter entwerfen und auch verstehen wie ich die Koeffizienten berechne. Dafür habe ich diese Seite hier gefunden: http://www.iem.thm.de/telekom-labor/zinke/fourier/dipl_htm/dpl08.htm Ich denke auf der Seite wird der Weg doch recht gut erklärt. Ich verstehe nun noch nicht so ganz das Prinzip mit der Übertragungsfunktion. Wenn ich mir auf der Seite das Bild 2.22 anschaue, dann ist da ja der Verlauf der Übertragungsfunktion dargestellt. Wenn ich mir nun einen Tiefpass aufbaue, bestehend aus einem Widerstand mit 100 Ohm und einem Kondensator mit 50 mF, dann komme ich auf ein Tau von 5 (R*C). Bei einem t von 0 s, was ja eine Gleichspannung darstellt (oder?) habe ich dann ja als Ergebnis der Übertragungsfunktion den Wert 1/5 = 0,2. Dem entsprechend gilt für die Ausgangsspannung dann U_a = U_e * 0,2. Allerdings lädt sich der Kondensator doch bis zur Maximalspannung auf, weshalb bei einer Frequenz von 0 Hz ja irgendwann gilt U_c = U_e. Ich denke ich habe die Übertragungsfunktion wohl falsch verstanden. Vielleicht kann mir jemand noch einmal genauer erklären, warum meine Überlegung nicht passt oder sogar falsch ist? Vielen Dank schon mal.
Moin, Daniel K. schrieb: > Wenn ich mir nun einen Tiefpass aufbaue, bestehend aus einem Widerstand > mit 100 Ohm und einem Kondensator mit 50 mF, dann komme ich auf ein Tau > von 5 (R*C). sicherheitshalber: Einheiten nicht vergessen - sonst merkt man nicht, wenn man schon lange voellig im Wald steht:-); also Tau =5sec. > Bei einem t von 0 s, was ja eine Gleichspannung darstellt (oder?) habe Nein, t von 0 s stellt keine Gleichspannung da. Zum Zeitpunkt t=0s liegt da irgendeine Spannung an; die kann aber zum naechsten Abtastzeitpunkt schon wieder voellig anders ausschauen. > ich dann ja als Ergebnis der Übertragungsfunktion den Wert 1/5 = 0,2. > Dem entsprechend gilt für die Ausgangsspannung dann U_a = U_e * 0,2. > Allerdings lädt sich der Kondensator doch bis zur Maximalspannung auf, > weshalb bei einer Frequenz von 0 Hz ja irgendwann gilt U_c = U_e. Der "Kondensator" laed sich aber nicht nach den 3 Samples aus dem Beispiel auf die Maximalspannung auf. Dazu muesste fuer mindestens 4 Samples die Maximalspannung anliegen. Dann waere der "Kondensator" auf seine End-Spannung aufgeladen. Gruss WK
Daniel K. schrieb: > ich möchte gerne einen digitalen FIR-Filter entwerfen und auch verstehen > wie ich die Koeffizienten berechne. Dann lies besser hier: "http://www.dspguide.com/" Das Buch läßt sich von dort auch als PDF herunterladen. Das Angenehme daran ist, daß der Autor seine Kapitel auch mit kleinen realen Programmstückchen in BASIC als Beispiele versehen hat und nicht nur bei hochtrabenden Bemerkungen wie "zuerst berechnen Sie mal so eben H(x) und dann die zugehörige XYZ". Ich geb dir mal ne Geschmacksprobe in Pascal:
1 | // Filterkoeffizienten nach sin(x)/x * Blackmann erzeugen
|
2 | procedure TFiForm.DoGenerate(Cutoff : double); |
3 | var
|
4 | D : double; |
5 | P, Q, R : double; |
6 | i : integer; |
7 | M : integer; |
8 | M2: integer; |
9 | begin
|
10 | D:= Cutoff; |
11 | M:= FilterTapnum; |
12 | M2:= M div 2; |
13 | for i:= 0 to M-1 do |
14 | begin
|
15 | if i = M2 |
16 | then
|
17 | P:= D |
18 | else
|
19 | P:= (sin(D * (i - M2))) / (i - M2); |
20 | |
21 | // Blackman-Fenster
|
22 | Q:= 0.42 - 0.5 * cos((2 * PI * i)/M) + 0.08 * cos((4 * PI * i)/M); |
23 | R:= P * Q; |
24 | FilterTaps[i]:= R; |
25 | end; |
26 | end; |
Zu bemerken ist noch, daß alle Frequenzen nicht in Hz zu rechnen sind, sondern relativ zur Samplefrequenz, also 2 PI (Frequenz / SampleFrequenz). Naja, und den eigentlichen Filter (for i:= 0 to..) kannst du ja gewiß selber schreiben W.S.
Hallo und danke für die Antworten. Dergute W. schrieb: > sicherheitshalber: Einheiten nicht vergessen - sonst merkt man nicht, > wenn man schon lange voellig im Wald steht:-); also Tau =5sec. Natürlich. Normalerweise bin ich nicht so unachtsam was Einheiten angeht (vor allem weil ich mit den Einheiten auch immer die Formel kontrollieren kann :) ). Dergute W. schrieb: > Der "Kondensator" laed sich aber nicht nach den 3 Samples aus dem > Beispiel auf die Maximalspannung auf. Dazu muesste fuer mindestens 4 > Samples die Maximalspannung anliegen. Dann waere der "Kondensator" auf > seine End-Spannung aufgeladen. Das verstehe ich nicht so ganz wie du das meinst. Ein Kondensator ist doch nach 5 Tau nahezu komplett geladen bzw. entladen. Wie kommst du auf 4? Kannst du das etwas genauer erklären? W.S. schrieb: > Dann lies besser hier: "http://www.dspguide.com/" > Das Buch läßt sich von dort auch als PDF herunterladen. > Das Angenehme daran ist, daß der Autor seine Kapitel auch mit kleinen > realen Programmstückchen in BASIC als Beispiele versehen hat und nicht > nur bei hochtrabenden Bemerkungen wie "zuerst berechnen Sie mal so eben > H(x) und dann die zugehörige XYZ". Danke den Link werde ich mir direkt mal anschauen. W.S. schrieb: > Naja, und den eigentlichen Filter (for i:= 0 to..) kannst du ja gewiß > selber schreiben Genau. Um den Code geht es mir auch in erster Linie nicht..da habe ich zur Not auch fertige Beispiele. Es geht mir in erster Linie um das Verständnis wie ich aus einer Forderung (z. B. ein 10 kHz Signal aus einem Audiosignal zu filtern) einen Filter entwerfe und wie ein digitales Filter funktioniert.
Moin, Daniel K. schrieb: > Das verstehe ich nicht so ganz wie du das meinst. Ein Kondensator ist > doch nach 5 Tau nahezu komplett geladen bzw. entladen. Wie kommst du auf > 4? Kannst du das etwas genauer erklären? Die 4 hat in dem Fall nichts mit irgendwelchen "nach 3..5 Tau ist alles vorbei" Faustregeln zu tun. Auf die 4 komm' ich durch scharfes Betrachten vom Bild 2.21 aus deinem Link. Bei dieser Stossantwort des Filters sind 4 Koeffizienten ungleich 0. (Die Werte sind in diesem Beispiel etwas "vereinfacht". Eigentlich wuerde ich ja als exponentiell abfallende Stossantwort z.b. sowas erwarten: 1 0.6 0.36 0.216 0.1296 0.07776 .... Aber dann muss man halt mehr rechnen und die Werte nach der Faltung sind nicht so "schoen".) Wenn ich jetzt eben diese Stossantwort mit den 4 Koeffizenten mit einem Eingangssignal, das eine Sprungfunktion (also sowas wie ein Schaltvorgang im Analogen) darstellt, falte, dann ist eben nach 4 Takten das Ausgangssignal konstant. Wenn das Eingangssignal so ausschaut: 0 1 1 1 1 ... dann kommt aus dem Beispielfilter das raus: 0 1 1.6 2 2.2 2.2 2.2 2.2 ... Gruss WK
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.