Contents
Programmbeschreibung
The applet should clarify the properties of digital filters, whereby we confine ourselves to filters of the order M=2. Both non-recursive filters (FIR, Finite Impulse Response) as well as recursive filters (IIR, Infinite Impulse Response).
The input signal x(t) is represented by the sequence 〈xν〉 of its samples, where xν stands for x(ν·TA). The output sequence 〈yν〉is calculated, i.e. the discrete-time representation of the output signal y(t).
- TA denotes the time interval between two samples.
- We also limit ourselves to causal signals and systems, which means that xν≡0 and yν≡0 for ν≤0.
It should also be noted that we denote the initial sequence 〈yν〉 as
(1) the discrete-time impulse response 〈hν〉 if the “discrete-time Dirac function” is present at the input: 〈xν〉=〈1, 0, 0, 0, 0, 0, 0,...〉,
(2) the time-discrete step response 〈σν〉 if the “time-discrete step function” is present at the input: 〈xν〉=〈1, 1, 1, 1, 1, 1, 1,...〉,
(3) the discrete-time square response 〈ρ(2,4)ν〉 if the “discrete-time rectangular function” is present at the input: 〈xν〉=〈0, 0, 1, 1, 1, 0, 0,...〉;
In quotation marks are the beginning of the ones (2) and the position of the last ones (4).
Theoretical background
General block diagram
Each signal x(t) can only be represented on a computer by the sequence 〈xν〉 of its samples, where xν stands for x(ν·TA). right|frame| Block diagram of a digital (IIR–) filter M–order
- 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 Recheckantwort 〈ρ(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
right |frame| Nichtrekursives digitales Filter (FIR–Filter) M–Ordnung 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 (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μ−ν.
- Zeitdikrete Impulsantwort mit 〈xν〉=〈1, 0, 0, 0, 0, 0, 0,...〉:
- 〈hμ〉=〈a0, a1, ..., aM〉.
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. right|frame|Nichtrekursives Filter
(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). Durch 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
right|frame|Rekursives Filter erster Ordnung 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 (Infinite Impulse Response) gebräuchlich. Dieses Filter 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).
left|frame| Rein rekursives Filter erster Ordnung
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) bis ins Unendliche erstrecken und bei b1>1 würde h(t) 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.
frame| Zeitdiskrete Impulsantwort | rechts 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
right|frame|Vorgeschlagene Filterstruktur ändern auf TA 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ν⟩ 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 a0 und a0 festelegt.
Beispiel 3: 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 gemäß den a–Koeffizienten 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 ist gleich dem Gleichsignalübertragungsfaktor H(f=0)=a0+a1+a2=1.
- Die Verzerrungen bei Anstieg und Abfall 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?
- Unter Berücksichtigung von 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 die Impulsantwort 〈hν〉.
- Es handelt sich um ein rekursives digitales Filter ⇒ IIR–Filter (Infinite Impulse Response) erster Ordnung. Es ist das zeitdiskrete Analogon zum RC–Tiefpass.
- Ausgehend von 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.
- Impulsantwort 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.
- Also: Die Werte der zeitkontinuierlichen unterscheiden sich von der zeitdiskreten Impulsantwort. Hierfür 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)ν〉. Welcher Wert ergibt sich für H(f=0)?
- Die Sprungantwort ist das Integral über die 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 den Gleichsignalübertragungsfaktor H(f=0)=10: σ40=9.867, σ50=9.954, σ∞=10.
- Die Rechteckantwort 〈ρ(2,8)ν〉 steigt mit einer Verzögerung von 2 in gleicher Weise an 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 die Ausgangsfolge 〈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 den Koeffizienten a2=−0.5 setzt und dafür die Eingangsfolge auf 〈xν〉=〈1, 0, 0, ...〉 ⇒ „Diracfunktion” reduziert.
- Die tatsächliche Impulsantwort dieses Filters (mit a2=0) wurde in Aufgabe (3) ermittelt: h0=1, h1=0.9, h2=0.81, h3=0.729, h4=0.646.
- Die Lösung dieser Aufgabe lautet somit: 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 (mit a2=−0.5) und nicht auf das eigentliche Filter (mit 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 (zur Zeit t=0) bewirkt im Ausgangsignal unendlich viele Diracs gleicher Höhe.
- Eine zeitdiskrete Sprungfunktion am Eingang bewirkt im Ausgangsignal unendlich viele Diracs mit monoton ansteigenden Gewichten (bis ins Unendliche).
(7) Betrachten und interpretieren Sie Impulsanwort und Sprungantwort für die Filterkoeffizienten a0=1, b1=−1, a1=a2=b2=0.
- Im Gegensatz zur Aufgabe (6) sind hier die Gewichte der Impulsantwort 〈hν〉 nicht konstant gleich 1, sondern alternierend ±1. Das System ist ebenfalls instabil.
- Bei der Sprunganwort 〈σν〉 wechseln sich dagegen die Gewichte alternierend zwischen 0 (bei geradem ν) und 1 (bei ungeradem ν) ab.
(8) Wir betrachten den „Sinusgenerator”: a1=0.5, b1=√3=1.732, b2=−1. Vergleichen Sie die Impulsantwort mit den berechneten Werten in 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, Periode T0/TA=12, Amplitude 1.
- Die Vergrößerung/Verkleinerung von b1 führt zur größeren/kleineren Periodendauer T0/TA und zur größeren/kleineren Amplitude A. Es muss b1<2 gelten.
- a1 beinflusst nur die Amplitude, nicht die Periodendauer. Für a1 gibt es keine Wertebegrenzumg. Bei negativem a1 ergibt sich die Minus–Sinusfunktion.
- Gibt es hier keine Diskrepanz zu h(t) wertkontinuierlich ???
(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 tatsächlich die Periodendauer T0/TA=16. Allerdings erhöht sich dadurch 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” aus. Welche Modifikationen muss man vornehmen, um damit einen „Cosinus” zu generieren?
- Mit a1=0.5, b1=√3=1.732, b2=−1 sowie 〈xν〉=〈1,1,1,...〉 ist die Ausgangsfolge 〈yν〉 das zeitdiskrete Analogon der Sprungantwort σ(t).
- Es fehlen noch einige Statements
Zur Handhabung des Applets
Ü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 Andre Schulz (Bachelorarbeit LB, Betreuer: Benedikt Leible und Tasnád Kernetzky ) unter „HTML5” neu gestaltet.