Sie sind auf Seite 1von 26

5

Analyse und Synthese adaptiver Filter

In diesem Kapitel werden Programme zur Analyse und Synthese adaptiver Filter aus dem Signal Processing Blockset (kurz SP-Blockset) und aus der Filter Design Toolbox vorgestellt und ihre Verwendung mit Beispielen erl utert. a Adaptive Filter sind Filter, deren Parameter sich an die Eigenschaften eines Signals oder Prozesses automatisch anpassen. Die Anpassung gehorcht in der Regel statistischen Gesetzen, entsprechend den Ver nderungen in den Systemen, in denen sie eingesetzt werden. Ada aptive Filter werden, um nur einige Anwendungen zu nennen, in der Kommunikationstechnik, Regelungs- und Steuerungstechnik, in der Schall- und Funkortung, der Medizin, Seismologie usw. eingesetzt. Sie sind zu einem wichtigen Bereich der digitalen Signalverarbeitung geworden und sind entsprechend ausgiebig in der Literatur behandelt, z.B. in [23], [24], [25], [75], [63].
Output Input Input Output Output Input Error Wts

LMS
Desired

Error Desired Wts

Block LMS

Fast Block LMS

Error Wts

Desired

LMS Filter

Block LMS Filter

Fast Block LMS Filter

Output Input In Out

RLS
Desired

Error Err Wts

Kalman
Taps

Adaptive Filters

RLS Filter

Kalman Adaptive Filter

Abb. 5.1: Adaptive Filter im SP-Blockset Abb. 5.1 zeigt die Bl cke der Unterbibliothek Adaptive Filters aus der Bibliothek Filtering o des SP-Blockset in Simulink. Die Adaption oder Anpassung der Filterparameter wird mit unterschiedlichen Verfahren durchgef hrt: in den ersten drei Bl cken mit dem LMS1 -Verfahren u o [23], [24], weiter mit dem RLS2 -Verfahren [47] oder mit dem Kalman-Algorithmus [20], [10]. In der neuesten Version der Filter Design Toolbox von MATLAB stehen eine Vielzahl von Funktionen zur Analyse und Synthese von adaptiven Filtern zur Verf gung. Sie sind alle in der u Objekt-Klasse adaptfilt zusammengefasst. Eine kleine Auswahl davon ist:

1 Least

2 Recursive

Mean Square Least Square

304

5 Analyse und Synthese adaptiver Filter

adaptfilt.lms % Direct-form least-mean-square FIR adaptive filter adaptfilt.nlms % Direct-form Normalized LMS FIR adaptive filter adaptfilt.dlms % Direct-form delayed LMS FIR adaptive filter adaptfilt.blms % Block LMS FIR adaptive filter adaptfilt.blmsfft % FFT-based block LMS FIR adaptive filter adaptfilt.ss adaptfilt.se adaptfilt.sd

% Direct-form sign-sign FIR adaptive filter % Direct-form sign-error FIR adaptive filter % Direct-form sign-data FIR adaptive filter

adaptfilt.filtxlms % Filtered-X LMS FIR adaptive filter adaptfilt.adjlms % Adjoint LMS FIR adaptive filter .......................

Dazu geh ren auch viele Methoden, mit deren Hilfe die Eigenschaften der adaptiven Filtern o ermittelt und/oder dargestellt werden k nnen. Einige davon sind: o
adaptfilt/coefficients %Instantaneous filter coefficients. adaptfilt/filter %Execute ("run") adaptive filter. adaptfilt/freqz %Instantaneous adaptive filter frequency response. adaptfilt/grpdelay %Instantaneous filter group-delay. adaptfilt/impz %Instantaneous adaptive filter impulse response. adaptfilt/info %Adaptive filter information. adaptfilt/isfir %True for FIR adaptive filters. adaptfilt/islinphase %True for linear phase adaptive filters. adaptfilt/ismaxphase %True for maximum-phase adaptive filters. .......................... %Instantaneous adaptive filter step response. adaptfilt/stepz adaptfilt/tf %Instantaneous adaptive filter transfer function. adaptfilt/zpk %Instantaneous adaptive filter zero/pole/gain. adaptfilt/zplane %Instantaneous adaptive filter Z-plane pole-zero plot.

In diesen Objekten werden folgende Verfahren in verschiedenen Formen eingesetzt: LMSVerfahren, RLS-Verfahren, Afne-Projection-Verfahren, Verfahren im Frequenzbereich und schlielich Lattice-basierte Verfahren [44]. Die grundlegenden Verfahren des LMS und RLS, die auch in den Bl cken des SP-Blockset implementiert sind, werden im Weiteren erkl rt und o a simuliert.

5.1

LMS-Verfahren

Es wird die allgemeine Anordnung aus Abb. 5.2 angenommen. Mit x[k] und y[k] werden die Signale am Eingang und Ausgang eines adaptiven FIR-Filters zum diskreten Zeitpunkt kTs bezeichnet. Sie sind durch die Faltung mit der Einheitspulsantwort des Filters miteinander verbunden: y[k] = h0 (k)x[k] + h1 (k)x[k 1] + h2 (k)x[k 2] + + hM1 (k)x[k M + 1] (5.1)

5.1 LMS-Verfahren Die M Koefzienten der Einheitspulsantwort des Filters werden mit h0 (k), h1 (k), h2 (k), . . . , hM1 (k)

305

bezeichnet. Man beachte, dass diese ebenfalls einen Zeitindex k tragen, also die Filterkoefzienten zum Zeitpunkt kTs darstellen, da hier adaptive, also zeitver nderliche Filter betrachtet a werden sollen. Ziel der Anordnung ist es, mit dem Ausgangssignal des Filters ein gew nschtes Signal, hier u mit d[k] notiert, nachzubilden. Dieses Signal sei vom Signal x[k] in einer nicht bekannten Art abh ngig und zus tzlich durch das sogenannte Messrauschen n[k] gest rt. Der Fehler der Ana a o passung ist durch die Differenz e[k] = d[k]y[k] gegeben. Er wird von der G te der Sch tzung u a der unbekannten Ubertragungsfunktion abh ngen und nat rlich auch von der Varianz des Messa u rauschens.
Unbekannte bertragung

(Messrauschen)

S
x[k] Adaptives FIR-Filter (Ausgang) y[k]

+ + n[k]
(gewnschter Ausgang)

d[k]

+ S
e[k] d[k]-y[k] (Fehler)

Anpassung der Koeffizienten

Zielfunktion Schtzung

Abb. 5.2: Blockschaltbild einer adaptiven Filterung Die Koefzienten des FIR-Filters sind so einzustellen, dass der Erwartungswert des quadratischen Fehlers als Zielfunktion minimiert wird:
hi (k)

min E{e[k]2 } = min E{(d[k] y[k])2 }


hi (k)

(5.2)

Die L sung dieser Optimierungsaufgabe f hrt im Falle station rer Prozesse zum sogenanno u a ten Wiener-Filter [58], [47]:
1 h = Rxx r xd

(5.3)

o und ist auch als MMSE3 -L sung bekannt. Dabei ist Rxx die Autokorrelationsmatrix des Eingangssignals, deniert als der Erwartungswert Rxx = E{xxT } und r ist der Kreuzkorrelationsvektor zwischen Eingang und gew nschtem Ausgang r = E{xd}. u Da die Sch tzung und Inversion der Autokorrelationsmatrix rechenaufw ndig ist, wird in a a der Praxis h ug die MMSE-L sung durch die LMS-L sung ersetzt. Bei Letzterer wird auf a o o
3 Minimum

Mean Square Error

306

5 Analyse und Synthese adaptiver Filter

die Erwartungswertbildung des quadratischen Fehlers verzichtet und als Zielfunktion dient der laufende (also stochastische) quadratische Fehler e[k]2 : e[k]2 =(d[k] y[k])2 = [d[k] (h0 (k)x[k] + h1 (k)x[k 1] + + hM (k)x[k M ])]2 (5.4)

Die Minimierung dieser Zielfunktion nach dem Vektor der Koefzienten h(k) erfolgt in einem schrittweisen Gradientenabstiegsverfahren: h(k + 1) = h(k) [e[k]2 ] h(k) (5.5)

Die partielle Ableitung stellt den Gradienten der Zielfunktion dar und ist die Gr e des Ano passungsschrittes. Die M Elemente des Vektors, der den Gradienten darstellt, sind: [e[k]2 ] = 2e[k]x[k i] hi (k) i = 0, 1, 2, . . . , M 1 (5.6)

Wenn die Eingangswerte x[ki], i = 0, 1, 2, . . . , M 1 auch in einem Vektor zusammengefasst werden, dann ist die Anpassung nach dem LMS-Verfahren durch h(k + 1) = h(k) + 2e[k]x[k] (5.7)

gegeben. Zusammenfassend besteht das LMS-Verfahren aus folgenden Schritten. Zum Zeitpunkt kTs werden folgende Gr en als gegeben betrachtet: o x[k] d[k] h(k) Eingangsvektor gew nschter Ausgang u Vektor der Koefzienten aus der vorherigen Anpassung Anpassungsschritt

(5.8)

Mit geeignet gew hlten Anfangswerten f r x[0] und h[0] sind in jedem Aktualisierungsschritt a u dann folgende Berechnungen f r die Anpassung der Filterkoefzienten h(k) durchzuf hren: u u y[k] =hT (k)x[k] e(k) =d[k] y[k] h(k + 1) =h(k) + 2e[k]x[k] F r die Gr e der Schrittweite gilt die Bedingung: u o 0< 1
M+1 n=1

(5.9)

E{|xn [k]|2 }

(5.10)

Bei kleinen Schrittweiten ist die Konvergenz gesichert, die Anpassung dauert aber l nger. Bei a gr eren Werten konvergiert das Verfahren schneller, es entstehen aber Schwankungen der Koo efzienten in der Umgebung der optimalen Werte, die dazu f hren k nnen, dass der Endwert u o des mittleren quadratischen Fehlers gr er als im optimalen Fall ist. o

5.1 LMS-Verfahren

307

Die Wahl und Auswirkungen des Parameters sind ausf hrlich in der Literatur beschrieu ben [23], [25]. Weiterhin ist zu beachten, dass der Wahl der Anzahl M der Koefzienten des adaptiven FIR-Filters eine entscheidende Bedeutung zukommt. Wird das adaptive FIR-Filter mit ungen gend Koefzienten gew hlt, so wird der verbleibende quadratische Fehler gr er u a o sein. Ebenfalls zur Vergr erung des Fehlers f hrt ein gr eres Messrauschen sowie eine geo u o ringe Korrelation zwischen x[k] und d[k]. Die Wahl einer zu groen Anzahl von Koefzienten f r das adaptive Filter f hrt zu einer langsameren Konvergenz des Verfahrens. Ganz allgemein u u gilt jedoch, dass die Konvergenzgeschwindigkeit mageblich von den Eigenwerten i der Kovarianzmatrix Rxx beeinusst wird. Wenn das Verh ltnis zwischen max und min gro ist, a verschlechtert sich die Konvergenz [24]. Der LMS-Algorithmus benutzt eine verrauschte Sch tzung des Gradientenvektors. Verbesa serungen erzielt man mit einer Kombination von LMS und MMSE-Algorithmus, d.h. dass die Anpassung der Koefzienten nach mehreren Schritten mit einem gesch tzten Erwartungswert a des Gradienten durchgef hrt wird. Dieses Vorgehen ist in den Bl cken Block LMS Filter und u o Fast Block LMS Filter aus Abb. 5.1 realisiert. Abb. 5.3 zeigt, wie die Struktur aus Abb. 5.2 in den Bl cken aus Abb. 5.1 eingebettet ist. o

Input

x[k]

Adaptives FIR-Filter

y[k] (Ausgang) e[k]= d[k]-y[k] (Fehler) Zielfunktion Sch tzung

Output Error

(Messrauschen) n[k]

Anpassung der Koeffizienten

d[k]

Desired

+
Wts (Taps) Angepasste Koeffizienten (gewnschter Ausgang)

Abb. 5.3: Blockschaltbild der adaptiven Identikation

Experiment 5.1: Identikation mit dem LMS-Verfahren


Die einfachste Anwendung des LMS-Verfahrens ist die Identikation eines Systems, das mit einem FIR-Filter exakt beschrieben werden kann. Um den Algorithmus besser zu verstehen, wird er in diesem Beispiel aus einfachen Simulink-Bl cken aufgebaut, ohne die fertigen o Simulink-Realisierungen aus Abb. 5.1 zu verwenden. Das Blockschaltbild der adaptiven Identikation entspricht der Struktur aus Abb. 5.2. Das Modell adaptiv2.mdl, das in Abb. 5.4 dargestellt ist, benutzt als Eingangssequenz ein diskretes unkorreliertes Signal (weies Rauschen). Mit dem Buffer-Block wird der Eingangsvektor der L nge M erzeugt. Da im LMS-Verfahren die Abtastwerte durch die zu verwendenden Veka toren durchgeschoben werden, ist als Parameter Buffer Overlap der Wert M 1 einzutragen.

308

5 Analyse und Synthese adaptiver Filter

m_noise Random Number1 h 1 Random Number Discrete Filter Unbekanntes System Scope x[k]*h[k] Messrauschen Gain n[k] To Workspace1 e[k] e

x[k]
[10x1]

To Sample

[10x1] [10x1] [10x1]

Buffer Scope1
[10x1]

Frame Status Conversion1

Dot Product h(k)


[10x1]

Product h(k+1)
[10x1] [10x1] [10x1] [10x1]

1 z Unit Delay

Constant mu Schrittweite der Anpassung

To Workspace hfilter
[10x1]

Wird mit dem Programm adaptiv_2.m parametriert

Abb. 5.4: Modell der adaptiven Identikation (adaptiv 2.m, adaptiv2.mdl) Die L nge der Vektoren ist gleich der Anzahl der Koefzienten des adaptiven Filters und sie a wird f r die ersten Versuche gleich der L nge des zu identizierenden Filters (in diesem Beiu a spiel M = 10) angenommen. Der Frame-Ausgang des Buffer-Blocks muss in Sample-Daten umgewandelt werden4 , weil die nachfolgenden Simulink-Bl cke nur Daten diesen Typs verarbeiten k nnen. Der Block o o Dot Product realisiert das Skalarprodukt y[k] = xT [k]h(k). Die Koefzientenadaption nach Gl. (5.5) oder Gl. (5.7) wird mit den Bl cken Unit Delay und Product realisiert. o Das Modell wird mit dem Programm adaptiv_2.m initialisiert und aufgerufen. Die wichtigen Signale werden in den To Workspace-Bl cken, die als Array-Senken initialisiert sind, o gespeichert. Das Feld hfilter (der Senke To Workspace) hat die Dimension 10 1 2500 und enth lt die M = 10 variablen Koefzienten des adaptiven Filters f r insgesamt 2500 Ana u passungsschritte. Im Programm werden durch
hf = squeeze(hfilter);

% unntige Dimensionen entfernen o

die nicht ben tigte zweite Dimensionen dieses Feldes (ein sogenanntes singleton bestehend aus o einer Spalte) entfernt. Das unbekannte FIR-Filter wird mit folgenden Koefzienten initialisiert: h = [1 2 3 4 5 6 7 8 9 10]. Wie in Abb. 5.5 rechts zu sehen ist, werden diese Werte nach ca. 500 Schritten identiziert. Wegen des zugef gten Messrauschens kann der Endfehler u (Abb. 5.5 links) nicht zu null werden. Betrachtet man die Koefzienten des adaptiven Filters, so wird man feststellen, dass diese gegen ber den zu identizierenden Koefzienten h gespiegelt sind. Das liegt an der Reihenu folge, in der die Daten von Simulink am Ausgang des Buffer-Blocks zur Verf gung gestellt u
4 Zu

Frame- und Sample-Daten siehe Abschnitt 7.2.1.

5.1 LMS-Verfahren
Fehler der Anpassung (Messrauschen = 0.2) 40 30 20 10 0 10 20 30 0 500 1000 1500 Schritte 2000 2500 Identifizierte Koeffizienten (mu = 0.01) 12 10 8 6 4 2 0 2 0 500 1000 1500 Schritte 2000 2500

309

Abb. 5.5: Fehler und angepasste Koefzienten (adaptiv 2.m, adaptiv2.mdl) werden. Alternativ kann man den Vektor am Ausgang des Buffer-Blocks mit einem Flip-Block drehen. Der Leser wird ermutigt, mit verschiedenen Parametern zu experimentieren. So kann man z.B. die Schrittweite verkleinern oder vergr ern, die Leistung des Messrauschens erh hen o o oder die Anzahl der Koefzienten des adaptiven Filters ungleich der Koefzientenzahl des zu identizierenden Filters w hlen. a Im Programm adaptiv_3.m und dem Modell adaptiv3.mdl wird dasselbe Modell mit farbigem Rauschen, das uber eine Tiefpasslterung des weien Rauschens erzeugt wird, angeregt. Die Konvergenz und die Anpassung wird schwieriger, man ben tigt mehr Schritte o und die Streuung der identizierten Koefzienten ist gr er. Das kann man sich anschaulich o so erkl ren, dass bei Anregung mit farbigem Rauschen die Ausleuchtung der zu sch tzenden a a Ubertragungsfunktion nicht gleichm ig uber alle Frequenzen wie bei der Verwendung von a weiem Rauschen erfolgt.

Experiment 5.2: Adaptive St runterdruckung o


Um zu zeigen, wie adaptive Filter und das LMS-Verfahren zur St runterdr ckung eingeo u setzt werden k nnen, wird ein Simulationsmodell vorgestellt, mit dem ein EKG5 -Signal von o Netzbrumm befreit werden soll. Abb. 5.6 zeigt das Blockschaltbild der St runterdr ckung mit einem adaptiven FIR-Filter. o u Die St rung, hier als Netzbrumm x[k] angenommen, breitet sich uber den menschlichen K rper o o aus, dessen Ubertragungsfunktion nicht bekannt ist. Sie ist hier mit s[k] bezeichnet und st rt o die EKG-Signale z[k]. Das messbare EKG-Signal d[k] ist die Summe aus St rung durch Netzo brumm s[k], EKG-Nutzsignal z[k] und Messrauschen. Es spielt die Rolle des gew nschten u Ausgangs in der allgemeinen Struktur des LMS-Verfahrens, obwohl hier die Bezeichnung nicht ganz zutreffend ist. In der Applikation ist schlielich das Signal z[k] gew nscht. u Das adaptive FIR-Filter muss jetzt die Ubertragungsfunktion des K rpers nachbilden, so o dass nach der Anpassung der Ausgang y[k] gleich der nicht messbaren St rung s[k] wird. Die o Differenz e[k] = d[k] y[k] = (s[k] + z[k] + n[k]) y[k]
5 Elektrokardiogramm

z[k],

wenn

y[k]

s[k]

310

5 Analyse und Synthese adaptiver Filter

Nicht messbares EKG Nutzsignal Krper bertragungsfunktion fr die Strung Unbekannter Strungspfad z[k] s[k]

+ S S + +
(Messrauschen) n[k]

x[k] Netzbrumm Adaptives FIR Filter

(Ausgang) y[k]

+ d[k] S

Ausgangssignal e[k]= d[k] y[k] (Fehler)

Anpassung der Koeffizienten

Zielfunktion Schtzung

Abb. 5.6: Blockschaltbild der St runterdr ckung mit einem adaptiven FIR-Filter o u enth lt dann nur das Nutzsignal z[k]. Mit anderen Worten, das Ausgangssignal ist der Fehler a der allgemeinen adaptiven Struktur. Allerdings kann die Kompensation der St rungen nur dann o funktionieren, wenn das Nutzsignal z[k] nicht mit dem Netzbrumm x[k] korreliert ist, sonst wird auch der mit x[k] korrelierte Anteil von z[k] kompensiert. Im Modell aus Abb. 5.7 (oben) wird jetzt der LMS Filter-Block aus dem SP-Blockset/Filtering/Adaptive Filters eingesetzt. Auf den Input-Eingang des Modells wird ein Muster der Eingangsst rung gelegt. Es entspricht dem Signal x[k] aus dem Blockschaltbild in Abb. 5.6. In o der Praxis erh lt man dieses Signal mittels eines Transformators aus der Versorgungsspannung a des offentlichen Stromnetzes. Der Eingang Desired des LMS-Blocks wird mit dem messbaren EKG-Signal gespeist, also mit dem mit der St rung s[k] uberlagerten Nutzsignal6 z[k]. Das gest rte EKG-Signal ist links o o oben im Fenster der Signale dargestellt. Wie man sieht, ist der Brummanteil betr chtlich. a Als (f r das adaptive Filter unbekanntes) Modell der Ubertragungsfunktion des K rpers u o wurde in der Simulation beispielhaft ein Tiefpasslter erster Ordnung mit einer Durchlassfrequenz fg = 50/(2) 8 Hz verwendet. Das Brummsignal von 50 Hz wird mit dieser Ubertragungsfunktion ged mpft, phasenverschoben und dem Nutzsignal uberlagert. a Nach der Anpassung kompensiert das Ausgangssignal des adaptiven Filters den Netzbrumm, der sich uber den K rper ausgebreitet hat. Der gesch tzte Netzbrumm steht am Aus o a gang Output des LMS-Blocks zur Verf gung und wird mit dem Oszilloskop-Block angezeigt. u Er ist in diesem Fall f r die Anwendung ohne praktische Bedeutung. Die Anwendung veru wendet das Fehlersignal der Anpassung (zug nglich am Error-Ausgang), in dem das vom ada aptiven Filter nicht nachgebildete EKG-Signal verbleibt. Die Signale des Output und des Er6 Die Begriffe St rung und Nutzsignal sind hier in der Terminologie der Anwendung verwendet. Es sei nocho mals daran erinnert, dass in der Terminologie des adaptiven Filters die Bedeutungen von St rung und Nutzsignal o vertauscht sind.

5.1 LMS-Verfahren
Repeating Sequence

311

Nicht messbares Nutzsignal Output Input

Krperfunktion 100 0.02s+1 Sine Wave2 Transfer Fcn ZeroOrder Hold1

Normalized LMS Error Wts Scope koeff To Workspace1

Desired LMS Filter

50 Hz Brumm ZeroOrder Hold Messbares Signal

y Scope1 To Workspace

Durch Brumm gestoertes EKG 30 20 10 10 0 10 10 20 30 0 1000 2000 Zeit in ms 3000 4000 20 0 0 20

Gele nte Stoerung

1000

2000 Zeit in ms

3000

4000

Adaptiv entstoertes EKG 30 20 10 0 10 20 1.5 1 0.5 0 0.5 1

Filterkoeffizienten

1000

2000 Zeit in ms

3000

4000

10

20 n

30

40

Abb. 5.7: Modell und Signale der adaptiven Filterung (adaptiv 4.m, adaptiv4.mdl) ror-Ausgangs sind in Abb. 5.7 mit der Uberschrift Gelernte St rung und Adaptiv entst rtes o o EKG dargestellt. Man erkennt den Einschwingvorgang der Anpassung und danach das EKGSignal ohne St rung. o Die durch Anpassung eingestellten Koefzienten des FIR-Filters, entsprechend der Einheitspulsantwort, sind ebenfalls in Abb. 5.7 dargestellt. Man erkennt, dass das angepasste FIRFilter ein Bandpasslter ist. Seine Mittenfrequenz betr gt 50 Hz. Die Koefzienten werden am a Ausgang Wts geliefert und in der Senke To Workspace als koeff zu MATLAB ubertragen. Das Modell wird im Programm adaptiv_4.m initialisiert und aufgerufen. Mit dem Block Repeating Sequence wird das EKG-Signal aus St tzpunkten erzeugt: u

312

5 Analyse und Synthese adaptiver Filter

xs = [0 -2 -4 -5 -4 -2 0 1 3 5 6 5 3 1,... randn(1,10)*0.1, -0.2 -0.3 -0.4 -0.5 -0.6 -0.7 -1,... -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1 1.2 1 0.8 0.6,... 0.4 0.2 0 0 0 -0.2 -0.5 -0.4 -0.2 0 0 0 0]; xs=interp1(0:length(xs)-1,xs,0:0.25:length(xs)-1,spline); ts = (0:length(xs)-1)/250;

Die Periode ist ungef hr eine Sekunde, entsprechend 60 Herzschl gen/Minute. a a Man kann auch Ubertragungsfunktionen h herer Ordnung f r den menschlichen K rper o u o einsetzen und mit den Anpassungsparametern (wie z.B. mu, der f r die Schrittweite der Anu passung steht) experimentieren. Der Block LMS aus Simulink unterst tzt noch drei weitere, vereinfachte Varianten des u LMS-Verfahrens. Dabei wird statt des Gradienten nur dessen Richtung in der Formel zur Anpassung der Koefzienten benutzt. Die erste Form, die mit dem Parameter Algorithm: auf SignError LMS eingestellt wird, implementiert die Beziehung: h(k) = h(k 1) + 2 sign(e[k]) x[k] (5.11)

Wie man sieht, wird nur das Vorzeichen des Fehlers verwendet, was zu einer Reduzierung des Aufwands f hrt. u Eine weitere Vereinfachung f r die Anpassung der Koefzienten benutzt das Vorzeichen u des entsprechenden Elements des Eingangsvektors: hi (k) =hi (k 1) + 2 e[k] sign(x[k i]) i = 0, 1, 2, 3, . . . , M 1 (5.12)

Der dazugeh rende Algorithmus heit Sign-Data LMS und der Aufwand ist ebenfalls geringer o als beim LMS-Algorithmus. In der letzten Form mit der Bezeichnung Sign-Sign LMS werden sowohl das Vorzeichen des Fehlers als auch das Vorzeichen des Elementes des Eingangsvektors verwendet: hi (k) =hi (k 1) + 2 sign(e[k]) sign(x[k i]) i = 0, 1, 2, 3, . . . , M 1 (5.13)

F r einfache F lle wie der vorliegende Fall einer Unterdr ckung von Netzbrumm, ergeben u a u auch diese einfacheren Formen brauchbare Ergebnisse. Der Leser wird ermutigt, den Block LMS Filter1 mit diesen Formen zu parametrieren und ihre Leistungsf higkeiten zu vergleichen. a Eine etwas schwierigere Aufgabe ist in Abb. 5.8 dargestellt. Ziel ist es, die EKG-Signale des F tus zu erfassen und dabei die St rung durch die EKG-Signale der Mutter auszublenden. Das o o messbare EKG-Signal des F tus ist im Wesentlichen durch das EKG-Signal x[k] der Mutter o gest rt. Dieses Signal verbreitet sich uber einen unbekannten Pfad vom Herz der Mutter zur o Messstelle und bildet die St rung s[k]. o Das adaptive FIR-Filter muss diesen Pfad nachbilden, so dass der Ausgang y[k] s[k] durch Subtraktion aus d[k] zum gew nschten, nicht direkt messbaren EKG-Signal des F tus u o f hrt. u Das Modell adaptiv5.mdl f r diesen Fall, das uber adaptiv_5.m initialisiert und u aufgerufen wird, ist in Abb. 5.9 oben dargestellt. Die EKG-Signale der Mutter und des F tus o d rfen nicht korreliert sein, sonst w rden beide unterdr ckt werden. Die beiden Signale unteru u u scheiden sich nun nicht mehr durch ihre Form, sondern nur noch durch ihre Pulsdauer.

5.2 RLS-Verfahren

313

Nicht messbares EKG Signal des Ftus Krper bertragungsfunktion fr die Strung Unbekannter Strungspfad z[k] s[k] s[k] +

x[k]

S
+

S
z[k]+s[k] (Ausgang) x[k] Adaptives FIR Filter y[k]

n[k] (Messrauschen) + Messbares EKG Signal des Ftus mit Strung durch das EKG Signal der Mutter Ausgangssignal

d[k] +

- S

e[k]= d[k] y[k] EKG Signale der Mutter (Strung) Anpassung der Koeffizienten Zielfunktion Schtzung (Fehler)

Abb. 5.8: EKG-St runterdr ckung mit einem adaptiven FIR-Filter o u Als Ubertragungspfad der St rung wurde in der Simulation ein FIR-Tiefpasslter mit 32 o Koefzienten benutzt. Man kann dann leicht feststellen, ob das adaptive Filter die Koefzien ten erlernt. Die Simulation zeigt, dass der Algorithmus nicht in der Lage ist, den Ubertragungspfad zu sch tzen, wenn lediglich das EKG-Signal der Mutter als Eingangsgr e verwendet a o wird. F gt man dem Signal jedoch das Messrauschen (mit den Bl cken Random Number und u o Gain) hinzu, so kann der Algorithmus mit guter N hreung den Ubertragungspfad der St rung a o sch tzen. Die Einheitspulsantwort des angepassten Filters ist rechts unten in Abb. 5.9 dargea stellt und die gelernte St rung ist dar ber dargestellt. Einen kleinen Ausschnitt des gemesseo u nen, gest rten EKG-Signals ist links oben und darunter ist das Nutzsignal, das extrahiert wurde, o dargestellt. Das extrahierte EKG-Signal des F tus enth lt nat rlich noch das (in der Simulation hino a u zugef gte) Messrauschen. Dieses ist statistisch unabh ngig von den EKG-Signalen der Mutter u a und kann durch das adaptive Filter nicht gesch tzt werden. Unbeschadet dessen wurde aber das a Filter des St rpfades richtig gesch tzt. Die Sch tzung funktioniert mit Messrauschen besser als o a a ohne dieses, weil das Messrauschen es dem Gradientenabstiegsverfahren des LMS erm glicht, o lokale Minima wieder zu verlassen.

5.2

RLS-Verfahren

Um eine bessere Konvergenz als beim LMS-Verfahren zu erhalten, muss man aufw ndia gere Algorithmen einsetzen. Im LS7 -Verfahren wird die Kovarianzmatrix der Eingangssequenz gesch tzt und dann zur Anpassung eingesetzt. a
7 Least

Square, zu deutsch: kleinster quadratischer Fehler

314
Random Number 1 z[k] Gain Repeating Sequence1 Ftus EKG x[k] ZeroOrder Hold3 d[k] fir1(32,0.45) 1 Mutter EKG ZeroOrder Hold2 Discrete Filter s[k] Krperfunktion Repeating Sequence

5 Analyse und Synthese adaptiver Filter

Nicht messbares Nutzsignal y[k]


Output Input

Normalized Error LMS


Wts

e[k]

Desired

[32x1]

Scope koeff To Workspace1

LMS Filter

[32x ]

Messbares Signal

y To Workspace

Scope1

Durch die Mutter gestoertes EKG 10 10

Gelernte S oerung

10

1.6

1.7 1.8 Zeit in ms

1.9 x 10

2
4

10

1.6

1.7 1.8 Zeit in ms Filterkoeffizienten

1.9 x 10

2
4

Adaptiv Ents oertes EKG 4 0.2 0.15 0.1 0 0.05 2 0 0.05

1.6

1.7 1.8 Zeit in ms

1.9 x 10

2
4

10

20 n

30

40

Abb. 5.9: Modell und Signale der adaptiven Filterung (adaptiv 5.m, adaptiv5.mdl)

Man geht von n + 1 Werten des Eingangsvektors x[k], k = 0, 1, 2, . . . , n,

5.2 RLS-Verfahren

315

aus, die mit derselben Einheitspulsantwort h(n) des adaptiven Filters zur Berechnung von n Fehlern e[k], k = 0, 1, 2, . . . , n herangezogen werden: e[n] d[n] e[n 1] d[n 1] = . . . . . . e[0] d[0] (5.14) h0 (n) x[n] x[n 1] . . . x[n M + 1] x[M ] h1 (n) x[n 1] x[n 2] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . x[0] x[1] . . . x[M + 1] hM1 (n) Ohne Einschr nkung der Allgemeinheit kann man annehmen, dass x[k] = 0 f r k < 0 und dass a u n M . In Matrixform wird die Fehlergleichung wie folgt geschrieben: en = dn X n h(n) (5.15)

Als Zielfunktion wird nun die gewichtete Summe der Elemente des Fehlervektors gew hlt: a
n

Jn (hn ) =
k=0

wnk |e[k]|2 = (dn X n h(n))T W (dn X n h(n))

(5.16)

Die Matrix W ist diagonal mit den Diagonalelementen 1, w, . . . , wn1 , wn . Mit diesen Faktoren kann man die relative Wichtigkeit des Fehlers einstellen, z.B. mit der Wahl w < 1 kann man Fehler aus der Vergangenheit weniger stark gewichten. In der Literatur wird der Faktor w auch als forgetting factor bezeichnet. Die Minimierung der Zielfunktion uber Jn (hn ) =0 hn f hrt zu einem Satz von linearen Gleichungen, die in Matrixform durch u 2X T W dn + 2X T W X n h(n) = 0 n n gegeben sind. Daraus folgt die L sung: o h(n) = [X T W X n ]1 X T W dn n (5.18) (5.17)

Es ist leicht zu sehen, dass X T W X n mit w = 1 die Autokorrelationsmatrix der Eingangsn u sequenz ist und X T W dn der Kreuzkorrelationsvektor zwischen Eingang und gew nschtem Ausgang ist. Man erh lt dann formal wieder das bekannte Wiener-Filter oder die MMSEa L sung, mit dem Unterschied, dass beim Wiener-Filter Scharmittelwerte zur Berechnung der o Korrelationen zu verwenden sind, w hrend bei der LS-L sung Zeitmittelwerte verwendet wera o den. F r ergodische Signale sind die beiden L sungen also aquivalent. u o Gl. (5.18) wird wegen des Aufwands selten in dieser Form gel st. Es gibt mehrere rekursive o L sungen, die alle unter den Namen RLS8 -Verfahren bekannt sind [50], [36], [47]. Eine der o L sungen, die im Block RLS Adaptive Filter implementiert ist, wird kurz erl utert. o a
8 Recursive

Least Square

316

5 Analyse und Synthese adaptiver Filter

Zur Vereinfachung der Schreibweise wird die Matrix P (n) P (n) = [X T W X n ]1 n (5.19) eingef hrt. Die rekursive Form zur Anpassung der Koefzienten aus h(n) mit einem neuen u Eingangswert x[n] wird zu: w1 P (n 1)x[n] K(n) = 1 + w1 x[n]T P (n 1)x[n] y[n] =h(n 1)T x[n] e[n] =d[n] y[n] h(n) =h(n 1) + K(n)e[n] P (n) =[I K(n)x(n)T ]P (n 1)/w Dabei sind x[n] = [x[n], x[n 1], . . . , x[n M + 1]]T der Eingangsvektor und I die Einheitsmatrix der Dimension M xM . Im Modell adaptiv6.mdl, das mit dem Programm adaptiv_6.m initialisiert und aufgerufen wird, wird das Experiment aus Abb. 5.8 bzw. Abb. 5.9 mit einem RLS-Filter wiederholt. Die Anpassung erfolgt viel rascher und das adaptive Filter n hert auch besser das den a Ubertragungspfad simulierende Filter an. Der Block RLS Filter verwendet die Rekursion nach den Gleichungen (5.20). F r eine sp tere Implementierung auf einem DSP sind Simulationen in MATLAB oftmals u a hilfreicher als Simulationen in Simulink, da die MATLAB-Skriptsprache der Programmiersprache C ahnlich ist. Darum soll hier beispielhaft auch eine MATLAB-Implementierung der nicht rekursiven L sung nach Gl. (5.18) sowie der rekursiven L sung nach Gl. (5.20) angegeben o o werden. Im Programm ls_1.m ist die nicht rekursive L sung f r die Identikation eines FIRo u Filters implementiert. Das zu identizierende Filter sei ein FIR-Tiefpasslter der L nge 13 der a Form:
nf = 13; h = fir1(nf-1, 0.35); % oder %h = (0.8.(0:nf-1));

(5.20)

F r das adaptive FIR-Filter wird eine L nge M = 15 > 13 gew hlt. Die Matrix X, die u a a der Matrix Xn aus Gl. (5.14) entspricht, wird mit der Programmsequenz
nx = 500; x = randn(nx,1); xrot = flipud(x); M = 15; % Geschtzte Lnge des Filters M a a X = zeros(nx,M); for k = 1:M X(:,k) = [xrot(k:nx); zeros(k-1,1)]; end;

gebildet. Der gemessene Ausgang des zu identizierenden Filters kann auch mit Messrauschen versehen werden:
d = filter(h,1,x); d = flipud(d); % Varianz des Mesrauschens noise = 0.1; randn(state, 12753); d = d + sqrt(noise)*randn(length(d),1); % Ausgang

5.2 RLS-Verfahren
Identifiziertes Filter (Messrauschen 2 = 0.1) 0.4 0.3 0.2 0.1 0 0.1

317

Korrektes Filter 0.4 0.3 0.2 0.1 0 0.1

5 i

10

15

5 i

10

15

Abb. 5.10: Einheitspulsantworten der Filter (ls 1.m) Die Umkehrungen mit flipud wurden eingef hrt, um genau die Struktur der Matrix aus u Gl. (5.14) zu erhalten. Die L sung nach Gl. (5.18) ergibt sich schlielich durch: o
w = 1; W = diag(w.(0:nx-1)); hg = inv(X*W*X)*X*W*d;

% forgetting factor % Gewichtungsmatrix % LS-Lsung o

Abb. 5.10 zeigt links die Einheitspulsantwort des zu sch tzenden Filters und rechts die a des adaptierten Filters bei Messrauschen der Varianz 2 = 0.1. Es wurden 500 Werte f r die u Eingangssequenz verwendet. Wie erw hnt, wird die L sung in dieser Form selten angewandt. In der numerischen Mathea o matik gibt es andere Methoden zur L sung der Gl. (5.18), die auch f r den Fall, dass die Matrix o u X n nicht ihren maximalen Rang gleich M besitzt, einsetzbar sind. In [50] wird z.B. das sehr leistungsf hige Verfahren der Singular-Value Decomposition f r das LS-Problem beschrieben. a u Im Programm ls_2.m wird die rekursive L sung nach den Gleichungen (5.20) implemeno tiert. Die Initialisierung wird mit
nf = 13; hr = fir1(nf-1, 0.35); % oder %hr = (0.8.(0:nf-1)); M = 15; h = zeros(M,1); P = eye(M); % Anfangswerte w = 1; % forgetting Faktor x_temp1 = zeros(nf,1); % Fr das korrekte Filter u x_temp = zeros(M,1); % Fr das zu identif. Filter u noise = 0.01; % Varianz des Messrauschens

durchgef hrt. Die rekursive Form der L sung erfolgt entsprechend den Gleichungen (5.20): u o
nx = 500; for n = 1:nx xn = randn(1); % Laufender Eingang x_temp = [xn; x_temp(1:end-1)]; % Aktualisierung % gewnschter Ausgang u x_temp1 = [xn; x_temp1(1:end-1)]; % Aktualisierung d = hr*x_temp1; % mit Messrauschen d = d + sqrt(noise)*randn(1); K = P*x_temp/(w+x_temp*P*x_temp);

318
y e h P end; = = = = h*x_temp; d-y; h + K*e; (eye(M)-K*x_temp)*P/w;

5 Analyse und Synthese adaptiver Filter

F r dieses, auch als RLS-Covariance-Algorithmus bezeichnete Verfahren gibt es in der Liu teratur [50] den Hinweis, dass bei einer Implementierung im Festkomma-Format mit weniger als 16 Bit sich die numerischen Fehler akkumulieren und zur Divergenz des Verfahrens f hren. u Dieses kann in der vorliegenden Simulation wegen der hohen Genauigkeit der Zahlendarstellung in MATLAB nat rlich nicht beobachtet werden. u Eine andere rekursive L sung f r Gl. (5.18) ist die als RLS-Information-Algorithmus beo u kannte Form: P 1 (n) =P 1 (n 1) + x[n]wx[n]T K(n) =P (n)x[n]w y[n] =h(n 1)T x[n] e[n] =d[n] y[n] h(n) =h(n 1) + K(n)e[n] (5.21)

Sie besitzt ein besseres Konvergenzverhalten und ist robuster gegen numerische Fehler, hat aber den Nachteil, dass zur Berechnung des Faktors K(n) die Inversion der Matrix P (n) erforderlich ist. Im Programm ls_3.m ist dieser Algorithmus implementiert. Das Programm unterscheidet sich von dem Programm ls_2.m nur durch die Rekursion:
nx = 500; for n = 1:nx xn = randn(1); % Laufender Eingang x_temp = [xn; x_temp(1:end-1)]; % Aktualisierung Pinv = Pinv + x_temp*w*x_temp; % !!!! groer Aufwand P = inv(Pinv); % gewnschter Ausgang u x_temp1 = [xn; x_temp1(1:end-1)]; d = hr*x_temp1; % mit Messrauschen d = d + sqrt(noise)*randn(1); K = P*x_temp*w; y = h*x_temp; e = d-y; h = h + K*e; end;

Denkbar ist auch eine Kombination der beiden Algorithmen. Im Programm ls_4.m werden die ersten 20 Adaptionsschritte mit dem RLS-Information-Algorithmus durchgef hrt, um u in die N he der richtigen L sung zu gelangen, danach wird zur Rechenzeitersparnis mit dem a o RLS-Covariance-Algorithmus fortgefahren.

5.3 Kalman-Filter

319

5.3

Kalman-Filter

Das Kalman-Filter wurde in den 1960er Jahren von dem ungarisch-amerikanischen Mathematiker Rudolf Kalman entwickelt und ist ein rekursives Filter zur Sch tzung des Zustands a eines dynamischen Systems aus verrauschten Messungen durch Minimierung des mittleren quadratischen Fehlers [20], [41]. F r die Sch tzung eines FIR-Filters geht man von folgendem sehr einfachen Zustandsmou a dell aus: h(n + 1) =h(n) + (n + 1) y[n + 1] =x[n + 1]T h(n + 1) + w[n + 1] (5.22)

Hier ist (n + 1) der Vektor des unabh ngigen Prozessrauschens, das die Zeitvariabili t des zu a a sch tzenden Filters modelliert und das mit einer diagonalen Korrelationsmatrix Qp beschrieben a wird. Das Messrauschen w[n + 1], das die beobachtete Gr e y[n + 1] beeinusst, habe die o Varianz QM . Das Kalman-Filter ist durch folgende rekursive Gleichungen gegeben: g(n) = K(n 1)x[n] x[n]T K(n 1)x[n] + QM (5.23)

y[n] =h(n)T x[n] e[n] =d[n] y[n] h(n + 1) =h(n) + g(n)e[n] K(n) =K(n 1) g(n)x[n]T K(n 1) + Qp Die Bezeichnungen entsprechen denen im Handbuch des SP-Blocksets mit Ausnahme des Eingangsvektors x[n], der im Handbuch mit u[n] bezeichnet wird. Der Vektor g(n) enth lt die a Verst rkungen des Kalman-Filters und die Matrix K(n) ist die Korrelationsmatrix des Sch tza a fehlers der Zustandsgr en. In dem hier betrachteten Fall der Sch tzung eines FIR-Filters sind o a die Zustandsgr en die Filterkoefzienten h(n). o Im Programm kalman1.m wird das Kalman-Filter zur Identikation eines FIR-Filters eingesetzt. Das Programm ist ahnlich aufgebaut wie das Programm ls_3.m zur Simulation der RLS-Verfahrens. Die Initialisierung der rekursiven Gleichungen geschieht durch:
M = 15; x_temp1 = zeros(nf,1); x_temp = zeros(M,1); noise = 0.1; h = zeros(M,1); QM = noise; QP = eye(M)*0; K = eye(M)*100;

% % % % % % %

Fr das korrekte Filter u Fr das zu identif. Filter u Varianz des Messrauschens Anfangswerte Messrauschkorrelationsmatrix Prozessrauschkorrelationsmatrix Fehler-Kovarianzmatrix

Die rekursive Anpassung der Filterkoefzienten h(n) wird mit folgendem Programmabschnitt realisiert:

320

5 Analyse und Synthese adaptiver Filter


Identifiziertes Filter (Messrauschen 2 = 0.1) 0.4 0.3 0.2 0.1 0 0.1

Korrektes Filter 0.4 0.3 0.2 0.1 0 0.1

5 i

10

15

5 i

10

15

Abb. 5.11: Einheitspulsantworten der Filter (kalman1.m)


nx = 500; for n = 1:nx % Laufender Eingang xn = randn(1); x_temp = [xn; x_temp(1:end-1)]; % Aktualisierung % gewnschter Ausgang u x_temp1 = [xn; x_temp1(1:end-1)]; d = hr*x_temp1; d = d + sqrt(noise)*randn(1); % mit Messrauschen g y e h K end; = = = = = K*x_temp/(x_temp*K*x_temp + QM); h*x_temp; d-y; h + g*e; (eye(M) - g*x_temp)*K+QP;

In Abb. 5.11 sind links die tats chlichen Koefzienten des Filters der Ordnung 12 (also 13 a Koefzienten) und rechts die Koefzienten des gesch tzten Filters mit der gr er angenoma o menen Ordnung 14 (also 15 Koefzienten) dargestellt. Die Darstellungen geben den Zustand nach 500 Adaptionsschritten wieder. Da das zu identizierende Filter als konstant angenommen wurde, wurde die Matrix des Prozessrauschens Qp mit der Nullmatrix initialisiert (Programmvariable QP). Die Varianz des Messrauschens wurde als QM = 0.1 angenommen (Programmvariable QM).

Experiment 5.3: Adaptive St runterdruckung mit einem o Kalman-Filter


Ahnlich dem Experiment 5.1 zur St runterdr ckung mit dem LMS-Verfahren soll nun o u die St runterdr ckung mit dem Kalman-Filter untersucht werden. Abb. 5.12 zeigt das Modell o u kalman_filter1.mdl, das aus dem Programm kalman_filter_1.m aufgerufen wird. Als Nutzsignal wird ein Signal angenommen, das aus der Uberlagerung eines sinusf rmio gen Signals mit Rauschen gebildet wurde und einem Musik-Signal entsprechen k nnte. In der o Struktur des adaptiven Filters als n[k] bezeichnet, spielt es f r das Kalman-Filter, wie auch bei u

5.3 Kalman-Filter

321

MusikSimulation
1 Sine Wave1 0.1 Random Number1 Gain4 Gain1 Musik 1 n[k] Gain2 hr 1 s[k]

2 u Math Function

In Mean

0 Display

d[k]

Fehler

Strung

0.5

Gain3 x[k]

Discrete Filter

Scope y[k]

In

Out

yout Flip To Workspace e[k]=d[k]y[k] Identifiziertes Filter Time Vector Scope Horiz Cat koeff

Random Number 1 Sine Wave Gain

Kalman
Err Taps

Kalman Adaptive Filter

[hr, zeros(1,length(h)length(hr))]*0.5 Constant Reales Filter Matrix Concatenation To Workspace1

Abb. 5.12: St runterdr ckung mit einem Kalman-Filter (kalman lter 1.m, kalman lter1.mdl) o u dem Experiment zur St runterdr ckung bei EKG-Signalen, die Rolle des gew nschten Signals, o u u das durch das Signal s[k] gest rt wird. Das Letztere wird ebenfalls aus einem sinusf rmigen o o Signal und einem Rauschsignal mit Hilfe des FIR-Filters aus dem Block Discrete Filter gebildet. Die Koefzienten dieses Filters hr m ssen mit dem Kalman-Filter gesch tzt werden, so u a dass der Ausgang y[k] die St rung s[k] nachbildet und aus dem Signal d[k] uber die Differenz o d[k] y[k] = (n[k] + s[k]) y[k] n[k] = diese St rung entfernt. o Die beiden Bl cke Random Number1 und Random Number sind mit zwei verschiedenen o Initial-Seed-Werten zu initialisieren, da ansonsten Nutzsignal und St rung korreliert sind und o beide unterdr ckt werden. u Die angepassten Koefzienten des Kalman-Filters am Ausgang Taps werden zusammen mit den Koefzienten hr des nachzubildenden Filters uber die Bl cke Matrix Concatenation und o Vector Scope angezeigt. W hrend der Simulation kann man die Anpassung verfolgen. Da das a anzupassende Filter h mit mehr Koefzienten als das Filter hr angenommen wurde und der Block Matrix Concatenation gleiche L ngen verlangt, werden die Koefzienten des Filters hr a im Block Constant mit Nullwerten erweitert. Die Signale werden mit der Senke To Workspace in der Variablen yout und die gelernten oder identizierten Koefzienten mit der Senke To Workspace1 in der Variablen koeff an

322
Gestoertes Signal d[k] 4 2 0 0 2 0 0.005 0.01 Zeit in s 0.015 0.02 0.5 1 1.5 2 0 1.5 1 0.5

5 Analyse und Synthese adaptiver Filter

Ideales Entstoertes Signal n[k]e[k]

Ideales Signal n[k] 2 1 0 1 0.2 2 0 0.005 0.01 Zeit in s 0.015 0.02 0.15 0.1 0.05 0 0.05

0.005

0.01 Zeit in s

0.015

0.02

Ideales (hr) und gelerntes Filter (h)

Entstoertes Signal d[k]y[k] 2 0 2 4

0.005

0.01 Zeit in s

0.015

0.02

10

15

20

Abb. 5.13: Signale der St runterdr ckung (kalman lter 1.m, kalman lter1.mdl) o u MATLAB ubertragen. Der Parameter Save format dieser Senken wurden als Structure With Time bzw. Structure angegeben. In Abb. 5.13 sind die Signale der Senken dargestellt. Wie man mit den Strukturen der Daten umgehen muss, zeigt als Beispiel folgende Programmsequenz, welche die Darstellung links oben erzeugt:
subplot(321), plot(yout.time, yout.signals.values(:,3)); title(Gestoertes Signal d[k]); xlabel(Zeit in s); grid; pos = get(gca, Position); % Darstellung neu positionieren set(gca,Position,[pos(1),pos(2)*1.05,pos(3),pos(4)*0.9]);

Die Koefzienten werden in dreidimensionalen Feldern gespeichert, und zwar bei jedem Adaptionsschritt M = 20 Werte der zu identizierenden Filterkoefzienten und dieselbe Anzahl f r die identizierten Koefzienten. Dargestellt werden nur die Koefzienten am Ende der u Simulation:
koeffizienten = squeeze(koeff.signals.values(:,:,end)); subplot(224), plot(0:length(koeffizienten)-1, ... koeffizienten(:,1), *, 0:length(koeffizienten)-1, ... koeffizienten(:,2)); title(Ideales (hr) und gelerntes Filter (h)); grid;

5.3 Kalman-Filter

323

Die Funktion squeeze entfernt die nicht ben tigten ersten beiden Dimensionen der Vao riablen koeff.signals.values(:,:,end), um sie anschlieend leichter darzustellen (Abb. 5.13 rechts unten). Die gesch tzten Filterkoefzienten wurden in der Abbildung mit dem a Symbol * kenntlich gemacht. Rechts oben ist die Differenz zwischen dem idealen (nicht gest rten) Signal und dem o entst rten Signal dargestellt. Nach einer kurzen Anpassungsphase wird der Fehler klein und o man erkennt daraus, dass die St rung erfolgreich unterdr ckt wird. o u Ein gutes Verst ndnis der Funktionsweise des Kalman-Filters erh lt man, wenn man die Paa a rameter des Filters ver ndert. Die erfolgreiche Anpassung uberpr ft man dabei am einfachsten a u im Vergleich der Koefzienten des zu identizierenden und des Kalman-Filters. Man wird sehr rasch feststellen, dass die Varianz des Messrauschens (Measurement noise variance) als Parameter des Kalman-Filters eine wichtige Rolle spielt. In dieser Simulation ist dies die Varianz des Signals n[k], also des Nutzsignals9 . Mit dem Modell kalman_filter2.mdl, welches uber das Programm kalman_filter_2.m initialisiert und aufgerufen wird, wird eine Unterdr ckung der PKWu Fahrger usche in den Kopfh rern simuliert, um den Passagieren reinstes Musikvergn gen zu a o u bieten. Die Ger usche sind als wav10 -Daten f r eine Geschwindigkeit des PKWs von 90 km/h a u und 140 km/h (90.wav, 140.wav) vorhanden. Das adaptive Filter muss die Ubertragung der Ger usche in die Fahrgastzelle des PKWs und weiter uber die Kopfh rermuscheln bis zum a o Ohr nachbilden. Die Ger usche wurden mit einer Abtastfrequenz fs = 48 kHz aufgenommen. Die spektrale a Leistungsdichte des Signals aus der Datei 140.wav ist in Abb. 5.14 dargestellt. Ahnlich sieht auch die spektrale Leistungsdichte der St rung bei der Geschwindigkeit von 90 km/h aus und o man bemerkt, dass der Groteil der Leistung im Frequenzbereich zwischen 0 und 500 Hz liegt. Aus diesem Grunde braucht die Anpassung des Filters nicht bei der hohen Abtastfrequenz von 48 kHz durchgef hrt werden, sondern sie kann bei einer viel kleineren Frequenz, z.B. von u 48/5 = 9.6 kHz erfolgen.
Leistungsspektraldichte der Stoerung 0 10 20 30 40 50 60 70 0 500 1000 1500 2000 2500 Hz 3000 3500 4000 4500 5000

Abb. 5.14: Spektrale Leistungsdichte des St rsignals bei v = 140 km/h (kalman lter 2.m, o
kalman lter2.mdl)

Das Modell kalman_filter2.mdl unterscheidet sich vom Modell kalman_filter1.mdl dadurch, dass der Eingang des Filters und der Fehler-Eingang mit
es verwirrend ist, sei nochmals daran erinnert, dass bei der St runterdr ckung das extrahierte Nutzsignal als o u Fehler in der allgemeinen Struktur der adaptiven Filter gilt. 10 Wave-Audio-Dateien
9 Da

324
Gestoertes Signal d[k] 4 2 0 2 4 0 0.1 0.2 Zeit in s 0.3 0.4 0.5 0.4 0.3 0.2 0.1 0 0.1 0.2 0

5 Analyse und Synthese adaptiver Filter

Ideales Entstoertes Signal n[k]e[k]

Ideales Signal n[k] 4 2 0 2 1 4 0 0.1 0.2 Zeit in s 0.3 0.4 0.8 0.6 0.4 0.2 0 0.2 0 0.1 0.2 Zeit in s 0.3 0.4 0.4 0 5 10 15 20

0.1

0.2 Zeit in s

0.3

0.4

Ideales (hr) und gelerntes Filter (h)

Entstoertes Signal d[k]y[k] 4 2 0 2 4

Abb. 5.15: Signale in der St runterdr ckung bei v = 140 km/h (kalman lter 2.m, o u
kalman lter2.mdl)

dem Faktor 5 unterabgetastet sind. Zus tzlich wird auch die mittlere Leistung der Differenz a zwischen dem idealen und dem nicht gelterten Signal bzw. die mittlere Leistung der Differenz zwischen dem idealen und dem gelterten Signal ermittelt und mit Senken vom Typ Display angezeigt. Die St runterdr ckung funktioniert gut f r relativ starke St rungen und ist weniger erfolgo u u o reich f r schwache St rungen. Uber den Faktor des Blocks Gain5 kann die St rke der St rung u o a o eingestellt werden. Bei einem Faktor von 10 ist der Gewinn (Verh ltnis von mittlerer Leistung a ohne Filter zu mittlerer Leistung mit Filter) etwa 400, bei einem Faktor von 5 ist er nur noch etwa 200 und bei einem Faktor von 1 ist der Gewinn schlielich nur 23. Die Signale aus Abb. 5.15 wurden mit dem Faktor 1 f r die St rke der St rung erzeugt. u a o Im Programm kalman_filter_3.m und dem Modell kalman_filter3.mdl wird die St runterdr ckung f r den Fall, dass der St rungspfad eine reine Verz gerung darstellt, o u u o o simuliert. Die St rung und der Fehler werden ebenfalls mit dem Faktor 5 unterabgetastet und o der erzielte Gewinn ist etwa 30 (entsprechend 14 dB).

Experiment 5.4: Adaptive St runterdruckung mit einem Blocko LMS-Filter


Neben den besprochenen adaptiven Filtern sind in Abb. 5.1 zwei weitere Bl cke enthalten, o die Block LMS Filter implementieren. Bei ihnen werden statt der Aktualisierung mit jedem

5.4 Beispiele f r den Einsatz der adaptfilt-Objekte u

325

Abtastwert die Filterkoefzienten nur jeweils nach einem Block von Eingangsdaten aktualisiert. Der Rechenaufwand verringert sich entsprechend. Abb. 5.16 zeigt das Modell block_lms.mdl, in dem der Fast Block LMS-Algorithmus [47] zur St runterdr ckung eingesetzt wird. Das Modell wird mit dem Programm o u block_lms_.m initialisiert und gestartet. Die beiden Eing nge Input und Desired werden a uber Buffer-Bl cke mit Datenbl cken gespeist. Die Datenbl cke m ssen eine L nge besitzen, o o o u a die zusammen mit der L nge des Filters eine ganzzahlige Potenz von zwei ergeben. Mit einer a Filterl nge M = 16 und Datensequenzen derselben L nge ist diese Bedingung in dem Beispiel a a aus Abb. 5.16 erf llt. Als St rung werden das Fahrger usch eines PKW aus dem vorherigen u o a Experiment und weies Rauschen verwendet. Das LMS-Verfahren konvergiert am besten mit weiem Rauschen (gleich groe Eigenwerte der Autokorrelationsmatrix), was auch durch das Experiment best tigt wird. Wird nur das a Fahrger usch als St rung verwendet, so adaptiert der Algorithmus zu einem anderen als dem a o gew nschten Filter. Das Verfahren bleibt in einem lokalen Minimum h ngen und erreicht u a nicht das absolute Minimum des Fehlers. Ein gr erer Anteil an weiem Rauschen erlaubt dem o Verfahren, lokale Minima zu verlassen und als Ergebnis das zu identizierende Filter mit guter N herung zu liefern. a Abb. 5.16 zeigt unten die Signale der Simulation f r St rungen durch Fahrger usche uberlau o a gert mit weiem Rauschen. Das Filter des St rungspfads wurde gut identiziert und die St rung o o gut unterdr ckt. Als Filter des St rungspfades wurde ein Tiefpasslter mit folgender Einheitsu o pulsantwort verwendet:
% -------- Filter zur Simulation des Strungspfads o nf = 16; %hr = fir1(nf-1, 0.2); hr = 0.8.(0:nf-1);

5.4

Beispiele fur den Einsatz der adaptfilt-Objekte

Aus der Beschreibung des Objekts adaptfilt wird die Identikation eines Systems als Beispiel f r dessen Einsatz ubernommen. Mit u
x b n d = = = = randn(1,500); fir1(31,0.5); 0.1*randn(1,500); filter(b,1,x)+n;

% % % %

Input to the filter FIR system to be identified Observation noise signal Desired signal

werden die Eingangssequenz x und das durch das Filter zu erzeugende Signal d generiert. Danach wird mit
mu = 0.008; % LMS step size h = adaptfilt.lms(36,mu); % Definieren des Objekts [y,e] = filter(h,x,d); % Berechnen der Koeff. des Filter-Objekts

der Anpassungsfaktor mu gew hlt und das adaptive Filter h deniert. An dieser Stelle ist nur die a Struktur des Objekts deniert. Mit der uberladenen Funktion filter wird das LMS-Verfahren

326
MusikSimulation
Gain2 hmusik 1 Random Number1 Discrete Filter1 hr 1 Discrete Filter Musik 1 s[k] n[k]

5 Analyse und Synthese adaptiver Filter

16 z Delay d[k] Fehler Unbuffer

Strung
x[k] stoerung(:,1) Signal From Workspace 1 Gain5 Buffer1
Output Input Fast Block LMS Error Desired Wts

Scope Terminato yout To Workspace

Fast Block LMS Filter 1 Random Number2 Gain1 Identifiziertes Filter Buffer2 Reales Filter [hr, zeros(1,leng h(h)length(hr))] Constant Matrix Concatenation To Workspace1 Horiz Cat koeff Time Vector Scope

Gestoertes Signal d[k] 10 5 0 5 10 0 0.05 0.1 Zeit in s 0.15 0.2 4 3 2 1 0 1 2 3 0

Ideales Entstoertes Signal n[k]e[k]

Ideales Signal n[k] 4 2 0 2 1.4 4 0 0.05 0.1 Zeit in s 0.15 0.2 1.2 1 0.8 0.6 0 0.4 0.2 5 0 0.05 0.1 Zeit in s 0.15 0.2 0 0 5 10 15

0.05

0.1 Zeit in s

0.15

0.2

Ideales (hr) und gele ntes Filter (h)

Entstoertes Signal d[k]y[k] 5

Abb. 5.16: Modell und Signale der Anpassung mit dem Fast-Block-LMS-Verfahren
(block lms .m, block lms.mdl)

mit der Filterstruktur h eingesetzt um aus der Eingangssequenz x und der gew nschten Seu quenz d einerseits die Koefzienten des angepassten Filters (gespeichert in der Struktur h) und andererseits das Ausgangssignal y des angepassten Filters sowie den Fehler e = y - d zu bestimmen.

5.5 Anmerkungen

327

Im Programm adapt_filter1.m ist das Experiment mit kleinen Anderungen f r das u LMS-Verfahren programmiert. Wenn man im Kommando-Fenster das entwickelte Filter h ansehen will, erh lt man die Struktur des Objekts: a h h = Algorithm: FilterLength: Coefficients: States: StepSize: Leakage: ResetBeforeFiltering: NumSamplesProcessed: Direct-Form FIR LMS Adaptive Filter 36 [1x36 double] [35x1 double] 0.008 1 on 500

Man kann auf alle Teile der Struktur zugreifen. So k nnen z.B. die Koefzienten des Filters o durch h.coefficients angezeigt werden. Im Programm adapt_filter2.m wird das Block-LMS-Verfahren mit Hilfe der Funktion adaptfilt.blms f r die Berechnung von h verwendet. Die Datenstruktur des adaptiven u Filterobjekts ist nun: h = Algorithm: FilterLength: Coefficients: States: StepSize: Leakage: BlockLength: ResetBeforeFiltering: NumSamplesProcessed: Block LMS FIR Adaptive Filter 36 [1x36 double] [36x1 double] 0.0100 1 36 on 720

Kurze Beschreibungen dieser Funktionen erh lt man, wie ublich, mit help lms bzw. help a blms oder help adaptfilt/lms bzw. help adaptfilt/blms. Die Beschreibung f r die uberladene Funktion filter erh lt man mit: help adaptfilt/filter. u a

5.5

Anmerkungen

Der Einsatz von adaptiven Filtern in der Praxis ist eng verbunden mit der kontinuierlichen Leistungssteigerung der Hardware zur Signalverarbeitung, sei es in Form der digitalen Signalprozessoren oder programmierbarer logischer Schaltungen wie FPGA und ASIC. Industriell werden adaptive L sungen in der Regelungstechnik zur Modellbildung und o -identikation, in der Kommunikationstechnik zur adaptive Echounterdr ckung, zur Entzeru rung und Detektion oder zur pr diktiven Codierung, in der Sonartechnik, in der Medizineleka tronik, um nur einige zu erw hnen, eingesetzt. Doch auch im Heimanwenderbereich sind in a vielen integrierten Schaltungen neben anderen Funktionen auch adaptive L sungen enthalten. o

328

5 Analyse und Synthese adaptiver Filter

So enthalten z.B. die Schaltkreise f r die digitale ISDN-Telefonie adaptive Kanalentzerreru und Echounterdr ckungsfunktionen. Es gibt auch bereits Kopfh rer mit adaptiver Rauschunu o terdr ckung als Massenprodukt. u Die Simulation von adaptiven Systemen mit den in der Anwendung vorkommenden Signalen liefert wichtige Erkenntnisse, die die Entwicklung solcher Systeme beschleunigen k nnen o und R ckschl ge in der Implementierungs- und Inbetriebnahmephase vermeiden helfen. Die u a leistungsf higen Funktionen und Bl cke aus MATLAB und Simulink (z.B. Kalman-Filter in a o einem Simulink-Block) erlauben es sogar, die Simulation aufzusetzen, auch wenn man noch nicht alle Feinheiten der Algorithmen beherrscht. F r die darauf folgende Implementierung in u der Anwendung ist die Kenntnis der Algorithmen dann nat rlich erforderlich, allerdings wird u man simulationsunterst tzt wesentlich schneller zum Ziel kommen. u