Zur Verdeutlichung digitaler Filter
Applet in neuem Tab öffnen Open English Version
Inhaltsverzeichnis
Programmbeschreibung
Das Applet soll die Eigenschaften digitaler Filter verdeutlichen, wobei wir uns auf Filter der Ordnung M=2 beschränken. Behandelt werden sowohl nichtrekursive Filter (FIR, Finite Impulse Response) als auch rekursive Filter (IIR, Infinite Impulse Response).
Das Eingangssignal x(t) wird durch die Folge 〈xν〉 seiner Abtastwerte dargestellt, wobei xν für x(ν·TA) steht. Berechnet wird die Ausgangsfolge 〈yν〉, also die zeitdiskrete Darstellung des Ausgangssignal y(t).
- TA bezeichnet den zeitlichen Abstand zwischen zwei Abtastwerten.
- Zudem beschränken uns auf kausale Signale und Systeme, das heißt, es gilt xν≡0 sowie yν≡0 für ν<0.
Weiter ist anzumerken: Wir bezeichnen die Ausgangsfolge 〈yν〉 als
(1) die zeitdiskrete Impulsantwort 〈hν〉, wenn am Eingang die „zeitdiskrete Diracfunktion” anliegt: 〈xν〉=〈1, 0, 0, 0, 0, 0, 0,...〉,
(2) die zeitdiskrete Sprungantwort 〈σν〉, wenn am Eingang die „zeitdiskrete Sprungfunktion” anliegt: 〈xν〉=〈1, 1, 1, 1, 1, 1, 1,...〉,
(3) die zeitdiskrete Rechteckantwort 〈ρ(2,4)ν〉, wenn am Eingang die „zeitdiskrete Rechteckfunktion” anliegt: 〈xν〉=〈0, 0, 1, 1, 1, 0, 0,...〉;
In Hochkommata angegeben sind hier der Beginn der Einsen (ν=2) und die Stelle der letzten Eins (ν=4).
Theoretischer Hintergrund
Allgemeines Blockschaltbild
Jedes Signal x(t) kann an einem Rechner nur durch die Folge 〈xν〉 seiner Abtastwerte dargestellt werden, wobei xν für x(ν·TA) steht.
- Der zeitliche Abstand TA zwischen zwei Abtastwerten ist dabei durch das Abtasttheorem nach oben begrenzt.
- Wir beschränken uns hier auf kausale Signale und Systeme, das heißt, es gilt xν≡0 für ν<0.
- Um den Einfluss eines linearen Filters mit Frequenzgang H(f) auf das zeitdiskrete Eingangssignal 〈xν〉 zu erfassen, bietet es sich an, auch das Filter zeitdiskret zu beschreiben. Im Zeitbereich geschieht das mit der zeitdiskreten Impulsantwort 〈hν〉.
- Rechts sehen Sie das entsprechende Blockschaltbild. Für die Abtastwerte des Ausgangssignals 〈yν〉 gilt somit:
- yν=M∑μ=0aμ⋅xν−μ+M∑μ=1bμ⋅yν−μ.
Hierzu ist Folgendes zu bemerken:
- Der Index ν bezieht sich auf Folgen, zum Beispiel am Eingang 〈xν〉 und Ausgang 〈yν〉.
- Den Index μ verwenden wir dagegen für die Kennzeichnung der a– und b–Filterkoeffizienten.
- Die erste Summe beschreibt die Abhängigkeit des aktuellen Ausgangs yν vom aktuellen Eingang xν und von den M vorherigen Eingangswerten xν−1, ... , xν−M.
- Die zweite Summe kennzeichnet die Beeinflussung von yν durch die vorherigen Werte yν−1, ... , yν−M am Filterausgang. Sie gibt den rekursiven Teil des Filters an.
- Den ganzzahligen Parameter M bezeichnet man als die Ordnung des digitalen Filters. Im Programm ist dieser Wert auf M≤2 begrenzt.
Definitionen:
(1) Man bezeichnet die Ausgangsfolge 〈yν〉 als die zeitdiskrete Impulsantwort 〈hν〉, wenn am Eingang die „zeitdiskrete Diracfunktion” anliegt:
- 〈xν〉=〈1, 0, 0, 0, 0, 0, 0,...〉.
(2) Man bezeichnet die Ausgangsfolge 〈yν〉 als die zeitdiskrete Sprungantwort 〈σν〉, wenn am Eingang die „zeitdiskrete Sprungfunktion” anliegt:
- 〈xν〉=〈1, 1, 1, 1, 1, 1, 1,...〉.
(3) Man bezeichnet die Ausgangsfolge 〈yν〉 als die zeitdiskrete Rechteckantwort 〈ρ(2,4)ν〉, wenn am Eingang die „zeitdiskrete Rechteckfunktion” anliegt:
- 〈xν〉=〈0, 0, 1, 1, 1, 0, 0,...〉.
- In Hochkommata angegeben sind hier der Beginn der Einsen (ν=2) und die Stelle der letzten Eins (ν=4).
Nichtrekursives Filter ⇒ FIR–Filter
Definition: Sind alle Rückführungskoeffizienten bμ=0, so spricht von einem nichtrekursiven Filter. In der englischsprachigen Literatur ist hierfür auch die Bezeichnung FIR Filter (von „Finite Impulse Response”) gebräuchlich.
Für die Ordnung M gilt:
- Der Ausgangswert yν hängt nur vom aktuellen und den M vorherigen Eingangswerten ab:
- yν=M∑μ=0aμ⋅xμ−ν.
- Zeitdiskrete Impulsantwort mit 〈xν〉=〈1, 0, 0, 0, 0, 0, 0,...〉:
- 〈hν〉=〈a0, a1, ... , aM〉.
- Aufgrund unserer Nomenklatur kann man die zeitdiskrete Impulsantwort auch mit 〈hμ〉=〈a0, a1, ... , aM〉 bezeichnen.
Beispiel 1: Ein Zweiwegekanal, bei dem
- das Signal auf dem Hauptpfad gegenüber dem Eingangssignal ungedämpft, aber um 2 µs verzögert ankommt, und
- in 4 µs Abstand – also absolut zur Zeit t=6 µs – ein Echo mit halber Amplitude nachfolgt,
kann durch ein nichtrekursives Filter entsprechend obiger Skizze nachgebildet werden, wobei folgende Parameterwerte einzustellen sind:
- M=3,TA=2µs,a0=0,a1=1,a2=0,a3=0.5.
Beispiel 2: Betrachtet wird ein nichtrekursives Filter mit den Filterkoeffizienten a0=1,a1=2,a2=1.
(1) Die herkömmliche Impulsantwort lautet: h(t)=δ(t)+2⋅δ(t−TA)+δ(t−2TA).
⇒ Zeitdiskrete Impulsantwort: 〈hμ〉=〈1, 2, 1〉.
(2) Der Frequenzgang H(f) ist die Fouriertransformierte von h(t). Nach Anwendung des Verschiebungssatzes:
- H(f)=2⋅[1+cos(2π⋅f⋅TA)]⋅e−j2πfTA⇒H(f=0)=4.
(3) Daraus folgt: Die zeitdiskrete Sprungantwort 〈σν〉 tendiert für große ν gegen 4.
(4) Die zeitdiskrete Faltung der Eingangsfolge ⟨xν⟩=⟨1,0,0,0,1,0,0,0,...⟩ mit ⟨hν⟩=⟨1, 2, 1⟩ ergibt
- ⟨yν⟩=⟨1,2,1,0,1,2,1,0,0,0,0,...⟩.
(5) Die zeitdiskrete Faltung der Eingangsfolge ⟨xν⟩=⟨1,1,0,0,1,0,0,0,...⟩ mit ⟨hν⟩=⟨1, 2, 1⟩ ergibt
- ⟨yν⟩=⟨1,3,3,2,2,1,0,0,0,0,0,...⟩.
Rekursives Filter ⇒ IIR–Filter
Definition:
- Ist zumindest einer der Rückführungskoeffizienten bμ≠0, so spricht von einem rekursiven Filter (siehe rechte Grafik). Insbesondere in der englischsprachigen Literatur ist hierfür auch die Bezeichnung IIR Filter (von „Infinite Impulse Response”) gebräuchlich. Dieser Filtertyp wird in der Verrsuchsdurchführung ausführlich behandelt.
- Sind zusätzlich alle Vorwärtskoeffizienten identisch aμ=0 mit Ausnahme von a0, so liegt ein rein rekursives Filter vor (siehe linke Grafik).
Im Folgenden beschränken wir uns auf den Sonderfall „Rein rekursives Filter erster Ordnung”. Dieses Filter weist folgende Eigenschaften auf:
- Der Ausgangswert yν hängt (indirekt) von unendlich vielen Eingangswerten ab:
- yν=∞∑μ=0a0⋅b1μ⋅xν−μ.
- Dies zeigt die folgende Rechung:
- yν=a0⋅xν+b1⋅yν−1=a0⋅xν+a0⋅b1⋅xν−1+b12⋅yν−2=a0⋅xν+a0⋅b1⋅xν−1+a0⋅b12⋅xν−2+b13⋅yν−3=....
- Die zeitdiskrete Impulsantwort ist definitionsgemäß gleich der Ausgangsfolge, wenn am Eingang eine einzelne „Eins” bei t=0 anliegt.
- h(t)=∞∑μ=0a0⋅b1μ⋅δ(t−μ⋅TA)⇒〈hμ〉=〈a0, a0⋅b1, a0⋅b12, ...〉.
Fazit: Bei einem rekursiven Filter reicht die (zeitdiskrete) Impulsantwort schon mit M=1 bis ins Unendliche:
- Aus Stabilitätsgründen muss b1<1 gelten.
- Bei b1=1 würde sich die Impulsantwort (h(t) bzw. 〈hμ〉) bis ins Unendliche erstrecken und bei b1>1 würde sie sogar bis ins Unendliche anklingen.
- Bei einem solchen rekursiven Filter erster Ordnung ist jede einzelne Diraclinie genau um den Faktor b1 kleiner als die vorherige Diraclinie:
- hμ=h(μ⋅TA)=b1⋅hμ−1.
Beispiel 3: Die nebenstehende Grafik zeigt die zeitdiskrete Impulsantwort 〈hμ〉 eines rekursiven Filters erster Ordnung mit den Parametern a0=1 und b1=0.6.
- Der (zeitdiskrete) Verlauf ist exponentiell abfallend und erstreckt sich bis ins Unendliche.
- Das Verhältnis der Gewichte zweier aufeinanderfolgender Diracs ist jeweils b1=0.6.
Rekursives Filter als Sinus–Generator
Die Grafik zeigt ein digitales Filter zweiter Ordnung, das zur Erzeugung einer zeitdiskreten Sinusfunktion auf einem digitalen Signalprozessor (DSP) geeignet ist, wenn die Eingangsfolge ⟨xν⟩==〈1, 0, 0, 0, 0, 0, 0,...〉 eine (zeitdiskrete) Diracfunktion ist:
- ⟨yν⟩=⟨sin(ν⋅TA⋅ω0)⟩.
Die fünf Filterkoeffizienten ergeben sich aus der Z-Transformation:
- Z{sin(νTA⋅ω0)}=z⋅sin(ω0⋅TA)z2−2⋅z⋅cos(ω0⋅TA)+1.
Nach Umsetzung dieser Gleichung durch ein rekursives Filter zweiter Ordnung erhält man folgende Filterkoeffizienten:
- a0=0,a1=sin(ω0⋅TA),a2=0,b1=2⋅cos(ω0⋅TA),b2=−1.
- Auf die Filterkoeffizienten a0 und a2 kann verzichtet werden und b2=−1 hat einen festen Wert.
- Die Kreisfrequenz ω0 der Sinusschwingung wird also nur durch a1 und b1 festelegt.
Beispiel 4: Es gelte a1=0.5, b1=√3, x0=1 und xν≠0=0.
(1) Dann gilt für die Ausgangswerte yν zu den Zeitpunkten ν≥0:
- y0=0;
- y1=0.5 ⇒ die „1” am Eingang wirkt sich wegen a0=0 am Ausgang erst zum Zeitpunkt ν=1 aus;
- y2=b1⋅y1−y0=√3/2≈0.866 ⇒ bei ν=2 wird auch der rekursive Teil des Filters wirksam;
- y3=√3⋅y2−y1=√3⋅√3/2−1/2=1 ⇒ für ν≥2 ist das Filter rein rekursiv: yν=b1⋅yν−1−yν−2;
- y4=√3⋅y3−y2=√3⋅1−√3/2=√3/2;
- y5=√3⋅y4−y3=√3⋅√3/2−1=0.5;
- y6=√3⋅y5−y4=√3⋅1/2−√3/2=0;
- y7=√3⋅y6−y5=√3⋅0−1/2=−0.5.
(2) Durch Fortsetzung des rekursiven Algorithmuses erhält man für große ν–Werte: yν=yν−12 ⇒ T0/TA=12.
Versuchsdurchführung
- Wählen Sie zunächst die Nummer 1 ... 10 der zu bearbeitenden Aufgabe.
- Eine Aufgabenbeschreibung wird angezeigt. Die Parameterwerte sind angepasst.
- Lösung nach Drücken von „Musterlösung”.
- Die Nummer 0 entspricht einem „Reset”: Gleiche Einstellung wie beim Programmstart.
(1) Die Filterkoeffizienten seien a0=0.25, a1=0.5, a2=0.25, b1=b2=0. Um welches Filter handelt es sich?
Interpretieren Sie die Impulsantwort 〈hν〉, die Sprungantwort 〈σν〉 und die Rechteckantwort 〈ρ(2,8)ν〉 jeweils in zeitdiskreter Darstellung.
- Aufgrund der fehlenden b–Koeffizienten handelt es sich um ein nichtrekursives digitales Filter ⇒ FIR–Filter (Finite Impulse Response).
- Die Impulsantwort setzt sich aus M+1=3 Diraclinien zusammen: 〈hν〉=〈a0, a1, a2〉=〈0.25, 0.5, 0.25, 0, 0, 0,...〉.
- Die Sprungantwort lautet: 〈σν〉=〈0.25, 0.75, 1, 1, 1, 1,...〉. Der Endwert ergibt sich zu H(f=0)=a0+a1+a2=1.
- Die Verzerrungen erkennt man auch aus der Rechteckantwort 〈ρ(2,8)ν〉=〈0, 0,0.25, 0.75, 1, 1, 1, 1, 1, 0.75, 0.25, ...〉.
(2) Wie unterscheiden sich die Ergebnisse mit a2=−0.25?
- Mit H(f=0)=0.5 ergeben sich vergleichbare Folgen ⇒ Sprungantwort: 〈σν〉=〈0.25, 0.75, 0.5, 0.5, 0.5, 0.5,...〉.
(3) Nun seien die Filterkoeffizienten a0=1, b1=0.9 sowie a1=a2=b2=0. Um welches Filter handelt es sich? Interpretieren Sie 〈hν〉.
- Es handelt sich um ein IIR–Filter (Infinite Impulse Response) erster Ordnung. Es ist das zeitdiskrete Analogon zum RC–Tiefpass.
- Mit h0=1 gilt h1=h0⋅b0=0.9, h2=h1⋅b0=b20=0.81, h3=h2⋅b0=b30=0.729, usw. ⇒ 〈hν〉 reicht bis ins Unendliche.
- h(t)=e−t/T mit T: Schnittpunkt (Tangente bei t=0, Abszisse) ⇒ hν=h(ν⋅TA)=e−ν/(T/TA) mit T/TA=1/(h0−h1)=10.
- Unterschiedliche Werte für zeitkontinuierliche und zeitdiskrete Impulsantwort. Für Erstere ergeben sich die Werte 1.0, 0.9048, 0.8187 ...
(4) Die Filtereinstellung wird beibehalten. Interpretieren Sie die Sprungantwort 〈hν〉 und die Rechteckantwort 〈ρ(2,8)ν〉. Wie groß ist H(f=0)?
- Sprungantwort ist Integral über Impulsantwort: σ(t)=T⋅(1−e−t/T) ⇒ σν=10⋅(1−e−ν/10) ⇒ σ0=1, σ1=1.9, σ2=2.71, ...
- Für große ν–Werte tendiert die (zeitdiskrete) Sprungantwort gegen H(f=0)=10: σ40=9.867, σ50=9.954, σ∞=10.
- Die Rechteckantwort 〈ρ(2,8)ν〉 steigt mit einer Verzögerung von 2 wie 〈σν〉. Im Bereich ν≥8 fallen die ρν–Werte exponentiell ab.
(5) Wir betrachten weiterhin das Filter mit a0=1, b1=0.9, a1=a2=b2=0. Wie lautet 〈yν〉 für die Eingangsfolge 〈xν〉=〈1, 0,−0.5〉?
Hinweis: Die Aufgabe lässt sich ebenfalls mit diesem Programm lösen, obwohl die hier betrachtete Konstellation nicht direkt einstellbar ist.
- Man behilft sich, indem man a2=−0.5 setzt und dafür die Eingangsfolge auf 〈xν〉=〈1, 0, 0, ...〉 ⇒ „Diracfunktion” reduziert.
- Die Impulsantwort dieses Filters (mit a2=0) wurde in (3) ermittelt: h0=1, h1=0.9, h2=0.81, h3=0.729, h4=0.646.
- Somit ist das Ergebnis: y0=h0=1, y1=h1=0.9, y2=h2−h0/2=0.31, y3=h3−h1/2=0.279, y4=h4−h2/2=0.251.
- Vorsicht: Sprungantwort und Rechteckantwort beziehen sich nun auf das fiktive Filter (a2=−0.5), nicht auf das eigentliche Filter (a2=0).
(6) Betrachten und interpretieren Sie die Impulsanwort und die Sprungantwort für die Filterkoeffizienten a0=1, b1=1, a1=a2=b2=0.
- Das System ist instabil: Eine zeitdiskrete Diracfunktion am Eingang (bei t=0) bewirkt am Ausgang unendlich viele Diracs gleicher Höhe.
- Die zeitdiskrete Sprungfunktion am Eingang bewirkt am Ausgang unendlich viele Diracs mit monoton steigenden Gewichten (bis ins Unendliche).
(7) Betrachten und interpretieren Sie Impulsanwort und Sprungantwort für die Filterkoeffizienten a0=1, b1=−1, a1=a2=b2=0.
- Nun sind die Gewichte der Impulsantwort 〈hν〉 nicht konstant gleich 1, sondern alternierend ±1. Das System ist ebenfalls instabil.
- Bei 〈σν〉 wechseln sich dagegen die Gewichte alternierend zwischen 1 (bei geradem ν) und 0 (bei ungeradem ν) ab.
(8) Wir betrachten den „Sinusgenerator”: a1=0.5, b1=√3=1.732, b2=−1. Vergleichen Sie die Impulsantwort mit den Werten von Beispiel 4.
Wie beinflussen die Parameter a1 und b1 die Periodendauer T0/TA und die Amplitude A der Sinusfunktion?
- 〈xν〉=〈1,0,0,...〉 ⇒ 〈yν〉=〈0,0.5,0.866,1,0.866,0.5,0,−0.5,−0.866,−1,−0.866,−0.5,0,...〉 ⇒ Sinus, T0/TA=12, A=1.
- Die Vergrößerung/Verkleinerung von b1 führt zu größerer/kleinerem T0/TA und zu größerem/kleinerem A. Es muss b1<2 gelten.
- a1 beinflusst nur die Amplitude, nicht die Periode. Für a1 gibt es keine Wertebegrenzumg. Negatives a1 führt zur Minus–Sinusfunktion.
(9) Die Grundeinstellung bleibt erhalten. Mit welchen a1 und b1 ergibt sich eine Sinusfunktion mit Periodendauer T0/TA=16 und Amplitude A=1?
- Durch Probieren erreicht man mit b1=1.8478 genau die Periode T0/TA=16. Dadurch erhöht sich die Amplitude auf A=1.307.
- Die Anpassung des Parameters a1=0.5/1.307=0.3826 führt dann zur gewünschten Amplitude A=1.
- Oder man kann das auch wie im Beispiel berechnen: b1=2⋅cos(2π⋅TA/T0)=2⋅cos(π/8)=1.8478, a1=sin(π/8)=0.3827.
(10) Wir gehen weiter vom „Sinusgenerator” (9) aus. Welche Modifikationen muss man vornehmen, um damit einen „Cosinus” zu generieren?
- Mit a1=0.3826, b1=√3=1.8478, b2=−1 sowie 〈xν〉=〈1,1,1,...〉 ist die Folge 〈yν〉 das zeitdiskrete Analogon der Sprungantwort σ(t).
- Die Sprungantwort ist das Integral über sin(π⋅τ/8) in den Grenzen von τ=0 bis τ=t ⇒ σ(t)=−8/π⋅cos(π⋅τ/8)+1.
- Verändert man a1=0.3826 auf a1=−0.3826⋅π/8=0.1502, dann ist σ(t)=cos(π⋅τ/8)−1 ⇒ Werte zwischen 0 und −2.
- Würde man im Blockschaltbild noch zν=yν+1 hinzufügen, so hätte zν einen zeitdiskreten Cosinusverlauf mit T0/TA=16 und A=1.
Zur Handhabung des Applets
(A) Auswahl des Eingangssignals (Dirac, Sprung oder Rechteck)
(B) Einstellungen für Abszisse, Ordinate und Geschwindigkeit
(C) Bedienfeld (Start, Einzelschritt, Gesamt, Pause, Reset)
(D) Blockschaltbild mit schrittweiser Anpassung aller Werte
(E) Grafikfeld für Ausgabe der Ausgangsfolge
(F) Aufgabenauswahl
(G) Fragen und Lösungen
Über die Autoren
Dieses interaktive Berechnungstool wurde am Lehrstuhl für Nachrichtentechnik der Technischen Universität München konzipiert und realisiert.
- Die erste Version wurde 2005 von Bettina Hirner im Rahmen ihrer Diplomarbeit mit „FlashMX–Actionscript” erstellt (Betreuer: Günter Söder).
- 2020 wurde das Programm von André Schulz (Bachelorarbeit LB, Betreuer: Benedikt Leible und Tasnád Kernetzky ) unter „HTML5” neu gestaltet.