MATLAB R -Programmierung

G. Doblinger MATLAB -Programmierung r in der digitalen Signalverarbeitung g[n] g[n] FFT g[n] FFT g[n] FFT FFT Frequency (kHz) 5 4 3 2 ...
Author: Peter Gerhardt
141 downloads 0 Views 2MB Size
G. Doblinger

MATLAB -Programmierung r

in der digitalen Signalverarbeitung

g[n]

g[n]

FFT

g[n]

FFT

g[n]

FFT

FFT

Frequency (kHz)

5

4

3

2

1

0

0.1

0.2

0.3

0.4

Time (sec.)

c Gerhard Doblinger, 2014

0.5

MATLABr -Programmierung in der digitalen Signalverarbeitung Dr. Gerhard Doblinger Institute of Telecommunications Technische Universit¨at Wien Gusshausstr. 25/389 A-1040 Wien Tel. 58801 38927, Fax 58801 38999 Email: [email protected] Internet: www.nt.tuwien.ac.at/about-us/staff/gerhard-doblinger/

c Gerhard Doblinger, Technische Universit¨

at Wien, 2014 Copyright-Notiz: Dieses Buch ist in gedruckter Form von 2001 bis 2014 im J. Schlembach Fachverlag Wilburgstetten, D-91634, unter ISBN 3-935340-02-8 erschienen. Mit Schreiben des Verlags vom 20.9.2014 wurden die Rechte an diesem Buch an den Autor uneingeschr¨ ankt zur¨ uckgegeben. Das Buch wird ab sofort nur als PDF-Dokument aufgelegt. Dieses Werk einschließlich aller seiner Teile ist urheberrechtlich gesch¨ utzt. Alle ¨ Rechte, insbesondere die Vervielf¨ altigung, Verbreitung und Ubersetzung liegen beim Autor. Kein Teil des Werkes darf ohne Genehmigung des Autors, auch nicht f¨ ur Unterrichtszwecke, fotokopiert oder durch andere Verfahren reproduziert und verbreitet werden. Eine Einspeicherung und Verarbeitung in Netzwerken (Internet) darf ohne Genehmigung des Autors nicht vorgenommen werden.

MATLABr ist ein eingetragenes Warenzeichen der Firma The MathWorks, Inc., USA.

Vorwort In allen Bereichen der Informationstechnik und der Telekommunikation breitet sich der Einsatz der Digitalisierung mit rasanter Geschwindigkeit aus. Mobilfunk, digitaler Rundfunk und vor allem das globale Netzwerk Internet ben¨otigen eine digitale ¨ Speicherung, Ubertragung und Verarbeitung analoger Signale. Von Forschern und Ingenieuren auf dem Gebiet der digitalen Signalverarbeitung wird heute vorausgesetzt, daß sie beim Systementwurf umfangreiche Simulationen der eingesetzten, hochkomplexen Algorithmen vornehmen. Dazu werden eine F¨ ulle von Programmpaketen angeboten, die dem Anwender vor allem die Programmierung von Standardaufgaben und die Visualisierung der Daten erleichtern. Ein weitverbreitetes und leistungsf¨ahiges Programmpaket ist MATLABr . Es stellt nicht nur schl¨ usselfertige L¨osungen f¨ ur viele Standardaufgaben zur Verf¨ ugung, sondern erm¨oglicht auch durch eine universelle Programmentwicklung maßgeschneiderte L¨osungen. Wegen der Komplexit¨at muß sich ein Anwender die MATLABr -Kenntnisse allerdings meist m¨ uhsam durch das Studium der sehr umfangreichen Dokumentation aneignen. Hier bietet das vorliegende Buch in kompakter Form einen rascheren Einstieg. Anhand grundlegender Problemstellungen und ausgew¨ahlter Anwendungen der digitalen Signalverarbeitung kann Schritt f¨ ur Schritt der effiziente Einsatz der MATLABr -Programmierung erlernt werden. Die dabei gew¨ahlte Methodik besteht aus einer theoretischen Einf¨ uhrung zu jeder Gruppe von Aufgaben und aus Musterl¨ osungen, die als Starthilfe f¨ ur das Kennenlernen der jeweils verwendeten MATLABr -Befehle dienen. Das Buch ist anhand des Skriptums zu einer Lehrveranstaltung entstanden, die ich seit 1994 an der Technischen Universit¨ at Wien abhalte. Dabei wird das Ziel verfolgt, den Studenten neben der theoretischen Ausbildung auf dem Gebiet der digitalen Signalverarbeitung die M¨ oglichkeit zum anwendungsbezogenen Umgang mit den Methoden und Algorithmen anzubieten. Daher ist dieses Buch auch als Br¨ uckenschlag zwischen Theorie und Praxis anzusehen, mit einer Stoffauswahl, die sich nicht nur auf Standardwissen der digitalen Signalverarbeitung beschr¨ankt. Das vorliegende Buch ist daher meiner Meinung nach auch f¨ ur die Weiterbildung von Ingenieuren in der Praxis gut geeignet.

iv

Vorwort

Ein großer Teil dieses Buches besteht aus Aufgaben, mit denen die MATLABr Programmierung vertieft wird und die fast alle anwendungsorientiert sind. Die Grundlagen f¨ ur die Bearbeitung der einzelnen Aufgaben werden zwar knapp aber hoffentlich verst¨andlich pr¨ asentiert. Trotzdem werden grundlegende Kenntnisse der digitalen Signalverarbeitung vorausgesetzt, die in jedem Standardwerk auf diesem Gebiet zu finden sind. Schnelleser k¨ onnen gerne einzelne Kapitel u ¨berspringen und sich auf Aufgaben ihrer Wahl beschr¨ anken, wenn auch zu bedenken ist, daß Schwierigkeit und Umfang proportional zur Seitenzahl zunehmen. Zum Verst¨andnis der Programmbeispiele ist es sicher vorteilhaft, die Kurzbeschreibung der MATLABr Syntax im Anhang zu lesen. Ansonsten sollte man Programmieren nicht durch Lesen, sondern durch Programmieren lernen! Die Programmbeispiele dieses Buches, die L¨ osungen zu den umfangreicheren Aufgaben und andere n¨ utzliche Programme sind unter www.nt.tuwien.ac.at/about-us/staff/gerhard-doblinger/ zu finden. F¨ ur diese Programme wird jedoch keine Garantie f¨ ur deren richtige Funktion u ur ¨bernommen. Der Einsatz dieser Programme ist ausschließlich f¨ den Ausbildungsbereich und nicht f¨ ur eine kommerzielle Verwertung gedacht. Die Verf¨ ugbarkeit der L¨osungen sollte nicht den Reiz der Suche nach eigenen Probleml¨ osungen vermindern. Es gibt daher auf meiner Internetseite auch eine Sammlung von Aufgaben, deren L¨ osung nicht publik gemacht wird und die z.B. f¨ ur Seminararbeiten vorgesehen sind. Zum Abschluß m¨ochte ich mich sehr gerne bei meinen Kollegen und Studenten bedanken, die mir bei den Vorarbeiten zu diesem Buch in hohem Maße geholfen haben. Mein besonderer Dank gilt Herrn Prof. W. Mecklenbr¨auker f¨ ur seine zahlreichen Beitr¨age und Diskussionen auf dem Gebiet der digitalen Signalverarbeitung, Herrn Dr. R. Sucher f¨ ur die engagierte Mithilfe bei der Verfassung des Skriptums zur erw¨ ahnten Lehrveranstaltung und Herrn Dr. M. Lang f¨ ur seine exzellenten Beitr¨ age u ber Optimierungsmethoden zum Entwurf digitaler Filter. Mein Dank ¨ geht auch an Herrn Prof. H. W. Sch¨ ußler. Die Stoffauswahl und anschauliche Darstellung der digitalen Signalverarbeitung in seinen B¨ uchern und Skripten haben mich bei der Verfassung dieses Buches sehr inspiriert. Bei Herrn Dr. J. Schlembach vom Verlag m¨ochte ich mich f¨ ur die bew¨ ahrte Unterst¨ utzung und Bereitwilligkeit zur Publikation dieses Buches sehr herzlich bedanken.

Wien, im M¨arz 2001

G. Doblinger

Inhaltsverzeichnis 1 Zeitdiskrete Signale 1.1 Erzeugung elementarer Signale . . . . . . . . . . . . . . . . . . . . 1.2 Zeitachsentransformationen . . . . . . . . . . . . . . . . . . . . . . 1.3 Faltungsoperation f¨ ur zeitdiskrete Signale . . . . . . . . . . . . . .

1 2 7 16

2 Zeitdiskrete Systeme 2.1 Beschreibung durch Faltungsoperation . 2.2 Beschreibung im Frequenzbereich . . . . 2.3 Beschreibung durch Differenzengleichung 2.4 Zustandsraumbeschreibung . . . . . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

27 28 34 41 54

3 Diskrete Fouriertransformation 3.1 Interpolation im Frequenzbereich . . . . 3.2 Dezimation im Frequenzbereich . . . . . 3.3 Fenstereffekt bei der DFT . . . . . . . . 3.4 Zyklische Faltung . . . . . . . . . . . . . 3.5 Overlap-Add und Overlap-Save Methode 3.6 Chirp-DFT . . . . . . . . . . . . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

63 67 69 71 72 75 78

4 Entwurf digitaler Filter 4.1 FIR-Filterentwurf . . . . . . . . . . . . . . . . . . . . . . 4.1.1 Frequenzabtastungsmethode . . . . . . . . . . . . 4.1.2 Methode der kleinsten Quadrate . . . . . . . . . 4.1.3 Fenstermethode . . . . . . . . . . . . . . . . . . . 4.1.4 Optimaler Entwurf mit dem Remez-Algorithmus 4.1.5 FIR-Filter mit geringer Signalverz¨ ogerung . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

83 83 87 89 91 95 99

vi

Inhaltsverzeichnis 4.2

IIR-Filterentwurf . . . . . . . . . . . . . . . . . . . . . . . 4.2.1 Approximation der Impulsantwort . . . . . . . . . 4.2.2 Bilineare Z-Transformation . . . . . . . . . . . . . 4.2.3 Frequenztransformationen . . . . . . . . . . . . . . 4.2.4 Least-Squares-Approximation von Frequenzg¨angen

5 Multiratenfilterb¨ anke und Wavelets 5.1 Cosinusmodulierte Filterb¨ anke . . . . . . . . . . . . . 5.1.1 Entwurf ¨ aquidistanter Filterb¨ anke . . . . . . . 5.1.2 Entwurf nicht¨ aquidistanter Filterb¨ anke . . . . . 5.2 DFT-Filterb¨anke . . . . . . . . . . . . . . . . . . . . . 5.3 Wavelet-Transformation . . . . . . . . . . . . . . . . . 5.3.1 Diskrete Wavelet-Transformation (DWT) . . . 5.3.2 Zeitdiskrete Wavelet-Transformation (DTWT) 5.3.3 Signalentst¨ orung mit Wavelets . . . . . . . . . 6 Anwendungen aus dem Bereich der Audiotechnik 6.1 Pitch- und Zeitskalierung mit der DFT-Filterbank . 6.1.1 Pitch-Skalierung . . . . . . . . . . . . . . . . 6.1.2 Zeitskalierung . . . . . . . . . . . . . . . . . . 6.2 Entst¨orung verrauschter Audiosignale . . . . . . . . A Kurzbeschreibung der MATLABr Syntax A.1 Vektoren und Matrizen . . . . . . . . . . . . A.2 Cell-Arrays und Strukturen . . . . . . . . . A.3 Steuerung des Programmablaufs . . . . . . A.4 MATLABr -Funktionen . . . . . . . . . . . A.5 Verwendung von eval() und feval() . . .

. . . . .

. . . . .

B Formeln f¨ ur Fourier- und Z-Transformation B.1 Fourierreihen zeitdiskreter periodischer Signale B.2 Fouriertransformation zeitdiskreter Signale . . B.3 Diskrete Fouriertransformation (DFT) . . . . . B.4 Z–Transformation . . . . . . . . . . . . . . . . B.5 Systeme mit Mehrfachtaktverarbeitung . . . . . Literatur

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . .

. . . . .

. . . . .

. . . . . . . .

. . . .

. . . . .

. . . . .

. . . . . . . .

. . . .

. . . . .

. . . . .

. . . . .

. . . . . . . .

. . . .

. . . . .

. . . . .

. . . . .

. . . . . . . .

. . . .

. . . . .

. . . . .

. . . . .

. . . . . . . .

. . . .

. . . . .

. . . . .

. . . . .

. . . . . . . .

. . . .

. . . . .

. . . . .

. . . . .

107 107 113 120 123

. . . . . . . .

127 129 129 136 144 151 151 154 168

. . . .

173 174 174 179 182

. . . . .

191 192 194 197 199 200

. . . . .

203 204 205 206 208 211 213

Inhaltsverzeichnis

vii

Glossar

217

Index

219

viii

Inhaltsverzeichnis

1 Zeitdiskrete Signale Im Gegensatz zur analogen Signalverarbeitung, in der Signale zeitkontinuierlich und f¨ ur alle Zeitwerte definiert sind, werden in der digitalen Signalverarbeitung zeitdiskrete Signale verwendet. Diese Signale sind nur zu diskreten Zeitwerten definiert, wobei die Zeitpunkte durch einen Zeitindex n durchnumeriert werden. Ein zeitdiskretes Signal kann demnach als Folge x[n] oder xn von Amplitudenwerten aufgefaßt werden. Die Amplitudenwerte k¨ onnen reell- oder komplexwertige, skalare oder vektorielle Gr¨oßen sein. In diesem Kapitel werden eindimensionale, skalare Signale behandelt, die jedoch komplexwertig sein k¨ onnen. Der Index n repr¨asentiert stets die (diskrete) Zeitachse. Die Amplitudenachse kann bei Simulationen mit MATLABr als wertkontinuierlich vorausgesetzt werden, da die Rechengenauigkeit im verwendeten Gleitkommaformat etwa 15 Dezimalstellen betr¨agt. Ein zeitdiskretes Signal kann als Funktion x(n) repr¨asentiert werden, wobei in der Notation nicht zwischen Funktion und Funktionswert unterschieden wird, d.h. x(n) ist sowohl der gesamte Funktionsverlauf, als auch der Funktionswert zum Zeitpunkt n. Eine gebr¨auchliche graphische Darstellung eines zeitdiskreten Signals als Funktion x(n) ist in Abb. 1.1 gezeigt. Die verwendete Notation entspricht auch der von MATLABr -Vektoren, wo die Amplitudenwerte z.B. im Vektor x und die Zeitwerte im Vektor n gespeichert werden. Ist n eine skalare Gr¨ oße, dann ist x(n) der Signalwert an der Stelle n. Wenn n ein Vektor ist, dann beschreibt x(n) den gesamten gespeicherten Signalverlauf (oder einen Teil davon, falls n nicht alle Vektorelemente umfaßt). Allerdings ist in MATLABr zu beachten, daß der Index der Vektorelemente nur Werte gr¨oßer als null annehmen darf, d.h. der Zeitindex n stimmt mit dem Elementindex bis auf eine Verschiebung (Offset) u ¨berein.

2

1 Zeitdiskrete Signale 1 0.5 x(n)

0 -0.5 -1 -10

-8

-6

-4

-2

0

2

4

6

8

10

Zeitindex n

Abbildung 1.1: Graphische Darstellung eines zeitdiskreten Signals

1.1

Erzeugung elementarer Signale

Durch die Vektor- und Matrizenoperationen von MATLABr k¨onnen die meisten elementaren Signale mit wenigen Programmzeilen und ohne Verwendung von Schleifen generiert werden. Da MATLABr f¨ ur die Blockverarbeitung optimiert ist, sollten m¨oglichst viele Teile eines Programms vektorisiert werden. Nur dann werden mit MATLABr Programmausf¨ uhrzeiten erreicht, die an jene von C-Programmen heranreichen. Mit der folgenden Eingabe im Kommandofenster der MATLABr -Umgebung kann das in Abb. 1.1 gezeigte Signal erzeugt werden:1 n = -10:10; n = n.’; x = 0.8 * sin(2*pi/10*n); stem(n,x);

% % % % % %

create a row vector n containing integers (time points) -10, -9 , ... 9, 10 transpose vector n to column vector create a sinusoidal signal stored in column vector x discrete-time plot

In diesem Beispiel wird der Vektor n zur Speicherung der Zeitachse verwendet. Bei der Erzeugung des sinusf¨ ormigen Signals wird f¨ ur das erste Vektorelement x(1) der Zeitindex n = −10 verwendet, f¨ ur x(2) n = −9 und so fort. Dieser Unterschied in der Indizierung ist wichtig, wenn Signalwerte und Zeitpunkte zugeordnet werden. Die Darstellung der Signale in einem Graphikfenster erfolgt hier mit der Funktion stem(). Weitere Informationen, wie z.B. Achsenbeschriftung erh¨alt man mit help plot, help title, help xlabel, help ylabel.2 1 Eingaben in MATLABr sollten keine deutschen Sonderzeichen wie a,¨ u,ß enthalten, wenn ¨ o,¨ die Programme auch im nichtdeutschsprachigen Raum eingesetzt werden sollen. Die in Englisch verfaßten Kommentare sollen daran erinnern. 2 Auf die umfangreichen graphischen M¨ oglichkeiten mit MATLABr wird hier nicht eingegangen. Die MATLABr -Dokumentation “Using MATLAB Graphics” bietet dazu eine umfassende Einf¨ uhrung.

1.1 Erzeugung elementarer Signale

3

Mit MATLABr k¨onnen Vektorelemente einfach manipuliert werden, so daß elementare Signale elegant und ohne großen Programmieraufwand erzeugt werden k¨ onnen: nx = 20; x1 = zeros(1,nx); i1 = 1:2:nx; x1(i1) = 1; stem(x1); x2 = zeros(1,nx); i2 = 1:10; x2(i2) = 1; stem(x2);

% % % %

create a row vector of 20 zeros row vector of odd integers (1,3,5,...19) set every other element of x1 to one plot x1

% create a rectangular impulse signal

In den beiden folgenden Beispielen wird der find-Befehl verwendet, um Signalsegmente zu ver¨andern: n = -20:20; x = sin(0.1*pi*n); x1 = x; i1 = find(x1 < 0); x1(i1) = 0; stem(n,x1); x2 = 2 * x; i2p = find(x2 > 1); i2n = find(x2 < -1); x2(i2p) = 1; x2(i2n) = -1; stem(n,x2);

% find indices of x1 where vector % components are negative % replace negative signal parts by zeros

% clip positive half waves % clip negative half waves

Schließlich k¨onnen auch mit logischen Operationen sehr einfach zweistufige (bin¨ are) Signale erzeugt werden: n = -20:20; x = sin(0.1*pi*n); x1 = (x > 0);

stem(n,x1); N = 5; x2 = (rem(n,N) == 0);

stem(n,x2);

% x1 is set to 1 where x > 0, and x1 = 0 % elsewhere, i.e. a square wave is created % from the original sinusoid

% x2 = 1 at multiples of N, i.e. a unit % pulse train with period N is generated % (rem() is the modulo operation)

4

1 Zeitdiskrete Signale

Diese wenigen Beispiele f¨ ur die Verwendung einiger grundlegender MATLABr Befehle gen¨ ugen f¨ ur die L¨ osung der folgenden Aufgabe. Bevor Sie die L¨osung der ersten Aufgaben versuchen, lesen Sie bitte die Kurzfassung der MATLABr Syntax im Anhang. Alle Aufgaben sollen zun¨ achst interaktiv bearbeitet werden. Die Alternative w¨are das Speichern der Befehle in einem File (z.B. mit dem Namen aufgabe1_1.m). Durch Aufruf des File-Namens (ohne Erweiterung .m) wird die Befehlsfolge abgearbeitet. Zur Protokollierung der interaktiven Eingaben wird zu Beginn der MATLABr Sitzung mit diary protokoll.txt die Protokolldatei protokoll.txt angelegt. Am Ende der Sitzung wird diese Datei mit diary off gespeichert und steht dann als normale Textdatei zur Verf¨ ugung. Mit dem HELP DESK oder mit dem Help-Befehl (z.B. help rem) erh¨alt man eine vielfach ausreichende Online-Hilfe zu MATLABr , so daß sich ein Nachschlagen in dicken Handb¨ uchern er¨ ubrigt. Die elektronische Dokumentation ist im HTML-Format und als PDF-Files verf¨ ugbar und ist mit einer umfangreichen Suchfunktion ausgestattet. F¨ ur eine ¨okonomische Tastaturbedienung k¨ onnen die Editierm¨oglichkeiten der Eingabezeile mit den Cursor-Tasten eingesetzt werden. So werden beispielsweise mit ↑ und ↓ die vorherigen Befehle in die Eingabezeile geholt, die auch mit ← und → editiert werden k¨ onnen. Die weiteren M¨oglichkeiten h¨angen von der Tastaturkonfiguration ab und variieren von Betriebssystem zu Betriebssystem.

Aufgabe 1.1 F¨ ur die folgenden zeitdiskreten Signale soll der Zeitbereich n ∈ [−20, 20] verwendet werden. Stellen Sie alle Signale graphisch am Bildschirm dar. x1 (n) = δ(n) (Einsimpuls) x2 (n) = σ(n) (Sprungfunktion) x3 (n) = (−1)n ( 0 n≤0 x4 (n) = n n>0   n ≤ −5   −5 x5 (n) = n −5 < n < 5    5 n≥5

Probieren Sie insbesondere bei den zweistufigen Signalen mehrere L¨osungen aus.

1.1 Erzeugung elementarer Signale

5

Ein besonderes Signal ist die zeitdiskrete Sinus- oder Cosinusschwingung, deren zeitkontinuierliches Gegenst¨ uck ja der Prototyp eines periodischen Signals ist. In der folgenden Aufgabe sollen Sie untersuchen, ob diese Aussage auch im zeitdiskreten Fall g¨ ultig ist.

Aufgabe 1.2 Die zeitdiskrete Cosinusschwingung mit der “Frequenz” θ sei gegeben durch x(n) = cos θn mit n ∈ [−20, 20]. F¨ ur welche Werte θ ist x(n) periodisch? Wie h¨ angt θ mit der Anzahl der Signalwerte pro Periode zusammen? Variieren Sie θ im Intervall [0, 2π] und kommentieren Sie das Ergebnis. Welche Bedeutung haben die Werte θ = π und θ = 2π, wenn x(n) durch Abtastung des analogen Signals xa (t) = cos ωt zustande kommt, d.h. x(n) = xa (nT )?

Ein weiteres Beispiel eines wichtigen Signals ist die zeitdiskrete Exponentialschwingung x(n) = αn

n ≥ 0,

(1.1)

t

die im Analogbereich dem Verlauf xa (t) = e− τ , t ≥ 0, entspricht. Im Gegensatz zum analogen Signal tritt im zeitdiskreten Fall f¨ ur α < 0 ein oszillierendes Verhalten auf. Mit den Vektorverarbeitungsm¨ oglichkeiten von MATLABr kann dieses Signal durch die Anweisungen n = 0:20; alpha = 0.9; x = alpha .^ n;

% vector of time points 0, 1, 2 ... 20 % operator .^ performs a componentwise % exponentiation

stem(n,x);

erzeugt werden, wobei durch den Potenzoperator .^ die skalare Gr¨oße α hoch einem Vektor (hier n) genommen wird. Das bedeutet, daß mit einem einzigen Befehl alle Potenzen α0 , α1 , . . . α20 berechnet werden k¨onnen. Diese Syntax zur Verkn¨ upfung von Vektoren, die auch elementweise Operationen zul¨aßt, ist eine der Hauptvorz¨ uge von MATLABr . Mit der folgenden Aufgabe k¨onnen Sie sich mit dieser Notation vertraut machen.

6

1 Zeitdiskrete Signale Aufgabe 1.3 Verwenden Sie die bisher vorgestellten MATLABr -Befehle, um die folgenden Signale zu erzeugen. Dabei soll n ∈ [−20, 20] sein und α in [−1, 1] liegen. x1 (n) =

αn σ(n)

x2 (n) = x3 (n) =

(n + 1)αn σ(n) α|n|   0 n 0)

5

6

7

8

9

n

x(n + k) k=5

Voreilung n→n+k (k > 0)

−7 −6 −5 −4 −3 −2 −1 0

1

2

3

4

5

6

7

8

9

n

Abbildung 1.2: Zeitverschiebung bei zeitdiskreten Signalen

y = zeros(1,40); n = [0:20]; x = 0.8 .^ n; Nd = 10; y(n+Nd+1) = x; stem(y);

% create exponentially decaying signal % time delay in samples % y contains x delayed by Nd samples

Die Zeitinversion l¨aßt sich mit MATLABr dadurch erzeugen, daß nach der Signalspeicherung im Vektor x, die Elemente in umgekehrter Reihenfolge dem Vektor entnommen werden: n = -20:20; x = 0.8 .^ [0:20]; x = [zeros(1,20) x]; x_rev = x(end:-1:1);

% % % % % % %

create a row vector of exponentially decaying signal samples add leading zeros to vector x to shift time origin perform time-inversion by reversing order of vector components Note: end = index of last x-component

1.2 Zeitachsentransformationen

9 x(n)

−7 −6 −5 −4 −3 −2 −1 0

1

2

3

4

5

6

7

8

9

2

3

4

5

6

7

8

9

n

x(−n)

−7 −6 −5 −4 −3 −2 −1 0

1

n

Abbildung 1.3: Zeitumkehr bei zeitdiskreten Signalen

figure, stem(n,x); figure, stem(n,x_rev);

% figure opens a new plot window

Mit der Zeitverschiebung k¨ onnen durch periodische Fortsetzung eines zeitlich begrenzten Signals x(n), n ∈ [0, N − 1], periodische Signale xp (n) erzeugt werden: ∞ X xp (n) = x(n − kN ) = x(n ⊕ N ) (1.2) k=−∞

(⊕ ist die Modulooperation). Da in MATLABr alle Signale endliche Dauer haben, ist bei der Verarbeitung periodischer Signale zu beachten, daß keine Randeffekte entstehen. Die Vektorl¨ ange sollte daher ein ganzzahliges Vielfaches der Periodendauer N sein: N = 20; n = 0:N-1; x = 0.7 .^ n; n = 0:4*N-1; xp = x(rem(n,N)+1);

% period % finite length signal % use modulo operation rem() to periodically % extend signal x

stem(n,xp);

Bei der Zeitverschiebung periodischer Signale, die auch als zyklische Zeitverschiebung bezeichnet wird, muß ebenfalls die Modulooperation eingesetzt werden, um die periodischen Fortsetzungen in den betrachteten Signalausschnitt zu schieben. Das Nachschieben von Nullen, wie bei aperiodischen Signalen, darf daher bei

10

1 Zeitdiskrete Signale

periodischen Signalen nicht angewendet werden! Das folgende Beispiel zeigt eine zyklische Zeitverschiebung mit MATLABr : N = 20; Nd = 10; n = 0:N-1; x = 0.7 .^ n; n = 0:4*N-1; xp = x(rem(n+Nd,N)+1); stem(n,xp);

% period % time-shift in samples % finite length signal % cyclic time-shift by Nd samples

Bei der Zeitverschiebung periodischer Signale kann der Zeitindex null oder negativ werden, was zu Fehlermeldungen in MATLABr f¨ uhrt. Durch Addition der Periodendauer zur Signalverz¨ ogerung l¨ aßt sich das jedoch einfach vermeiden: xp (n − N d) = x((n − N d) ⊕ N ) = x(n + N − N d) ⊕ N ) (mit 0 ≤ N d ≤ N ).

(1.3)

Mit der folgenden Aufgabe k¨ onnen die bisher besprochenen Zeitachsentransformationen an einfachen Signalen angewendet werden. Die Ergebnisse der Simulationen mit MATLABr sollten stets mit analytisch gewonnenen Resultaten verglichen werden.

Aufgabe 1.5 F¨ ur das zu betrachtende Zeitintervall wird wieder n ∈ [−20, 20] gew¨ahlt. Beachten Sie, daß bei elementweisen arithmetischen Verkn¨ upfungen von Vektoren die Vektorl¨ angen und die Art (Zeilen- oder Spaltenvektor) u ussen. Mit Ausnahme von Addition und Subtraktion ¨bereinstimmen m¨ muß der Punktoperator (also .* oder ./ oder .^) f¨ ur die elementweisen Operationen angewendet werden. x1 (n) = σ(n + 4) − σ(n − 4) x2 (n) = e−0.1(n+10) σ(n + 10)  1 x3 (n) = x2 (n) ± x2 (−n) 2 x4 (n) = x2 (−n − 10) x5 (n) = x1 ((n − 4) ⊕ 14)

1.2 Zeitachsentransformationen

11

Neben den bisher vorgestellten elementaren Zeitachsentransformationen gibt es auch solche, die f¨ ur fortgeschrittene Signalverarbeitungsaufgaben ben¨otigt werden und die Dezimation und Interpolation von zeitdiskreten Signalen betreffen. Diese Operationen werden bei der Abtastratenumsetzung angewendet, aber auch bei der Speicherung und Darstellung von Signalen eingesetzt. Bei der Dezimation (Unterabtastung) eines zeitdiskreten Signals um den ganzzahligen Faktor M wird aus dem Signal jeder M -te Amplitudenwert herausgegriffen, d.h. x(n) → x(nM ). Dadurch wird bei gespeicherten Signalen die Signall¨ange um den Faktor M reduziert oder bei Echtzeitverarbeitung das Abtastintervall um den Faktor M vergr¨oßert3 . Graphisch l¨ aßt sich dieser Vorgang wie in Abb. 1.4 darstellen. Originalsignal x(n) 1 0.5 0 -0.5 -1 -20

-15

-10

-5

0

5

10

15

20

Zeitindex n Unterabgetastetes Signal y(m) = x(mM ) 1 0.5 0 -0.5 -1 -5

-4

-3

-2

-1

0

1

2

3

4

5

Zeitindex m

Abbildung 1.4: Graphische Darstellung der Unterabtastung (Dezimation) eines zeitdiskreten Signals x(n) um den Faktor M = 4 ¨ Ahnlich wie bei der Abtastung zeitkontinuierlicher Signale kann auch bei der Dezimation Aliasing entstehen. Mit der folgenden MATLABr -Simulation k¨onnen ¨ Sie diesen Sachverhalt (neben Ihrer theoretischen Uberlegung) auch experimentell verifizieren. Durch Variation des Dezimationsfaktors M kann das Einsetzen von Aliasing beobachtet werden. 3 Genaugenommen wird ein gespeichertes Signal mit N Werten durch Dezimation mit dem N ) Werten reduziert (z.B. ceil( 41 ) = 11, wie in Abb. 1.4). Faktor M auf ein Signal mit ceil( M 4

12

1 Zeitdiskrete Signale

n = -40:40; theta = pi/20; x = sin(theta*n); M = 4; y = x(1:M:end); stem(y);

% time indices of sinusoid % relative frequency of sinusoid % decimation factor M = 4 % extract every Mth component out of x

Aufgabe 1.6 Bestimmen Sie den theoretischen Zusammenhang zwischen dem maximalen Faktor M und der “Frequenz” θ des Sinussignals x(n) = sin θn, so daß y(m) = x(mM ) kein Aliasing aufweist. Kontrollieren Sie Ihr Ergebnis experimentell mit MATLABr .

Eine Signalunterabtastung kann auch bei der graphischen Darstellung von sehr langen Signalen, wie z.B. von Sprachsignalen, n¨ utzlich sein. So ist es sicherlich nicht sinnvoll, bei einer Bildschirmaufl¨ osung von 640 × 480 Punkten ein Signal mit mehr als etwa 500 Abtastwerten darzustellen. Man wird daher nur jeden M ten Amplitudenwert zeichnen. Das f¨ uhrt allerdings speziell bei Sprachsignalen zu relativ starken Verf¨alschungen der Signalstruktur (siehe Abb. 1.5). Um diesen Effekt zu unterdr¨ ucken, kann man einen simplen Algorithmus anwenden, der das Erscheinungsbild stark unterabgetasteter Sprachsignale wesentlich verbessert. Es werden jeweils M Abtastwerte zu einem Block zusammengefaßt und f¨ ur jeden dieser Bl¨ocke das Minimum und Maximum der Amplituden bestimmt. Zeichnet man die Minimum- und Maximumverl¨ aufe in einem Diagramm, so ergibt sich eine Darstellung, die etwa die Einh¨ ullende des Sprachsignals zeigt und eine starke Datenreduktion erm¨ oglicht. Im Gegensatz zur reinen Dezimation wird hier der Sprachsignalverlauf sehr gut wiedergegeben (siehe Abb. 1.6). Mit MATLABr kann dieses einfache Verfahren zur Datenreduktion sehr kompakt implementiert werden (der Vektor x enth¨ alt das Sprachsignal): Nx = length(x); Nb = floor(Nx/M); Nx = M*Nb; X = zeros(M,Nb); X(:) = x(1:Nx);

% % % % % % %

number of blocks of length M make Nx a multiple of M create a M x Nb matrix of zeros each column of X contains a block of M consecutive speech samples xmax = row vector of column maxima of X xmin = row vector of column minima of X

xmax = max(X); xmin = min(X); t = 0:Nb-1; hold on, area(t,xmax), area(t,xmin), hold off, colormap([0 0.6 1]), grid on % colored envelope plot using area()

1.2 Zeitachsentransformationen

13 Originalsprachsignal x(n)

0.5 0 -0.5

0

2000

4000

6000

8000

10000

12000

Zeitindex n Sprachsignal dezimiert um Faktor M = 40 0.5 0 -0.5 0

50

100 150 200 Zeitindex n (dezimiert)

250

300

Abbildung 1.5: Graphische Darstellung der Dezimation bei Sprachsignalen Der Trick bei der blockweisen Minimum- und Maximumbestimmung ist hier das Speichern des Signalvektors in den Spalten einer Matrix. In MATLABr gibt es dazu den :-Operator, der diese Umorganisation der Daten durchf¨ uhrt. Am besten l¨aßt sich das an einem einfachen Beispiel erl¨ autern. Mit den Anweisungen x = 1:12; X = zeros(3,4); X(:) = x;

wird aus dem Zeilenvektor xT = (1, 2, 3, . . . , 12) eine 3 × 4 Matrix   1 4 7 10    X=  2 5 8 11  3 6 9 12

gebildet, d.h. der Vektor wird in Bl¨ ocke der L¨ ange 3 unterteilt, die dann nebeneinander als Spalten der Matrix angeordnet werden. Es gibt auch die Umkehroperation x = X(:), die die Spalten einer Matrix zu einem Vektor auff¨adelt. Das Gegenst¨ uck zur Dezimation von Signalen ist die Interpolation, bei der zwischen den Abtastwerten neue Werte eingef¨ ugt werden. Bei einer Interpolati-

14

1 Zeitdiskrete Signale

Min/Max-Plot (Einh¨ ullende) des Sprachsignals 0.5 0 -0.5

0

50

100 150 200 Zeitindex n (dezimiert)

250

300

Abbildung 1.6: Datenreduktion durch Min/Max-Berechnung bei der graphischen Darstellung von Sprachsignalen on um den ganzzahligen Faktor L werden L − 1 Werte eingef¨ ugt, so daß bei Signalspeicherung ein Signal der L¨ ange N auf die L¨ ange N L ausgedehnt wird4 . Beim Echtzeitbetrieb wird durch Interpolation das Abtastintervall um den Faktor L verk¨ urzt. Die einfachste Art der Signalinterpolation ist das Einf¨ ugen von Nullen. Eine verbesserte Methode ist das Wiederholen von Signalwerten durch eine Halteoperation (siehe Abb. 1.7). Die besten Ergebnisse erh¨alt man, wenn die Taktratenerh¨ohung mit einer Signalfilterung kombiniert wird (siehe z.B. die MATLABr -Funktion resample()). Um das Einf¨ ugen von Nullen mit MATLABr effizient durchzuf¨ uhren, kann man die oben erw¨ahnten Matrizenverarbeitungsm¨ oglichkeiten von MATLABr heranziehen. Dazu wird zuerst eine Matrix definiert, deren erste Zeile das gegebene Signal enth¨ alt. An diese Zeile werden L − 1 Zeilen mit Nullen angef¨ ugt, wenn mit dem Faktor L interpoliert werden soll. Das interpolierte Signal wird dadurch erzeugt, daß mit dem :-Operator alle Spalten dieser Matrix zu einem langen Spaltenvektor aneinandergef¨ ugt werden. n = 0:10; x = sin(0.1*pi*n); L = 4; X = [x; zeros(L-1,length(x))];

y = X(:); stem(y)

% time indices for signal x % original signal stored in % row vector x % % % %

first row of matrix X is x append zero matrix to obtain desired block matrix concatinate all columns of X

4 Zu jedem Signalwert (daher auch zum letzten) werden L−1 Nullen angef¨ ugt, so daß insgesamt N + N (L − 1) = N L Signalwerte entstehen.

1.2 Zeitachsentransformationen

15

Originalsignal x(n) 1 0.5 0 -0.5 -1 0

1

2

3

4

5

6

7

8

9

10

Zeitindex n Interpolation mit Nullen 1 0.5 0 -0.5 -1 0

5

10

15

20

25

30

35

40

30

35

40

Zeitindex n Interpolation mit Halteoperation 1 0.5 0 -0.5 -1 0

5

10

15

20

25

Zeitindex n

Abbildung 1.7: Graphische Darstellung zweier einfacher Interpolationsmethoden des zeitdiskreten Signals x(n) mit dem Faktor L = 4

16

1 Zeitdiskrete Signale

In ¨ ahnlich effizienter Weise kann auch die zweite Methode der Interpolation, das ist die Wiederholung der Signalwerte, realisiert werden. Aufgabe 1.7 Modifizieren Sie die vorherigen MATLABr -Befehle f¨ ur die Signalinterpolation mit Halteoperation. Dabei wird jeder Signalwert L − 1 mal wiederholt (anstelle des Anh¨ angens von L − 1 Nullen). Hinweis: Die ben¨otigte Matrix kann sehr einfach als ¨außeres Produkt eines Einsvektors mit dem Signalvektor gebildet werden5 .

F¨ ur die Realisierung weiterer Methoden zur Signalinterpolation werden lineare digitale Filter ben¨otigt. Diese Filter liefern die passenden Zwischenwerte, die einen m¨ oglichst “glatten” Signalverlauf ergeben. Die Grundlage zur linearen Signalfilterung bildet die Signalfaltung, die im n¨ achsten Abschnitt behandelt wird.

1.3

Faltungsoperation f¨ ur zeitdiskrete Signale

Die Faltungsoperation ist eine grundlegende Verkn¨ upfung von Signalen, mit zahlreichen Anwendungsm¨oglichkeiten. Sie kommt z.B. bei digitalen Filtern zum Einsatz, bei der Multiplikation von Polynomen und bei der Berechnung von Korrelationsfunktionen. F¨ ur Signale unendlicher Dauer ist die Faltungsoperation (auch Faltungssumme oder kurz Faltung genannt) folgendermaßen definiert (z.B. [1]): y(n) =

∞ X

k=−∞

h(k) x(n − k) =

∞ X

k=−∞

x(k) h(n − k),

n = 0, ±1, ±2, . . .

(1.4)

Graphisch ist die Faltungsoperation an einem einfachen Beispiel in Abb. 1.8 anschaulich dargestellt. Sind die Signale von endlicher Dauer, wie in MATLABr , dann erstreckt sich die Summation auf ein endliches Intervall und man erh¨alt mit x(n), n ∈ [0, Nx − 1] und h(n), n ∈ [0, Nh − 1] min(n,Nh −1)

y(n) =

X

k=max(0,n−Nx +1)

h(k) x(n − k),

n = 0, 1, 2, . . . , Nx + Nh − 2.

(1.5)

5 Ein außeres Produkt ist das Produkt eines Spaltenvektors mit einem Zeilenvektor und ergibt ¨ eine Matrix. Im Gegensatz dazu liefert das innere Produkt (Zeilenvektor mal Spaltenvektor) eine skalare Gr¨ oße.

1.3 Faltungsoperation f¨ ur zeitdiskrete Signale

17

h(k)

(a) k

0

h(−k)

(b) k

0

h(n0 − k)

(c) k

n0

0

x(k)

(d)

... k

0

y(n) y(n0 )

0

n0

(e) n

P Abbildung 1.8: Graphische Darstellung der Faltung y(n) = ∞ k=−∞ x(k)h(n − k) (Impulsantwort (a), Zeitinversion (b), Zeitinversion+Verschiebung (c), Eingangssignal (d), Ausgangssignalwert bei n = n0 (e))

18

1 Zeitdiskrete Signale

Das Faltungsergebnis hat eine Signall¨ ange Nx + Nh − 1. F¨ ur die Implementierung der Faltung stehen in MATLABr eigene Funktionen zur Verf¨ ugung (siehe help conv oder help filter), so daß an sich keine eigenen Funktionen entwickelt werden m¨ ussen. Trotzdem ist es eine lehrreiche Aufgabe, die auch wichtige Anwendungen hat, die Faltung mit Hilfe von Matrizen- und Vektoroperationen zu realisieren. F¨ ur einen gegebenen Zeitindex n l¨ aßt sich n¨amlich mit h = (h(0), h(1), . . . , h(Nh − 1))T

x(n) = (x(n), x(n − 1), . . . , x(n − Nx + 1))T

(1.6) (1.7)

die Faltungssumme als Skalarprodukt (inneres Produkt) dieser Vektoren darstellen: y(n) = hT x(n) = xT (n)h . (1.8) Faßt man die Faltungsergebnisse f¨ ur alle Zeitindizes n zum Vektor y = (y(0), y(1), . . . , y(Nx + Nh − 2))T

(1.9)

zusammen, dann ergibt sich y = Hx .

(1.10)

H ist eine T¨oplitz-Matrix (siehe dazu [2]) der Dimension (Nx + Nh − 1) × Nx . Um die Struktur dieser Matrix zu zeigen, wird der Fall Nx = 4, Nh = 3 betrachtet:     h(0) 0 0 0 y(0)       y(1)   h(1) h(0) x(0) 0 0        y(2)   h(2) h(1) h(0) x(1)  0      . (1.11)  =     y(3)   0 h(2) h(1) h(0    x(2)         x(3) 0 h(2) h(1)   y(4)   0 0 0 0 h(2) y(5)

In den Spalten von H sind alle m¨ oglichen Zeitverschiebungen von h(n) gespeichert. F¨ ur die Erzeugung der T¨ oplitz-Matrix gibt es in MATLABr verschiedene M¨ oglichkeiten. Die einfachste ist die Verwendung einer FOR-Schleife, in der h(n) in den Spalten der Matrix H gespeichert wird:

H = zeros(Nx+Nh-1,Nx); h = h(:); for n = 1:Nx H(n:n+Nh-1,n) = h; end

% fill matrix H with zeros % force h to column vector % place h in columns of H

Die Matrix kann aber auch ohne FOR-Schleife aufgestellt werden. Diese Methode ist trickreicher und effizienter, aber auch weniger durchsichtig. Es ist jedoch ein wichtiges Beispiel f¨ ur die Manipulation von Indizes in MATLABr :

1.3 Faltungsoperation f¨ ur zeitdiskrete Signale

19

h1 = [zeros(Nx-1,1) ; h(:) ; zeros(Nx-1,1)]; % add zeros to vector h Ny = Nx + Nh - 1; ic = [0:Ny-1]’; ir = Nx:-1:1; H = ic(:,ones(Nx,1)) + ir(ones(Ny,1),:); % H contains indices to place % h in final matrix H(:) = h1(H); % reshape vector h1 to matrix H

Im ersten Schritt wird f¨ ur den Fall Nx = 4 und Nh = 3 der Vektor h mit Nullen zu einem Hilfsvektor h1 = (0, 0, 0, h(0), h(1), h(2), 0, 0, 0)T

(1.12)

erg¨ anzt. Danach wird eine Indexmatrix gebildet, die im vorliegenden Fall die Form 

     H=    

4 3 2 1



 5 4 3 2   6 5 4 3    7 6 5 4    8 7 6 5  9 8 7 6

(1.13)

hat. Die Bildung dieser Hilfsmatrix erfolgt durch Wiederholung von Spalten und Zeilen mit den ones()-Vektoren in den Teilmatrizen ic() und ir() und anschließender Addition.6 Diese Hilfsmatrix enth¨ alt die Indizes der Komponenten des Vektors h1 . Im letzten Schritt werden die Komponenten von h1 an die entsprechenden Stellen der Matrix H positioniert. Dabei wird gleichzeitig die Matrix mit der Ergebnismatrix u ¨berschrieben. Die Matrizendarstellung Gl. 1.10 der Faltungsoperation hat unter MATLABr eine Reihe von Vorteilen. Sie erm¨ oglicht die Implementierung von Blockverarbeitungsfiltern. Auch Filter mit Taktratenumsetzung (Multiratenfilter) und adaptive Filter lassen sich damit elegant darstellen. Eine weitere Anwendung wird bei der inversen Filterung auf Seite 32 behandelt. Mit den angegebenen MATLABr -Befehlen f¨ ur die Faltung kann nun im Rahmen der n¨achsten Aufgabe eine MATLABr -Funktion programmiert werden. Alternative Implementierungen der Faltung, die die schnelle Fouriertransformation einsetzen und noch effizienter sind, werden in Kapitel 3 behandelt. 6 Das entspricht dem außeren Vektorprodukt (Spalte mal Zeile) eines Vektors mit einem Eins¨ vektor.

20

1 Zeitdiskrete Signale Aufgabe 1.8 Entwickeln Sie eine MATLABr -Funktion zur Faltung von Signalen, indem Sie eine Datei conv_lin.m mit folgendem Inhalt anlegen: function y = conv_lin(h,x) Nx = length(x); Nh = length(h); Ny = ... % compute convolution matrix H ... % compute result vector y = ...

Als Alternative k¨onnen Sie die Faltung auch mit FOR-Schleifen berechnen. Zum Vergleich der Rechenzeiten beider Funktionen f¨ ugen Sie am Beginn der Funktion T0 = clock; ein. Nach den Rechenoperationen erhalten Sie mit etime(clock,T0) die Rechenzeit. Wenden Sie Ihr Programm auf folgende Signale an: a) h(n) = 1/10, 0 ≤ n ≤ 9, x(n) = sin π5 n, 0 ≤ n < 50 b) h = (1, −1, 1)T , x(n) = sin π3 n, 0 ≤ n < 30 c) h(n) = δ(n) − δ(n − 1), x(n) = σ(n). Interpretieren und vergleichen Sie die Ergebnisse mit jenen der MATLABr -Funktion conv().

Bei der Faltung zweier periodischer Signale mit der gleichen Periodendauer N erstreckt sich die Summation in Gl. 1.4 u ¨ber die Dauer einer Periode. Außerdem muß bei der Zeitverschiebung die periodische Fortsetzung ber¨ ucksichtigt werden. Damit ergibt sich die zyklische Faltung y(n) =

N −1 X k=0

h(k) x((n − k) ⊕ N ),

n = 0, 1, 2, . . . , N − 1.

(1.14)

Im Gegensatz zur normalen (linearen) Faltung zweier Signale der gleichen L¨ange N , bei der das Faltungsergebnis die L¨ ange 2N −1 hat, ¨andert sich das Zeitintervall bei der zyklischen Faltung nicht, da ja auch das Ergebnis periodisch mit N ist. Diese unterschiedlichen Ergebnisse sind in Abb. 1.9 an Hand der Faltung zweier rechteckf¨ormiger Signale dargestellt. Durch die periodische Fortsetzung bei der

1.3 Faltungsoperation f¨ ur zeitdiskrete Signale

21

x(n) = h(n) 1.5 1 0.5 0 0

5

10

15

20

15

20

Zeitindex n Ergebnis der zyklischen Faltung 12 8 4 0 0

5

10 Zeitindex n

Ergebnis der normalen (linearen) Faltung 12 8 4 0

0

5

10

15

20

25

30

35

40

Zeitindex n

Abbildung 1.9: Graphische Darstellung der linearen und zyklischen Faltung des zeitdiskreten Signals x(n) mit sich selbst

22

1 Zeitdiskrete Signale

zyklischen Faltung stimmen in diesem Beispiel die ersten 3 Signalwerte bei beiden Faltungsergebnissen nicht u ¨berein. Ist die Impulsbreite des Rechtecksignals hingegen kleiner oder h¨ ochstens gleich 10, dann tritt kein Unterschied auf. Diesen Sachverhalt k¨onnen Sie in der n¨ achsten Aufgabe n¨aher erforschen. Denken Sie dabei daran, daß bei der zyklischen Faltung die Signale periodisch fortgesetzt sind.

Aufgabe 1.9 Soll die lineare Faltung zweier Signale der L¨ ange N mit Hilfe der zyklischen Faltung durchgef¨ uhrt werden, so kann man durch Anf¨ ugen von Nullen die Signale auf eine geeignete L¨ ange bringen, so daß der Einfluß der periodischen Fortsetzung durch die Nullen eliminiert wird. Wieviele Nullen muß man mindestens an die Signale anf¨ ugen, damit diese Methode funktioniert?

Wird die zyklische Faltung in Matrizenschreibweise y = Hc x

(1.15)

dargestellt, so erh¨alt man wegen der zyklischen Zeitverschiebung von h(n) in Gl. 1.14 eine zyklische Faltungsmatrix Hc , also beispielsweise f¨ ur N = 4: 

y(0)





h(0) h(3) h(2) h(1)

    y(1)   h(1) h(0) h(3) h(2)     y(2)  =  h(2) h(1) h(0) h(3)    h(3) h(2) h(1) h(0) y(3)



x(0)



    x(1)      x(2)  .   x(3)

(1.16)

Im Gegensatz zur linearen Faltung ist bei der zyklischen Faltung die Faltungsmatrix quadratisch. Das Aufstellen dieser zyklischen Matrix kann mit MATLABr mit den gleichen Befehlen wie auf Seite 19 erfolgen. Lediglich der Vektor h1 ist abweichend zu initialisieren: h = h(:); h1 = [h(2:N) ; h]; ic = [0:N-1]’; ir = N:-1:1; Hc = ic(:,ones(N,1)) + ir(ones(N,1),:); Hc(:) = h1(Hc);

1.3 Faltungsoperation f¨ ur zeitdiskrete Signale

23

Aufgabe 1.10 Verwenden Sie diese MATLABr -Befehle f¨ ur ein M-File conv_cyc.m zur Implementierung der zyklischen Faltung und verwenden Sie zum Testen folgende Signale: a) N = 10, h(n) = (−1)n , 0 ≤ n ≤ N − 1, x(n) = 1, 0 ≤ n ≤ N − 1 b) Wiederholen Sie Punkt a) f¨ ur N = 11 c) N = 10, h(n) = δ(n) − δ(n − 1), 0 ≤ n ≤ N − 1, x(n) = n, 0 ≤ n ≤ N −1. Vergleichen Sie hier das Ergebnis der zyklischen Faltung mit jenem der linearen Faltung.

Die bisher vorgestellten Realisierungsm¨ oglichkeiten beschr¨anken sich auf die direkte Programmierung der Faltungssumme, deren Rechenaufwand bei Signalen der L¨ ange N mit einer Komplexit¨ at O(N 2 ) ansteigt. Im Kapitel 3 wird eine schnellere Methode auf der Grundlage der FFT (schnelle Fouriertransformation) behandelt, deren Aufwand nur mit O(N log2 N ) zunimmt. Ein Sonderfall der Faltungsoperation ist die Berechnung der Korrelation zweier Signale entsprechend der Beziehung y(n) =

∞ X

h(k) x(n + k),

k=−∞

n = 0, ±1, ±2, . . . ,

(1.17)

bei der im Vergleich zu Gl. 1.4 in der Summenbildung x(k) anstelle von x(−k) verwendet wird. Die Korrelation entspricht daher der Faltungsoperation, wobei ein Signal zeitinvers in die Berechnung eingeht. Ein Sonderfall ist die Autokorre¨ lation, bei der h(n) = x(n) ist und die ein Maß f¨ ur die Ubereinstimmung zeitlich auseinanderliegender Signalwerte ist. Mit der Autokorrelation werden daher zeitlich verschobene, a¨hnliche Signalteile detektiert. In MATLABr k¨onnen die Faltungsfunktionen auch direkt zur Korrelationsberechnung eingesetzt werden. Bei Signalen h(n) und x(n) mit endlicher Dauer Nh bzw. Nx erh¨alt man mit Gl. 1.17 min(Nh −1,Nx −n−1)

y(n) =

X

k=max(−n,0)

h(k) x(n + k),

n = −Nh + 1, . . . , Nx − 1.

(1.18)

Das Korrelationsergebnis hat wie bei der normalen Faltung die L¨ange Nx +Nh −1. Allerdings treten jetzt bei y(n) negative Indizes auf. In MATLABr wird man daher

24

1 Zeitdiskrete Signale

bei graphischen Darstellungen den Ursprung der n-Achse entsprechend verschieben. In der Matrizenschreibweise der Korrelation y = Hd x hat die Faltungsmatrix Hd f¨ ur Nx = 4, Nh    h(2) 0 y(−2)     y(−1)   h(1) h(2)     y(0)   h(0) h(1)    =   y(1)   0 h(0)       0  y(2)   0 0 0 y(3)

= 3 folgende Gestalt:  0 0  x(0) 0 0     h(2) 0   x(1)  h(1) h(2)    x(2)  x(3) h(0) h(1)  0 h(0)

(1.19)



  .  

(1.20)

Sie besitzt die gleiche Struktur wie in Gl. 1.11, nur die h(n)-Werte treten in den Spalten erwartungsgem¨aß in umgekehrter Reihenfolge auf. Eine der vielen Anwendungen der Korrelation von Signalen ist die Impulskompression, die bei der Signaldetektion eine wesentliche Rolle spielt. Ein Signal, dessen Autokorrelation stark lokalisiert ist, ist der in Abb. 1.10 dargestellte sinusf¨ ormige Chirp  x(n) = sin αn2 , n = 0, 1, . . . , N − 1. (1.21)

Diese starke Konzentration der Autokorrelation tritt beispielsweise bei Sinussignalen nicht auf. Wird dieses Chirp-Signal mit anderen Signalen korreliert (z.B. mit Rauschen oder Sinussignalen), dann ist das Maximum der Korrelation deutlich geringer als die Autokorrelation des Chirp. Diese Tatsache, die bei der Signaldetektion ausgen¨ utzt wird, k¨onnen Sie in der folgenden Aufgabe im Detail untersuchen. Aufgabe 1.11 Verwenden Sie Ihre MATLABr -Funktion zur Faltung f¨ ur die Darstellung der Autokorrelation des Chirp-Signals von Gl. 1.21. Bestimmen Sie danach Verlauf und Maximum der Korrelation des Chirp-Signals von Gl. 1.21 (α = π/3000) mit folgenden Signalen:  5π n , n = 0, 1, . . . , N mit N = 300. a) h(n) = sin 300  π b) h(n) = sin 2000 n2 , n = 0, 1, . . . , N mit N = 300. c) h = randn(N,1); (Gaußsches Rauschsignal der L¨ange N ).

1.3 Faltungsoperation f¨ ur zeitdiskrete Signale

25

Chirp-Signal x(n) 1 0.5 0 -0.5 -1 0

50

100

150

200

250

300

200

300

Index n Autokorrelationsfunktion von x(n) 150 100 50 0 -50 −300

−200

−100

0

100

Index n

Abbildung 1.10: Sinusf¨ormiges Chirp-Signal und Autokorrelationsfunktion f¨ ur α = π/3000 und N = 300

In der abschließenden Aufgabe soll mit Hilfe der Autokorrelation die Periodendauer verrauschter Sinussignale bestimmt werden. Dazu wird zun¨achst mit den folgenden MATLABr -Befehlen gaußsches Rauschen zum sinusf¨ormigen Meßsignal addiert. Als Parameter wird der Signal-Rausch-Abstand (SNR) im logarithmischen Maßstab (dB) vorgegeben:

Nx = 200; SNR = -5; w0 = 2*pi/Nx*5; x = sin(w0*[0:Nx-1]); r = randn(size(x)); R = norm(x)/norm(r); gain = R * 10^(-SNR/20); xn = x + gain*r;

% SNR in dB (SNR = 20*log20(R)) % frequency of sinusoid % % % %

create gaussian noise compute actual SNR gain factor needed for given SNR add noise to create noisy measurement data

26

1 Zeitdiskrete Signale Aufgabe 1.12 Bestimmen Sie anhand der Autokorrelationsfunktion des verrauschten Sinussignals die Periodendauer (oder die Frequenz) in Abh¨angigkeit vom Signal-Rausch-Abstand SNR. Die automatische Berechnung der Periodendauer kann im vorliegenden Fall einfach durch Z¨ahlen der Nulldurchg¨ange des Signals erfolgen. a) Ab welchem SNR nimmt der Meßfehler drastisch zu? b) Wie h¨angt die Meßgenauigkeit mit der Meßdauer (Signall¨ange Nx) zusammen? Vergleichen Sie das Ergebnis mit den Messungen der Periodendauer direkt am verrauschten Sinussignal. Hinweis: Die Bestimmung der Nulldurchg¨ ange ist in MATLABr denkbar einfach. Wandeln Sie die Autokorrelationsfunktion in ein Rechtecksignal um. Durch Differenzbildung benachbarter Werte erhalten Sie Impulse an den Positionen der Nulldurchg¨ ange. Die Positionen werden dann mit dem FIND-Befehl bestimmt.

2 Zeitdiskrete Systeme Die Verarbeitung zeitdiskreter Signale erfolgt mit zeitdiskret arbeitenden Systemen, die man entsprechend ihren Haupteigenschaften in folgender Weise einteilen kann: • Lineare Systeme, wie z.B. linearer Mittelwertbilder, frequenzselektive Filter, • Nichtlineare Systeme (z.B. Minimum/Maximumdetektor, Medianfilter), • Zeitinvariante Systeme (zeitlich konstante Systemparameter), • Zeitvariante Systeme, wie z.B. Systeme mit Modulatoren, Systeme mit mehreren Taktraten (Multiratensysteme), • Adaptive Systeme (automatische Anpassung von Systemparametern). Eine Feingliederung kann nach Nebeneigenschaften wie Kausalit¨at, Stabilit¨at, Minimalphasigkeit, Linearphasigkeit, Invertierbarkeit etc. erfolgen. Die erw¨ahnten Eigenschaften werden in einigen Aufgaben dieses Buches behandelt. Ein bereits vorgestelltes Beispiel eines nichtlinearen Systems ist die auf Seite 12 blockweise Minimum- und Maximumbestimmung zur Dezimation von Sprachsignalen. F¨ ur die Beschreibung der Systeme stehen eine Reihe grundlegender Methoden zur Verf¨ ugung, die in den folgenden Abschnitten zusammengefaßt werden und die sich sehr gut mit MATLABr f¨ ur die praktische Anwendung umsetzen lassen. Dabei stehen in erster Linie die linearen und zeitinvarianten Systeme im Vordergrund.

28

2 Zeitdiskrete Systeme

2.1

Beschreibung durch Faltungsoperation

Zeitdiskrete Systeme transformieren das Eingangssignal x(n) durch Anwendung eines zeitdiskret arbeitenden Algorithmus T {·} in ein Ausgangssignal y(n): y(n) = T {x(n)} .

(2.1)

Eine wichtige Klasse von Systemen sind lineare Systeme, bei denen die Antwort auf eine Summe von Eingangssignalen gleich der Summe der Einzelantworten ist. Die Summenbildung ist mit der Systemfunktion T {·} vertauschbar: y(n) = T {ax1 (n) + bx2 (n)} = aT {x1 (n)} + bT {x2 (n)} ∀n, a, b, x1 , x2 .

(2.2)

Eine unmittelbare Anwendung ergibt sich bei Darstellung des Eingangssignals als Summe zeitverschobener und gewichteter Einsimpulse nach der Beziehung x(n) =

∞ X

k=−∞

x(k)δ(n − k) .

(2.3)

Jeder Einsimpuls in Gl. 2.3 selektiert in der Summe nur den x-Wert bei n = k. Alle anderen Werte werden mit null gewichtet. Wendet man diese Darstellung auf Gl. 2.2 an, so folgt ( ∞ ) ∞ ∞ X X X y(n) = T x(k)δ(n − k) = x(k)T {δ(n − k)} = x(k)h(n, k) , k=−∞

k=−∞

k=−∞

(2.4) mit der Impulsantwort h(n, k) = T {δ(n−k)}. Das Eingangs/Ausgangsverhalten des linearen Systems wird durch die Impulsantwort komplett charakterisiert. Im allgemeinen Fall h¨angt die Impulsantwort h(n, k) sowohl vom Zeitindex n, als auch vom Summationsindex k ab. F¨ ur den wichtigen Spezialfall zeitinvarianter (time-invariant) Systeme gen¨ ugt die Beschreibung durch eine eindimensionale Funktion h(n), da bei diesen Systemen T {δ(n − k)} = h(n − k)

(2.5)

ist. Bei zeitinvarianten Systemen ¨ andert sich somit die Form des Ausgangssignals nicht, wenn das Eingangssignal zu verschiedenen Zeitpunkten angelegt wird. Es tritt lediglich eine Zeitverschiebung auf, die gleich jener des Eingangssignals ist. Damit erh¨alt man f¨ ur lineare, zeitinvariante Systeme die grundlegende Eingangs/Ausgangsbeziehung y(n) =

∞ X

k=−∞

x(k)h(n − k) =

∞ X

k=−∞

x(n − k)h(k) ,

(2.6)

2.1 Beschreibung durch Faltungsoperation

29

die schon auf Seite 16 als Faltungsoperation (Convolution) vorgestellt wurde. Wie bereits in Abb. 1.8 an einem Beispiel illustriert, wird bei der Faltung die zeitinvertierte Impulsantwort des Systems als Fensterfunktion u ¨ber das Signal “geschoben”. Alle Eingangssignalwerte innerhalb dieses Fensters werden gewichtet, aufsummiert und tragen so zum aktuellen Ausgangswert bei. Ist h(n) = 0 f¨ ur n < 0, dann haben wegen der Zeitinversion von h(n) nur vergangene Eingangssignalwerte einen Einfluß auf das Ausgangssignal. Die Dauer der Impulsantwort bestimmt das Ged¨achtnis des Systems. Bei einer Impulsantwort unendlich langer Dauer spricht man von Infinite Impulse Response Duration Filtern, IIR-Filtern. Im Gegensatz dazu werden Systeme mit einer Impulsantwort endlich langer Dauer als Finite Impulse Response Duration Filter, FIR-Filter bezeichnet. Bei FIRFiltern erstreckt sich daher die Summation in Gl. 2.6 nur u ¨ber ein endliches Intervall. Die Faltungssumme hat eine Reihe wichtiger Konsequenzen f¨ ur die Eigenschaften linearer, zeitinvarianter Systeme [1, 3]: • F¨ ur die Bestimmung des Eingangs/Ausgangsverhaltens gen¨ ugt eine einzige Funktion, n¨amlich die Impulsantwort h(n), zur Systembeschreibung. • F¨ ur stabile Systeme muß die Impulsantwort h(n) absolut summierbar sein: ∞ X

k=−∞

|h(k)| < ∞.

• Bei der Kettenschaltung zweier stabiler Systeme mit den Impulsantworten h1 (n) und h2 (n) ist die Reihenfolge der Systeme vertauschbar und das Gesamtsystem hat eine Impulsantwort h(n) =

∞ X

k=−∞

h1 (n)

h1 (k) h2 (n − k) = h2 (n)

h2 (n)

∞ X

k=−∞

h1 (n − k) h2 (k) .

h1 (n)

h(n)

• Die Parallelschaltung zweier Systeme mit den Impulsantworten h1 (n) und h2 (n) kann durch ein Gesamtsystem mit der Impulsantwort h(n) = h1 (n) + h2 (n) dargestellt werden. h2 (n) h(n) h1 (n)

30

2 Zeitdiskrete Systeme • Bei kausalen Systemen eilt die Systemantwort der Systemanregung nicht voraus. Die Systemantwort f¨ ur jeden Zeitindex n = n0 h¨angt nur von Eingangssignalwerten zu Zeitpunkten n ≤ n0 ab. Daraus folgt als Konsequenz f¨ ur die Impulsantwort h(n) = 0 f¨ ur n < 0.

Aufgabe 2.1 Verwenden Sie MATLABr zur Analyse der folgenden Systeme, d.h. kl¨ aren Sie, ob die Systeme kausal, stabil, zeitinvariant und linear sind. Die “unbekannten” Systeme sind in Form von MATLABr -Befehlen gegeben (das Eingangssignal x(n) hat die L¨ ange N ): a) System 1: y = 2*x + 0.5; b) System 2: y = [x(1) ; x(2:N)-x(1:N-1)]; c) System 3: y = conv([1 1 1 1 1],x); y = min(y,1); y = max(y,-1); d) System 4: y(1:2:N) = x(1:2:N); y(2:2:N) = -x(2:2:N); e) System 5: y = [0:N-1]’ .* x(:); f) System 6: y = filter(1,[1 -0.9],x,0.5);1 Schreiben Sie dazu eine MATLABr -Funktion blackbox.m mit der die einzelnen Systeme durch das Argument systype ausgew¨ahlt werden k¨ onnen: function y = blackbox(systype,x) x = x(:); N = length(x); if systype == 1, y = 2*x + 0.5; elseif systype == 2, y = [x(1) ; x(2:N)-x(1:N-1)]; elseif ... end

Setzen Sie dazu verschiedene Eingangssignale x in blackbox() ein. Testen Sie die Systeme nicht nur mit Einsimpulsen!

1 Die

MATLABr -Funktion filter() wird in Abschnitt 2.3 ausf¨ uhrlich behandelt.

2.1 Beschreibung durch Faltungsoperation

31

Die Vertauschbarkeit von Systemen bei deren Kettenschaltung ist nur bei Systemen erlaubt, die linear, zeitinvariant und stabil sind. Ist auch nur eine dieser Eigenschaften nicht erf¨ ullt, dann wird das Gesamtsystemverhalten von der Anordnung der Teilsysteme abh¨ angen. Aufgabe 2.2 Versuchen Sie analytisch und experimentell mit MATLABr herauszufinden, ob bei den folgenden Systemen eine Vertauschung der Teilsysteme h1 (n), h2 (n) bei Kettenschaltung zul¨ assig ist, d.h. ∞ X

k=−∞

h1 (k) h2 (n − k) =

∞ X

k=−∞

h1 (n − k) h2 (k),

∀n.

a) h1 (n) = σ(n) (Sprungfunktion) und h2 (n) = δ(n) − δ(n − 1) Zum Testen mit MATLABr verwenden Sie x(n) = σ(n). b) h1 (n) =

(

1 N

0

0≤n≤N −1 sonst

h2 (n) = sin

2π n σ(n). N

Das Testsignal soll in diesem Fall x(n) = cos 2π N n sein. Dokumentieren Sie die Probleme, die bei der Behandlung dieser Beispiele mit MATLABr auftreten.

Bei der Invertierung von Systemen wird zum gegebenen System ein sogenanntes inverses System in Kette geschaltet, mit dem Ziel, am Ausgang des Gesamtsystems wieder das Eingangssignal zu erhalten (siehe Abb. 2.1).

x(n)

y(n) = x(n − N0 )

h(n)

hi (n)

System

inverses System

Abbildung 2.1: Kettenschaltung zur Invertierung von Systemen Die Verz¨ogerungszeit N0 ist gegebenenfalls f¨ ur die Kausalit¨at des inversen Systems erforderlich. Angewendet wird die Invertierung von Systemen beispielswei¨ se bei der Kanalentzerrung in Daten¨ ubertragungssystemen. Der Ubertragungskanal wird dabei durch die Impulsantwort h(n) modelliert. Das Entzerrerfilter

32

2 Zeitdiskrete Systeme

hi (n) im Empf¨anger macht dann die Einfl¨ usse der Kanalimpulsantwort r¨ uckg¨angig. Ein verwandter Anwendungsfall tritt bei der inversen Filterung von Raumimpuls¨ antworten auf. Hier ist h(n) die Impulsantwort der Ubertragungsstrecke MikrofonRaum-Lautsprecher. Das Entzerrerfilter hi (n) verbessert z.B. durch die Unterdr¨ uckung des Nachhalls die Raumakustik. In beiden F¨ allen ergibt sich die gesuchte Impulsantwort hi (n) des inversen Filters (zumindest theoretisch) als L¨osung des linearen Gleichungssystems ∞ X

k=−∞

h(n − k) hi (k) = δ(n − N0 ).

(2.7)

Die Bestimmung der Impulsantwort hi (n) des inversen Systems anhand der gegebenen Impulsantwort h(n) ist jedoch nicht immer exakt m¨oglich. So k¨onnen beispielsweise Systeme mit Sperrbereichen (komplette Unterdr¨ uckung bestimmter Frequenzen oder Frequenzb¨ ander) nicht entzerrt werden. Genauere Bedingungen f¨ ur die Invertierbarkeit von Systemen ergeben sich bei der Behandlung minimalphasiger Systeme [4] (siehe dazu auch Seite 48). Zur L¨osung der Problems der inversen Filterung mit MATLABr sollen zwei ¨ Methoden untersucht werden. F¨ ur das gegebene Filter (Ubertragungskanal) mit der Impulsantwort h(n) wird ein FIR-Filter der L¨ ange N vorausgesetzt. Das inverse Filter soll ebenfalls durch ein Filter mit einer Impulsantwort hi (n) endlicher Dauer Ni approximiert werden. Dann kann Gl. 2.7 unter Verwendung von Gl. 1.10 in Matrizenform angeschrieben werden: Hhi = δ.

(2.8)

H ist eine N + Ni − 1 × Ni Matrix, hi ein Ni × 1 Vektor und δ = (1, 0, . . . , 0)T . Als unbekannte Verz¨ogerungszeit wird dabei N0 = 0 verwendet. Die Faltungsmatrix H ist im allgemeinen Fall keine quadratische Matrix, da normalerweise mehr Gleichungen als Unbekannte vorhanden sind. Damit ist das Gleichungssystem 2.8 nicht exakt l¨osbar. Es kann aber mit der Methode der kleinsten Quadrate (Least-Squares Problem) eine N¨ aherungsl¨ osung gefunden werden [2, 5]. F¨ ur die L¨osung u ¨ber- oder unterbestimmter Gleichungssysteme mit MATLABr gibt es den \-Operator. Mit den folgenden MATLABr -Befehlen wird ausgehend von h(n) und Ni das zugeh¨ orige inverse Filter hi (n) als LS-L¨osung von Gl. 2.8 berechnet. Die Erzeugung der Faltungsmatrix H mit MATLABr -Befehlen ist auf Seite 18 kommentiert. N = length(h); Nd = N + Ni - 1; d = [1 ; zeros(Nd-1,1)]; h1 = [zeros(Ni-1,1) ; h(:) ; zeros(Ni-1,1)]; ic = [0:Nd-1]’;

2.1 Beschreibung durch Faltungsoperation

33

ir = Ni:-1:1; H = ic(:,ones(Ni,1)) + ir(ones(Nd,1),:); H(:) = h1(H); % convolution matrix H hi = H \ d; % LS-solution of H*hi = d

Bei der L¨osung linearer Gleichungssysteme mit MATLABr wird abh¨angig von der Anzahl der Gleichungen und der Unbekannten, aber auch von der Struktur der Systemmatrix, automatisch der passende Algorithmus zur Gleichungsl¨osung eingesetzt (siehe MATLABr Function Reference, Arithmetic Operators). Eine alternative Berechnung des inversen Filters mit MATLABr , die ohne L¨ osung einen LS-Problems auskommt, ist die Verwendung der Funktion filter() (siehe dazu auch Abschnitt 2.3). N = length(h); Nd = N + Ni - 1; d = [1 ; zeros(Nd-1,1)]; hi = filter(1,h,d);

Mit den beiden vorgestellten MATLABr -M¨ oglichkeiten soll nun die inverse Filterung mit einfachen Systemen n¨ aher analysiert werden. Aufgabe 2.3 Finden Sie analytisch und experimentell mit MATLABr die Impulsantworten hi (n) der inversen Systeme zu den gegebenen Impulsantworten h(n). Von den Impulsantworten h(n) wird dazu nur ein endlicher Ausschnitt mit 0 ≤ n < N betrachtet. a) h(n) = (0, 8)n σ(n) b) h(n) = (0, 8)n cos 3π 10 n σ(n) c)

    0, 5 1 + cos 2π (n + 1) 0≤n≤N −1 N +1 h(n) =  0 sonst

Welche dieser Systeme sind u ¨berhaupt invertierbar? Experimentieren Sie mit verschiedenen Werten f¨ ur N und Ni . Gibt es Unterschiede in den L¨ osungen der beiden Methoden? Testen Sie die Qualit¨at der inversen Filterung durch Vergleich von Ein- und Ausgangssignal in Abb. 2.1. Als Eingangssignal kann die Sprungfunktion x(n) = σ(n) eingesetzt werden.

34

2.2

2 Zeitdiskrete Systeme

Beschreibung im Frequenzbereich

Zur Untersuchung zeitdiskreter Systeme im Frequenzbereich werden diese Systeme, so wie bei analogen Filtern, mit sinusf¨ ormigen Signalen angeregt. Durch Variation der Frequenz kann schrittweise der Frequenzgang des Systems bestimmt werden. Als Ausgangspunkt dient die Faltungsoperation Gl. 1.4, die das Eingangs/Ausgangsverhalten linearer und zeitinvarianter System f¨ ur alle Arten von Eingangssignalen beschreibt. Zur Untersuchung des Frequenzgangs ist die Verwendung einer komplexen Exponentialschwingung anstelle von Sinus- oder Cosinussignalen vorteilhaft, da man sich das umst¨ andliche Rechnen mit trigonometrischen amlich f¨ ur das Eingangssignal x(n) die ExSummenformeln erspart.2 Setzt man n¨ ponentialschwingung x(n) = ejθn in Gl. 1.4 ein, so folgt ohne l¨angere Zwischenrechnungen y(n) =

∞ X

k=−∞

jθn h(k) |ejθ(n−k) {z } = e x(n−k)

∞ X

k=−∞

|

 h(k)e−jθk = H ejθ ejθn . {z

H(ejθ )

(2.9)

}

Das System antwortet auf die komplexe Exponentialschwingung ejθn ebenfalls mit einem ejθn -Verlauf, dessen Amplitude und Phase mit dem komplexen Faktor H ejθ modifiziert wird, der eine Funktion der Frequenz θ ist. Es ist eine grundlegende Eigenschaft linearer, zeitinvarianter Systeme, die Kurvenform von Exponentialschwingungen (und damit auch von Sinus- und Cosinussignalen) nicht zu ver¨ andern. Daher k¨onnen mit diesen Signalen die Frequenzg¨ange der Systeme durch Betrags- und Phasenmessungen bestimmt werden. Der Frequenzgang wird ¨ dabei durch die Ubertragungsfunktion jθ

H e



=

∞ X

k=−∞

h(k)e−jθk = FT {h(n)}

(2.10)

charakterisiert, die durch die Impulsantwort festgelegt ist und das digitale  Filter im Frequenzbereich beschreibt. Dieser Zusammenhang zwischen H ejθ und h(n), der sich unmittelbar aus der Faltungsoperation ergeben hat, wird als Fouriertransformation f¨ ur zeitdiskrete Signale FT {·} bezeichnet [1]. Wird die ¨ Ubertragungsfunktion mit Betrag A(θ) und Phase φ(θ) entsprechend  H ejθ = A(θ)ejφ(θ) (2.11)

dargestellt, dann ergibt sich beispielsweise f¨ ur ein cosinusf¨ ormiges Eingangssignal x(n) = cos θ0 n = ℜe{ejθ0 n } mit Gl. 2.9 als Ausgangssignal   y(n) = ℜe H ejθ0 ejθ0 n = A(θ0 ) cos (θ0 n + φ(θ0 )) . (2.12) 2 Diese Vorgehensweise entspricht der komplexen Wechselstromrechnung, also dem Rechnen mit komplexen Zeigern, in der Analogtechnik.

2.2 Beschreibung im Frequenzbereich

35

¨ Die Amplitude des Cosinussignals wird durch den Betrag der Ubertragungsfunktion bei der Eingangsfrequenz θ0 modifiziert, w¨ ahrend die Phase durch den Phasenverlauf bei θ0 beeinflußt wird. ¨ Als Beispiel einer Ubertragungsfunktion eines einfachen digitalen Filters (IIRFilter) wird eine exponentielle Impulsantwort unendlich langer Dauer der Form ( an n ≥ 0 h(n) = an σ(n) = . (2.13) 0 n= 0

Aufgabe 2.5 Verwenden Sie die MATLABr -Funktionen filter und filtic zur Bestimmung von y(n) f¨ ur folgende Differenzengleichungen: a) y(n) = 0.5y(n − 1) + x(n) − 0.5x(n − 1) f¨ ur x(n) = σ(n) und der Anfangsbedingung y(−1) = 1. b) y(n) − 0.6y(n − 1) − 0.16y(n − 2) = 5x(n) f¨ ur x(n) = δ(n) und y(−2) = 25 4 , y(−1) = 0. Zeigen Sie, daß sich die Systemantwort jeweils zusammensetzt aus y(n) = yh (n) + yp (n) (yh (n) ist die Systemantwort f¨ ur x(n) ≡ 0 und yp (n) jene f¨ ur verschwindende Anfangsbedingungen.)

F¨ ur den Fall verschwindender Anfangsbedingungen kann der Frequenzgang des digitalen Filters unter Verwendung der Differenzengleichung berechnet werden. Dazu werden, wie bei der Behandlung der Systeme im Frequenzbereich im Ab-

2.3 Beschreibung durch Differenzengleichung

45

schnitt 2.2, die Exponentialschwingung x(n) = ejθn und die zugeh¨orige Systemant jθn jθ wort y(n) = H e e (siehe Gl. 2.9) in die Differenzengleichung Gl. 2.25 eingesetzt: N M X X   ak e−jθk bk e−jθk − H ejθ ejθn H ejθ ejθn = ejθn

(2.26)

k=1

k=0

¨ Damit folgt f¨ ur die Ubertragungsfunktion

 H ejθ =

M X

bk e−jθk

k=0 N X

1+

.

(2.27)

−jθk

ak e

k=1

Mit der komplexen Variablen z = ejθ ergibt sich schließlich

H(z) =

M X

bk z −k

k=0 N X

1+

. ak z

(2.28)

−k

k=1

¨ Die Ubertragungsfunktion des digitalen Filters ist daher eine rationale Funktion, bestehend aus einem Z¨ ahlerpolynom vom Grad M und einem Nennerpolynom N -ten Grades.4 Die Nullstellen des Z¨ ahlerpolynoms bestimmen die M Sperrstellen z = z0k des Filters, bei denen H(z0k ) = 0 ist. Die Resonanzen (Polstellen) sind durch die N Nullstellen z = z∞ k des Nennerpolynoms festgelegt ur kausale und stabile digitale Filter f¨ ur (|H(z∞k )| → ∞). Man kann zeigen, daß f¨ ullt sein muß. Die Lage der Sperrstellen unterliegt in die Pole |z∞k | < 1, ∀k, erf¨ diesem Zusammenhang hingegen keiner Einschr¨ ankung. Die Berechnung des Frequenzgangs mit der MATLABr -Funktion freqz() wurde bereits auf Seite 36 vorgestellt. F¨ ur die Berechnung von H(z) in der komplexen Ebene m¨ ussen die Polynome explizit ausgewertet werden. Das kann in MATLABr mit polyval() erfolgen. Die Funktion polyval(a,z) liefert den Wert eines Polynoms (gegeben durch den Koeffizientenvektor a) an der Stelle z. Ein Beispiel ist die dreidimensionale Darstellung von H(z), in der Pole und Nullstellen sehr sch¨ on sichtbar sind (siehe Abb. 2.8). Mit den folgenden Befehlen k¨onnen Sie |H(z)| in der komplexen Ebene f¨ ur ein Filter 2. Ordnung mit MATLABr als 3D-Plot darstellen. Die Abbildung wird automatisch um die vertikale Achse gedreht, so daß das Objekt aus verschiedenen Blickwinkeln betrachtet werden kann. 4 Dieser Zusammenhang gilt nicht nur f¨ ur z = ejθ , sondern auch f¨ ur ein allgemeines z der Form z = rejθ (r reellwertig). In diesem Fall wird H(z) als Z-Transformation der Impulsantwort h(n) bezeichnet.

46

2 Zeitdiskrete Systeme

% create 3D plot of |H(z)| to show transfer function poles and zeros b = [1 -1.5 1]; % NOTE: numerator b(z) = z^2 - 1.5z + 1 a = [1 -1.5 0.8]; % denominator a(z) = z^2 - 1.5z + 0.8 [x,y] = meshgrid(-1:0.02:1, -1:0.02:1); % x,y coord. of 3D plot z = x + j*y; % complex variable z H = abs(polyval(b,z)) ./ abs(polyval(a,z)); % evaluate |H(z)| i1 = find(H > 4); H(i1) = 4; % clip poles close all pos = [0.01 0.2 0.6 0.7]; % figure position hfig = figure(’name’,’Z Domain’,’Units’,’normal’,’Position’,pos); surf(x,y,H,’FaceColor’,’interp’,’EdgeColor’,’none’,... ’FaceLighting’,’phong’); colordef(hfig,’black’); colormap(’jet’); axis tight camlight right % add lighting grid on view([55,30]); xlabel(’Re\{z\}’); % set axis labels ylabel(’Im\{z\}’); zlabel(’|H(z)|’); axis vis3d for n = 55:10:415 % rotate plot view([n,30]); drawnow end axis normal

¨ Die Lage der Pole und Nullstellen der Ubertragungsfunktion H(z) bestimmt das Systemverhalten des digitalen Filters. Zur Analyse ist daher die Aufspaltung von H(z) in Pole und Nullstellen vorteilhaft, da ein Reihe wichtiger Systemeigenschaften aus der Lage der Pole und Nullstellen in der z-Ebene abgeleitet werden kann. F¨ ur die Faktorisierung von Z¨ ahler- und Nennerpolynom in Gl. 2.28 ist es zweckm¨ aßig, die Polynome als Funktionen von z anzuschreiben: M X

H(z) = z N −M z

N

¯bk z k

k=0 N −1 X

+

, a ¯k z

(2.29)

k

k=0

mit ¯bk = bM −k und a ¯k = aN −k . Abgesehen vom Faktor z N −M dreht sich bei dieser Darstellung im Vergleich zu Gl. 2.28 die Reihenfolge der Polynomkoeffizi-

2.3 Beschreibung durch Differenzengleichung

47

|H(z)| 4

3.5 3 2.5 2 1.5 1 0.5 −1 −0.5

1

ℜe {z }

0.5

0 0

0.5

−0.5 1

−1

z} ℑm {

Abbildung 2.8: Dreidimensionale Darstellung von |H(z)| in der komplexen z-Ebene (Pole bei z∞ = 0, 75 ± j 0, 4873, Nullstellen bei z0 = 0, 75 ± j 0, 6614) enten um. Dieser Unterschied in der Darstellung von H(z) ist zu beachten, wenn mit MATLABr Polynome ausgewertet werden, da die Funktionen filter() und freqz() die Polynome als Funktionen in z −1 ben¨ otigen, die Funktion polyval(), poly() und roots() hingegen die Variable z voraussetzen. Durch Faktorisierung von Z¨ ahler- und Nennerpolynom in Gl. 2.29 erh¨ alt man die Darstellung nach Polen und Nullstellen H(z) = k

(z − z01 )(z − z02 ) . . . (z − z0M ) . (z − z∞1 )(z − z∞2 ) . . . (z − z∞N )

(2.30)

F¨ ur M = N ergibt sich der konstante Faktor k aus k = H(z)|z→∞ = b0 . Das Auffinden der Nullstellen eines Polynoms erfolgt in MATLABr mit roots(). Umgekehrt liefert die Funktion poly() aus den Nullstellen die Polynomkoeffizienten. Das folgende Beispiel zeigt die Anwendung dieser Funktionen.

48

2 Zeitdiskrete Systeme

b = [1 -1.5 1]; a = [1 -1.5 0.8]; z0 = roots(b); p0 = roots(a); zplane(z0,p0); poly(z0) poly(p0)

% % % % % % %

numerator of H(z): z^2 - 1.5z + 1 denominator of H(z): z^2 - 1.5z + 0.8 zeros of H(z) poles of H(z) plot poles and zeros in complex plane compute numerator coeff. from zeros compute denominator coeff. from poles

Die Analyse der Pol/Nullstellenkonfiguration von H(z) liefert eine Reihe wichtiger Eigenschaften zeitdiskreter Systeme: • Bei reellwertigen Polynomkoeffizienten treten komplexe Nullstellen in konjugiert komplexen Paaren auf. • Bei stabilen und kausalen Filtern liegen alle Pole im Inneren des Einheitskreises |z| < 1 in der komplexen Ebene. • Bei stabilen und antikausalen Filtern liegen alle Pole außerhalb des Einheitskreises. • FIR-Filter haben alle Pole bei z = 0. Sie sind daher immer stabil. • Filter mit Sperrfrequenzen haben Nullstellen am Einheitskreis. • Invertierbare Filter haben keine Nullstellen am Einheitskreis oder außerhalb des Einheitskreises. • Pole und Nullstellen von Allp¨ assen (|H(ejθ )| ≡ 1) liegen paarweise gespiegelt ∗ zum Einheitskreis, d.h. z0 = 1/z∞ (∗ bedeutet konjugiert komplex). • Filter mit exakt linearer Phase haben alle Pole bei z = 0 (sind also nichtrekursiv). Die Nullstellen m¨ ussen entweder am Einheitskreis liegen oder paarweise gespiegelt zum Einheitskreis. • Minimalphasige Filter haben keine Nullstellen außerhalb des Einheitskreises. Streng minimalphasige Filter haben zus¨ atzlich keine Nullstellen am Einheitskreis. Streng minimalphasige Filter sind daher invertierbar.

2.3 Beschreibung durch Differenzengleichung

49

Aufgabe 2.6 Entwickeln Sie zum Testen von Systemen eine MATLABr -Funktion [H,h,p0,z0] = eval_sys(b,a) mit der ausgehend vom gegebenen Z¨ ahler- und Nennerpolynom b,a von H(z) die Systemeigenschaften Frequenzgang H (Betrag und Phase), kausale Impulsantwort h, Pole und Nullstellen p0,z0 berechnet und graphisch dargestellt werden k¨onnen. Pr¨ ufen Sie anhand der Pole und Nullstellen die vorher angegebenen Zusammenh¨ ange. Beobachten Sie auch den Einfluß der Pol/Nullstellenkonstellation auf die Impulsantwort. a) H(z) =

αz 2 + (1 + α)βz + 1 z 2 + (1 + α)βz + α

b) H(z) =

2z(3z + 17) (z − 1)(z 2 − 6z + 25)

c) H(z) =

1 − z −6 1 − z −1

mit α = 0, 8 und β = 0, 5.

d) y(n) + 2y(n − 1) + 32 y(n − 2) + 21 y(n − 3) = x(n) + x(n − 1)

Die Nullstellen eines Polynoms h¨ angen sehr empfindlich von den Koeffizienten ab. Dadurch erkl¨art sich auch ein Toleranzproblem der direkten Realisierung (Abb. 2.7) der Differenzengleichung, speziell bei eingeschr¨ankter Rechengenauig¨ keit, wie z.B. bei Festkommaarithmetik. Die Darstellung der Ubertragungsfunktion als rationale Funktion bietet aber durch die Faktorisierung der Polynome zwei alternative Realisierungsm¨ oglichkeiten f¨ ur den praktischen Einsatz. Werden beim Z¨ahler- und Nennerpolynom von Gl. 2.28 die Linearfaktoren mit konjugiert komplexen Nullstellen zu quadratischen ucken zusammengefaßt,  Ausdr¨  dann erh¨alt man f¨ ur M = N und mit L = N2+1 H(z) =

L Y β0 k + β1 k z −1 + β2 k z −2 . α0k + α1k z −1 + α2k z −2 k=1 | {z } Hk (z)

(2.31)

F¨ ur ein ungerades N ist z.B. α21 = β2 1 = 0. Mit Gl. 2.31 ergibt sich eine Kaskadenschaltung von Filterbl¨ ocken Hk (z), wie sie in Abb. 2.9 dargestellt ist (vgl. dazu die Kettenschaltung auf Seite 29). Bei der Kaskadenform digitaler Filter ist es egal (zumindest bei Gleitkommarechengenauigkeit), in welcher Reihenfolge die Filterbl¨ocke angeordnet sind und

50

2 Zeitdiskrete Systeme

b0

β1 1 , β2 1 α1 1 , α2 1

β1 2 , β2 2 α1 2 , α2 2

β1 L , β2 L α1 L , α2 L

Abbildung 2.9: Kaskadenform von digitalen Filtern (β0 k = 1 und α0k = 1)

wie konjugiert komplexe Pole und Nullstellen paarweise zusammengefaßt werden. Normalerweise kombiniert man benachbarte Pole und Nullstellen, so daß die Signalverst¨arkung der Pole durch die benachbarten Nullstellen m¨oglichst gut kompensiert wird. Dadurch erh¨ alt man bei der Implementierung mit Festkommasignalprozessoren eine gute Aussteuerbarkeit der Filter. Mit MATLABr kann die Kaskadenform mit der Funktion zp2sos aus der Pol/Nullstellenkonfiguration von H(z) gewonnen werden. Dabei wird die oben erw¨ ahnte Zusammenfassung von Polen und Nullstellen durchgef¨ uhrt und die Reihenfolge der Filterbl¨ocke nach zunehmenden Polradien festgelegt (Pole nahe am Einheitskreis werden Bl¨ocken am Ende der Kaskade zugeordnet). Mit einem zus¨atzlichen Funktionsargument von zp2sos k¨ onnen die Bl¨ ocke jedoch auch nach abnehmenden Polradien gereiht werden. Die Filterkoeffizienten werden von zp2sos in einer Matrix in folgendem Format angegeben:   β0 1 β1 1 β2 1 α01 α11 α21    β0 2 β1 2 β2 2 α02 α12 α22    C= . . (2.32) .. .. .. .. ..   ..  . . . . .   β0 L β1 L β2 L α0L α1L α2L Mit dem n¨achsten MATLABr -Beispiel wird die digitale Filterung ausgehend ¨ von der Ubertragungsfunktion in Gl. 2.29 mit der Kaskadenform ausgef¨ uhrt, wobei M = N vorausgesetzt wird: % given: coefficient vectors b, a of length N, and input signal x % Note: numerator and denominator of H(z) are functions in z, not 1/z z0 = roots(b); p0 = roots(a); k = b(N)/a(N); C = zp2sos(z0,p0,k); % compute coefficients of 2nd order sections [Nr,Nc] = size(C); y = filter(C(1,1:3),C(1,4:6),x); % first section for n = 2:Nr y = filter(C(n,1:3),C(n,4:6),y); % remaining sections end

2.3 Beschreibung durch Differenzengleichung

51

Aufgabe 2.7 In dieser Aufgabe soll die Koeffizientenempfindlichkeit der direkten Form (Abb. 2.7) mit jener der Kaskadenform verglichen werden. Die Quantisierung der Filterkoeffizienten C auf eine Wortl¨ ange von Nbits wird mit scale = 2^(Nbits-1); Cq = 1/scale*round(scale*C);

vorgenommen. Verwenden Sie diese Quantisierung bei die Programmierung einer MATLABr -Funktion compare_filt(Nbits), mit der die Frequenzg¨ange des exakten Filters und der beiden quantisierten Filterstrukturen dargestellt werden. Testen Sie das Systemverhalten f¨ ur Wortl¨angen im Bereich von 10 bis 32 Bits. Als Testfilter soll ein elliptisches Tiefpaßfilter dienen, das Sie beispielsweise mit N = 7; [z0,p0,k] = ellip(N,0.1,70,1/8); [b,a] = ellip(N,0.1,70,1/8);

% % % %

N = filter order get poles and zeros or numerator and denominator coefficients

entwerfen. Variieren Sie dabei die Filterordnung N. N¨ahere Einzelheiten zu diesem Filterentwurf werden im Kapitel 4 behandelt.

Die zweite Realisierungsm¨ oglichkeit ergibt sich aus der Partialbruchzerlegung ¨ der Ubertragungsfunktion. Diese Zerlegung f¨ uhrt auf die Parallelform digitaler Filter, wobei wieder konjugiert komplexe Nullstellen zu Filterbl¨ocken zweiten  Grades kombiniert werden (M = N und L = N2+1 ): H(z) = γ0 +

L X

k=1

γ0 k + γ1 k z −1 . 1 + α1k z −1 + α2k z −2 {z } | Hk (z)

(2.33)

F¨ ur ein ungerades N ist auch hier z.B. α21 = γ1 1 = 0. Die Parallelform ist in Abb. 2.10 gezeigt. Bez¨ uglich der Zusammenfassung von Polen und Nullstellen bzw. der Anordnung der Filterbl¨ ocke hat die Parallelform wesentlich weniger Freiheitsgrade als die Kaskadenform. Eine andere Eigenschaft der Parallelform betrifft die Sperrstellen, die bei der Parallelform dadurch zustande kommen, daß sich alle Ausgangssignale der Parallelpfade zu null erg¨ anzen. Diese Kompensation ist nat¨ urlich relativ empfindlich gegen¨ uber den Toleranzen der Filterkoeffizienten. Die Konsequenz bei endlicher Rechengenauigkeit (Festkommasignalprozessoren) ist eine erh¨ ohte Empfindlichkeit in den Sperrbereichen. In den Durchlaßbereichen ist

52

2 Zeitdiskrete Systeme

γ0

γ0 1 , γ1 1 α1 1 , α2 1

γ0 2 , γ1 2 α1 2 , α2 2

γ0 L , γ1 L α1 L , α2 L Abbildung 2.10: Parallelform von digitalen Filtern

hingegen kaum ein Unterschied zwischen den Empfindlichkeiten von Parallel- und Kaskadenform festzustellen. Die Partialbruchzerlegung erfolgt in MATLABr mit der Funktion residuez(), die H(z) in der Form von Gl. 2.28 f¨ ur M ≥ N und einfachen Pole darstellt als

H(z) =

M X

bk z −k

k=0 N X

1+

= ak z

−k

N X

k=1

M −N X rk + ck z −k . 1 − pk z −1

(2.34)

k=0

k=1

Mit residuez() k¨onnen auch mehrfache Pole verarbeitet werden. Allerdings ist das Auffinden mehrfacher Nullstellen von Polynomen ein numerisch sensibles Unterfangen. Es ist daher anzuraten, sich auf den in der Praxis wichtigen Fall einfacher Pole zu beschr¨anken. Die Pole werden mit residuez() nicht zu Bl¨ ocken maximal zweiter Ordnung zusammengefaßt. F¨ ur die Implementierung der Parallelform ist daher noch eine Nachverarbeitung notwendig. Ein Beispiel dazu soll die Anwendung der Partialbruchzerlegung mit MATLABr zeigen. Die Koeffizienten der Parallelform werden spaltenweise f¨ ur jeden Block in der Matrix C gespeichert. Die Spalte k enth¨alt die Koeffizienten in der Reihenfolge γ0 k , γ1 k , 1, α1k , α2k (siehe Gl. 2.33).

2.3 Beschreibung durch Differenzengleichung

53

% digital filter design and implementation using parallel form [b,a] = ellip(5,0.1,70,1/8); [r,p,c] = residuez(b,a); r = r(:).’; p = p(:).’;

% % % %

design a 5th order elliptic low pass filter coeff. r,p,c of partial fraction expansion force r,p to row vectors

% process real-valued poles ipr = find(abs(imag(p)) < 1e-11); Nipr = length(ipr); if Nipr C = [real(r(ipr)) ; zeros(1,Nipr) ; ones(1,Nipr) ; ... -real(p(ipr)) ; zeros(1,Nipr)]; else C = []; % C = empty matrix end % process conjugate complex-valued poles ipc = find(imag(p) >= 1e-11); Nipc = length(ipc); if Nipc C = [C , [2*real(r(ipc)) ; -2*real(r(ipc).*conj(p(ipc))) ; ... ones(1,Nipc) ; -2*real(p(ipc)) ; abs(p(ipc)).^2]]; end % filtering of input signal x [Nr,Nc] = size(C); y = filter(c,1,x); for n = 1:Nc y = y + filter(C(1:2,n),C(3:5,n),x); end

54

2 Zeitdiskrete Systeme Aufgabe 2.8 Erweitern Sie die Funktion compare_filt(Nbits) von Aufgabe 2.7 f¨ ur die Untersuchung der Koeffizientenempfindlichkeit der Parallelform digitaler Filter. Berechnen Sie auch f¨ ur direkte Form, Kaskaden- und Parallelform den Fehler der Impulsantwort durch die Koeffizientenquantisierung. Als Fehlermaß wird dabei

ε2 =

∞ X

(h(n) − hq (n))2

n=0

∞ X

h2 (n)

n=0

eingesetzt. Die obere Summengrenze muß nat¨ urlich auf einen vern¨ unftigen Wert beschr¨ankt werden. Welche der drei Filterstrukturen hat den kleinsten Fehler ε (in Abh¨ angigkeit von Nbits)? Hinweis: Die Wurzel aus der Summe der Quadrate kann in MATLABr mit der Funktion norm() ausgewertet werden.

2.4

Zustandsraumbeschreibung

Eine Alternative zur Darstellung linearer, zeitinvarianter, zeitdiskreter Systeme durch die Differenzengleichung 2.25 ist die Beschreibung durch Zustandsgleichungen und Ausgangsgleichungen [4, 6, 7]. Man erh¨alt diese Gleichungen einfach dadurch, daß alle Speicherelemente (Verz¨ ogerungselemente) aus dem System “herausgezogen” werden. Das verbleibende System ist dann ged¨achtnislos und besteht nur mehr aus Addierern, Multiplizierern (mit Konstanten) und Verzweigungen (siehe Abb. 2.11). Durch die Aufteilung des Systems in einen speicherlosen Teil und einen Block von Verz¨ogerungselementen k¨ onnen durch Anwendung des Superpositionsprinzips f¨ ur lineare Systeme die Systemgleichungen unmittelbar angeschrieben werden: x(n + 1) = Ax(n) + Bu(n) y(n) = Cx(n) + Du(n) .

(2.35)

Im Gegensatz zur Differenzengleichung 2.25 mit den Filterkoeffizienten ak , k = 1 . . . N und bk , k = 1 . . . M treten hier die Matrizen A, B, C, D als Systemparameter auf. Bei der allgemeinen Zustandsraumbeschreibung sind alle Signale Vektoren, d.h. es wird auch der Fall mehrerer Ein- und Ausgangssignale miteingeschlossen.

2.4 Zustandsraumbeschreibung

55

u(n)

y(n)

x(n + 1)

x(n)

T

Abbildung 2.11: Systemaufteilung bei der Zustandsraumdarstellung (Eingangssignalvektor u(n), Ausgangssignalvektor y(n), Zustandsvektor x(n))

Beschr¨ ankt man sich auf Systeme mit nur einem Ein- und Ausgang, dann haben die Matrizen in Gl. 2.35 folgende Dimensionen: A: N × N Matrix, B: N × 1 Spaltenvektor, C: 1 × N Zeilenvektor und D: 1 × 1 Skalar (N ist die Dimension des Zustandsvektors x(n)). Obwohl die Zustandsraumbeschreibung Gl. 2.35 wegen der Matrizenoperationen bei einfachen Filtern keinen Implementierungsvorteil bietet, hat sie doch eine Reihe anderer, sehr wichtiger Vorz¨ uge: • einheitliche Darstellung f¨ ur die Verarbeitung ein- und mehrdimensionaler Signale, • u ¨bersichtliche Trennung der Anregung durch Anfangszustand und durch Eingangssignale, • Vorausberechnung der Matrizen f¨ ur die Blockverarbeitung, • vorteilhaft bei der Blockverarbeitung von Signalen oder bei parallelen Recheneinheiten, • durch lineare Transformationen der Zustandsgleichungen ergeben sich alternative Filterrealisierungen mit gleichem Eingangs/Ausgangsverhalten, • effiziente Realisierungen von Systemen mit Mehrfachtaktverarbeitung (unterschiedliche Taktraten am Systemeingang und am Systemausgang), • Analyse der Systemeigenschaften durch Matrizenoperationen,

56

2 Zeitdiskrete Systeme • systematische Optimierung von Rausch- und Aussteuerungsverhalten bei endlicher Rechengenauigkeit (Festkommazahlendarstellung), • Anwendungen bei adaptiven Filtern (Kalman-Filter), • f¨ ur MATLABr wegen der Effizienz von Vektor- und Matrizenoperationen besonders gut geeignet.

F¨ ur die ausf¨ uhrliche Behandlung der Zustandsraumbeschreibung digitaler Systeme muß auf [4, 6, 7] verwiesen werden. In diesem Buch soll die Zustandsraumdarstellung zur effizienten Filterimplementierung mit MATLABr eingesetzt werden. Die Aufstellung der Zustandsraumbeschreibung Gl. 2.35 soll am Beispiel eines Filterblocks N -ter Ordnung nach Abb. 2.12 gezeigt werden. Diese Filterstruktur ist eine alternative Realisierung zu Abb. 2.7.

y(n) ... b0 u(n)

1 0

b1

T 11 00 T

x1 (n + 1)

x1 (n) −a1

b3

b2

1 0

bN

T 00 11 ...00 11xN (n)

x2 (n) −a2

−a3

−aN

... Abbildung 2.12: Filterblock N -ter Ordnung zur Aufstellung einer Zustandsraumdarstellung Anhand des Schaltbildes lassen sich unmittelbar folgende Gleichungen ablesen: x1 (n + 1) = −a1 x1 (n) − a2 x2 (n) − . . . − aN xN (n) + u(n) x2 (n + 1) = x1 (n) .. . xN (n + 1) = xN −1 (n) y(n) = b0 x1 (n + 1) + b1 x1 (n) + . . . + bN xN (n) .

(2.36)

Mit diesen Gleichungen k¨ onnen die Matrizen der Zustandsraumbeschreibung von Gl. 2.35 sofort angeschrieben werden:

2.4 Zustandsraumbeschreibung



    A=   

57

−a1

−a2 0

...

0

0 .. .

1 .. .

... .. .

0 .. .

0 .. .

0

0

...

1

0

1

. . . −aN −1

−aN 0

        

(2.37)

B = (1, 0, 0, . . . , 0)T C = (b1 − b0 a1 , b2 − b0 a2 , . . . , bN − b0 aN ) D = b0 .

Mit MATLABr wird diese Zustandsraumdarstellung ausgehend von den Koeffizientenvektoren a und b der Differenzengleichung mit der Funktion tf2ss() gebildet. Ein einfaches Beispiel soll die Realisierung eines digitalen Filters mit der Zustandsraumdarstellung zeigen. u = ones(200,1); [b,a] = ellip(5,0.1,70,1/8); [A,B,C,D] = tf2ss(b,a); Ns = max(length(a),length(b))-1; x = zeros(Ns,1); y = zeros(size(u)); for n = 1:length(u) y(n) = C*x + D*u(n); x = A*x; x(1) = x(1) + B(1)*u(n); end

% % % % %

input signal design an elliptic low pass filter get state-space matrices state vector length initial state vector

% filter operation

Im Vergleich zur Funktion filter() hat die Zustandsraumdarstellung keinen Implementierungsvorteil, da wesentlich mehr Arithmetikoperationen ben¨otigt werden. Ein Vorteil ergibt sich erst bei der Blockverarbeitung von Signalen, bei der mit der Zustandsraumdarstellung das Ausgangssignal blockweise berechnet und der Zustandsvektor nur einmal pro Block aktualisiert wird [4]. Durch schrittweises L¨ osen der Zustandsgleichungen 2.35 ergibt sich ausgehend von der L¨osung zum Zeitpunkt n und f¨ ur ein eindimensionales Eingangssignal u(n) x(n + 1) = Ax(n) + Bu(n) x(n + 2) = A2 x(n) + ABu(n) + Bu(n + 1) .. . x(n + M ) = AM x(n) +

M −1 X k=0

AM −1−k Bu(n + k) .

(2.38)

58

2 Zeitdiskrete Systeme

Faßt man die M Eingangssignalwerte eines Blocks zum Vektor u(n) = (u(n), u(n + 1), . . . , u(n + M − 1))T

(2.39)

zusammen, dann erh¨alt man f¨ ur die Zustandsgleichung bei Blockverarbeitung x(n + M ) = AM x(n) + BM u(n) , mit der N × N Matrix

(2.40)

AM = AM

und der N × M Matrix

BM = (AM −1 B, AM −2 B, . . . , AB, B) .

V¨ ollig analog verl¨auft die schrittweise Berechnung des Ausgangssignals: y(n) = Cx(n) + Du(n) y(n + 1) = CAx(n) + CBu(n) + Du(n + 1) ... y(n + M ) = CAM x(n) +

M −1 X

(2.41)

CAM −1−k Bu(n + k) + Du(n + M ) .

k=0

F¨ uhrt man auch hier einen Vektor mit M Ausgangssignalwerten y(n) = (y(n), y(n + 1), . . . , y(n + M − 1))T

(2.42)

ein, dann ergibt sich die Ausgangsgleichung bei Blockverarbeitung y(n) = CM x(n) + DM u(n) ,

(2.43)

mit der M × N Matrix

CM



   =  

CA .. . CAM −1

und der M × M unteren Dreiecksmatrix  D 0   CB D   CAB CB DM =   .. ..  . .  CAM −2 B



C

CAM −3 B

      ...

0

 0   ... 0  , ..  .. . .   ... D

D .. . CAM −4 B

...

0



0

2.4 Zustandsraumbeschreibung

59

die gleichzeitig auch eine T¨ oplitzmatrix ist. Die beiden Gleichungen 2.40 und 2.43 werden als Blockzustandsraumdarstellung bezeichnet und erm¨oglichen neben der Funktion filter() eine weitere effiziente Filterimplementierung in MATLABr . Aufgabe 2.9 Die Aufstellung der Matrizen f¨ ur die Zustandsraumdarstellung bei Block¨ verarbeitung ist eine besonders empfehlenswerte Ubung f¨ ur die Matrizenverarbeitung mit MATLABr . Entwickeln Sie daher eine MATLABr Funktion tf2blockss() zur Berechnung der Matrizen AM , BM von Gl. 2.40 bzw. CM und DM von Gl. 2.43. Als Funktionsparameter werden die Koeffizientenvektoren a und b der Differenzengleichung und die Blockl¨ange M verwendet.

Zum Testen kann die folgende blockweise Signalverarbeitung mit MATLABr eingesetzt werden: M = 40; % Nu = 5*M; % u = ones(Nu,1); % [b,a] = ellip(5,0.1,70,1/8); % [Am,Bm,Cm,Dm] = tf2blockss(b,a,M); Ns = max(length(a),length(b))-1; % x = zeros(Ns,1); % y = zeros(size(u)); for n = 1:M:Nu nb = n:n+M-1; y(nb) = Cm*x + Dm*u(nb); x = Am*x + Bm*u(nb); end

block length signal length is a multiple of M input signal design an elliptic low pass filter % block state-space matrices state vector length initial state vector

% block filter operation % block time indices

Mit der Blockverarbeitung ist zwar durch die Vektorisierung (Verk¨ urzung der FOR-Schleife) eine effizientere Verarbeitung in MATLABr m¨oglich, der Rechenaufwand ist immer noch gr¨ oßer als bei der direkten Implementierung der Differenzengleichung. Eine wesentliche Aufwandsreduktion gelingt jedoch durch eine Diagonalisierung der Zustandsmatrix A mit der Eigenwertzerlegung [2]: A = VΛV−1 .

(2.44)

Die N × N Diagonalmatrix Λ enth¨ alt die N Eigenwerte λi von A. Die entsprechenden Eigenvektoren sind die N Spaltenvektoren der Matrix V. In MATLABr

60

2 Zeitdiskrete Systeme

erh¨ alt man die Eigenwertzerlegung mit [V,L] = eig(A). Ein weiterer Vorteil der Eigenwertzerlegung ist die Vereinfachung der Bildung von Ap : A = VΛV−1 A2 = VΛV−1 VΛV−1 = VΛ2 V−1 .. .

(2.45)

Ap = VΛp V−1 . Damit reduziert sich das Potenzieren der Matrix A bei der Blockzustandsraumdarstellung auf die Bildung von Potenzen der N Eigenwerte. Um die Diagonalisierung der A-Matrix auf die Zustandsraumdarstellung an¯ (n) = V−1 x(n) zuwenden, wird der Zustandsvektor der linearen Transformation x unterworfen, so daß sich mit Gl. 2.40 und Gl. 2.43 die folgenden Beziehungen ergeben: ¯ (n + M ) = V−1 AM V¯ x x(n) + V−1 BM u(n) ¯ (n) + V−1 BM u(n) = ΛM x y(n) = CM V¯ x(n) + DM u(n) .

(2.46)

Diese transformierte Zustandsraumdarstellung besitzt jetzt pro Abtastintervall einen Rechenaufwand (Anzahl der Arithmetikoperationen) von NR (N, M ) =

N/M | {z }

Matrix ΛM

+

2N |{z}

Matrizen BM , CM

+ (M + 1)/2 . | {z }

(2.47)

Matrix DM

Die Anzahl der Arithmetikoperationen kann bzgl. der Blockl¨ange M optimiert werden, wenn M formal als kontinuierliche Variable betrachtet wird und die Ableitung von NR (M ) nach M null gesetzt wird. Es ergibt sich als optimale Blockl¨ ange √  Mopt = round 2N . (2.48)

Beim Entwurf rekursiver Filter ist aus numerischen Gr¨ unden die Filterordnung (und damit die Dimension N des Zustandsraums) auf etwa 20 beschr¨ankt. Filter h¨ oherer Ordnung sind außerdem zur Approximation auch sehr steiler D¨ampfungsverl¨ aufe kaum erforderlich. Die optimale Blockl¨ ange bewegt sich demnach f¨ ur den praktischen Einsatz im Bereich M = 3 . . . 6. ¨ Mit dem folgenden MATLABr -Beispiel werden alle bisherigen Uberlegungen zur Blockverarbeitung f¨ ur die Berechnung der Blockzustandsraummatrizen AM , BM , CM und DM verwendet. Der Ausgangspunkt ist der Entwurf eines elliptischen Filters und die Bestimmung der gew¨ ohnlichen Zustandsraummatrizen. Danach erfolgt die Diagonalisierung der A-Matrix mit der Eigenwertzerlegung. Im Anschluß werden mit den transformierten Matrizen die Blockzustandsraummatrizen berechnet.

2.4 Zustandsraumbeschreibung [b,a] = ellip(7,0.1,100,1/8); [A1,B1,C1,D1] = tf2ss(b,a); [V,L] = eig(A1); A1 = diag(L); B1 = inv(V)*B1; C1 = C1*V;

61 % % % %

elliptic filter design compute state-space decomposition compute eigenvalue decomposition A1 = vector of diagonal elements of L

% compute block state-space matrices Am, Bm, Cm, Dm N = length(A1); % state-space dimension M = round(sqrt(2*N)); % optimum block length Bm = zeros(N,M); Cm = zeros(M,N); Am = 1; for n = M-1:-1:1 Am = Am .* A1; Bm(:,n) = Am .* B1; Cm(M-n+1,:) = C1 .* (Am.’); end Am = Am .* A1; Bm(:,M) = B1; Cm(1,:) = C1; Dm = toeplitz([D1 ; real(Cm(1:M-1,:)*B1)],[D1 zeros(1,M-1)]);

Aufgabe 2.10 Verwenden Sie diese MATLABr -Anweisungen zur Entwicklung einer Funktion y = blockss_filt(b,a,x) zur Signalfilterung mit der Blockzustandsraumdarstellung. Beachten Sie, daß durch die Eigenwertzerlegung die Matrizen komplexwertig sind. Dabei kann durch Vermeidung des Rechnens mit konjugiert komplexen Elementen der Rechenaufwand reduziert werden. Vergleichen Sie die Arithmetikoperationen pro Abtastintervall mit jenen der Kaskaden- und Parallelform.

62

2 Zeitdiskrete Systeme

3 Diskrete Fouriertransformation Die Fouriertransformation f¨ ur zeitdiskrete Signale wurde bereits bei der Beschreibung zeitdiskreter Systeme im Frequenzbereich im Abschnitt 2.2 abgeleitet.1 Diese Transformation ordnet einem zeitdiskreten Signal x(n) eine frequenzkontinuierliche Funktion ∞ X  X ejθ = x(k)e−jθk (3.1) k=−∞

zu, die 2π-periodisch in der Frequenz θ ist. Ist das zeitdiskrete Signal periodisch mit der Periode N , dann besitzt es ein Linienspektrum, d.h. es weist nur Frequenzkomponenten bei Vielfachen der Grundfrequenz 2π N auf und kann als Fourierreihe x ˜(n) = x ˜(n + N ) =

N −1 2π 1 X ck ej N nk N

(3.2)

k=0

dargestellt werden. Die Basissignale dieser Reihenentwicklung haben die grundlegende Eigenschaft ( N −1 X N n = lN, l = 0, ±1, ±2, . . . kn j 2π = , (3.3) e N 0 sonst k=0 die man durch Anwendung der Summenformel einer endlichen, geometrischen ReiPN −1 N he erh¨ alt ( k=0 xk = 1−x onnen aus Gl. 3.2 die Reihenkoeffi1−x ). Mit Gl. 3.3 k¨ 2π zienten ck bestimmt werden, indem beide Seiten dieser Gleichung mit e−j N nk 1 Die Fouriertransformation f¨ ur zeitdiskrete Signale ist nicht gleichbedeutend mit der diskreten Fouriertransformation, die in diesem Kapitel behandelt wird!

64

3 Diskrete Fouriertransformation

multipliziert werden und diese Terme dann u ¨ber n = 0, . . . , N − 1 aufsummiert werden: N −1 X



x ˜(n)e−j N nk =

n=0

N −1 X



e−j N nk

n=0

=

k =0

N −1 X

1 N

N −1 ′ 2π 1 X ck′ ej N nk N ′

ck ′

k′ =0

= ck .

N −1 X





ej N n(k −k)

(3.4)

n=0

|

{z

N f¨ ur k′ =k 0 sonst

}

Die Reihenkoeffizienten ck stellen das Linienspektrum des periodischen, zeitdiskreten Signals bei den harmonischen Frequenzen 2π N k dar. Da es im zeitdiskreten Fall nur N verschiedene Harmonische gibt, gen¨ ugen N Reihenkoeffizienten. Werden weniger als N Koeffizienten verwendet, dann wird bei der Approximation der Funktion durch die Reihenentwicklung ein Fehler gemacht, dessen Eigenschaften Sie im n¨ achsten Beispiel mit MATLABr untersuchen k¨onnen. Aufgabe 3.1 Das periodische Signal x ˜(n) mit der Periodendauer N soll durch eine Fourierreihe angen¨ ahert werden, die weniger als N Koeffizienten hat: x ˜M (n) =

M −1 2π 1 X ck ej N nk , N k=0

mit M ≤ N . Berechnen Sie den Fehler N −1 X

ε(M ) =

k=0

|˜ x(n) − x ˜M (n)|2

in Abh¨angigkeit von M f¨ ur verschiedene periodische Signale mit der ¨ Periode N . Uberpr¨ ufen Sie außerdem die Parsevalsche Gleichung N

N −1 X n=0

|˜ x(n)|2 =

N −1 X k=0

|ck |2 .

Hinweis: In MATLABr k¨ onnen Sie die Fourierreihenkoeffizienten am einfachsten mit c = fft(x,M) berechnen. F¨ ur die Summe der Quadrate kann wieder die Funktion norm() eingesetzt werden.

65 Von der Fourierreihendarstellung f¨ ur zeitdiskrete Signale ist es nur mehr ein kleiner Schritt zur diskreten Fouriertransformation. Zwischen den Fourierreihenkoeffizienten ck eines mit N periodischen Signals x ˜(n) und der Fouriertransformation eines zeitbegrenzten Signals x(n) (mit x(n) = 0 f¨ ur n < 0 und n ≥ N ) besteht der Zusammenhang ck =

N −1 X

−j 2π N nk

x ˜(n)e

=

n=0

N −1 X n=0

 = X ejθ

θ= 2π N k

= X(k).

x(n)e−jθn

θ= 2π N k

(3.5)

Die Fourierreihenkoeffizienten entsprechen den Werten des Spektrums an diskreten Frequenzen. Dieser Zusammenhang ist in Abb. 3.1 anschaulich dargestellt. x(n) (a)

0

5

10

15

20 n

25

30

35

40

|X(ejθ )| (b)

−π

−2π

π

0



θ |X(k)|

(c)

-20

-15

-10

-5

0

5

10

15

20

30

35

40

k x ˜(n) = x(n ⊕ N ) (d)

0

5

10

15

20 n

25

Abbildung 3.1: Zeitbegrenztes Signal der L¨ ange N = 20 (a), zugeh¨origes Spektrum (b), Abtastung im Frequenzbereich (c), periodische Fortsetzung im Zeitbereich (d)

66

3 Diskrete Fouriertransformation

Bei der diskreten Fouriertransformation (DFT) werden nun N-Punkte Signale betrachtet, die nur f¨ ur N Zeitindizes (vorzugsweise n = 0, . . . , N − 1) gegeben sind. Mit diesen N Zeitwerten x(n) werden N Frequenzwerte X(k) und umgekehrt berechnet [1]:

X(k) =

N −1 X



x(n)e−j N nk

n=0

x(n) =

N −1 2π 1 X X(k)ej N nk N k=0

k = 0...N − 1

(3.6)

n = 0 . . . N − 1.

(3.7)

Die Implementierung der DFT mit MATLABr gestaltet sich sehr einfach. Zur Vermeidung der redundanten Berechnung von Exponentialfunktionen, k¨onnen diese in einer Tabelle mit N Eintr¨ agen vorausberechnet werden. Die Adressierung dieser Tabelle erfolgt mit nk, wobei durch die Modulooperation Vielfache von N eliminiert werden. Das folgende MATLABr -Programm zeigt die Berechnung der DFT mit einer Tabelle f¨ ur die Grundschwingung. x = N = n = W = X = for

x(:); % signal stored as column vector length(x); 0:N-1; exp(-j*2*pi/N*n); % vector of exponentials zeros(N,1); k = 0:N-1 X(k+1) = W(rem(n*k,N)+1)*x; % modulo-N operation removes multiples of N

end

Wesentlich effizienter ist die Funktion X = fft(x,N) bzw. x = ifft(X,N), die bei MATLABr dann am schnellsten ist, wenn N eine Zweierpotenz ist. Aber auch f¨ ur andere L¨angen N werden schnelle Algorithmen eingesetzt. Aufgabe 3.2 In dieser Aufgabe k¨ onnen Sie Ausf¨ uhrzeit und Genauigkeit der direkten Implementierung der DFT mit den Werten bei der FFT vergleichen. Entwerfen Sie dazu eine Funktion dft_compare(N) die sinusf¨ormige Testsignale x = sin(2*pi/N*M*[0:N-1]) und Zufallssignale x = randn(N,1) verwendet und damit die DFT und IDFT berechnet. Als Fehler dient dabei die maximale Betragsabweichung zwischen Eingangssignal und dem Ergebnis der kombinierten Anwendung DFT + IDFT. Hinweis: F¨ ur die Zeitmessung kann die Funktion etime() eingesetzt werden, u ¨ber die Sie mit help etime mehr erfahren.

3.1 Interpolation im Frequenzbereich

67

MATLABr stellt mit den Funktionen fft() und ifft() sehr leistungsf¨ahige Routinen f¨ ur die DFT/IDFT zur Verf¨ ugung. Speziell ab MATLABr -Version 6.0 kommen die derzeit schnellsten FFT-Programme zum Einsatz. In diesem Buch werden daher keine FFT-Algorithmen vorgestellt, sondern einige f¨ ur den praktischen Einsatz wichtige DFT-Eigenschaften und Anwendungen behandelt: • Unterschiedliche Anzahl von Zeit- und Frequenzpunkten (Interpolation und Dezimation im Frequenzbereich), • Fenstereffekt bei der DFT, Leakage-Effect bei Spektralkomponenten mit benachbarten Frequenzen, • Zyklische Faltung, Overlap-Add und Overlap-Save Methode zur schnellen FIR-Filterung, • Chirp-DFT.

3.1

Interpolation im Frequenzbereich

Wie bereits in Abb. 3.1 anschaulich dargestellt, gen¨ ugt bei einem N -Punkte Signal die Angabe der Fouriertransformation an N ¨ aquidistanten Frequenzpunkten. Alle Zwischenwerte k¨onnen durch Interpolation gewonnen werden: −1 N −1 N −1 X  NX 2π 1 X X ejθ = x(n)e−jθn = X(k)ej N nk e−jθn N n=0 n=0 k=0 {z } | x(n)

=

N −1 X k=0

X(k)

N −1 N −1   X 2π 1 X −j (θ− 2π N k )n = e X(k) GN ej (θ− N k) . N n=0 | {z } k=0   2π j θ− k N ) GN e (

(3.8)

 Die Interpolationsfunktion GN ejθ erh¨ alt man als Summe einer endlichen, geometrischen Reihe  N −1 1 1 − e−jθN 1 sin θN 2 GN ejθ = = e−jθ 2 . N 1 − e−jθ N sin θ2

(3.9)

Sollen bei der DFT-Berechnung mehr Frequenzpunkte als Zeitpunkte (L > N ) vorhanden sein, dann gen¨ ugt die Bestimmung der N -Punkte DFT. Die zus¨atzlichen Werte k¨ onnen mit Gl. 3.8 und 3.9 f¨ ur θ = 2π L k, k = 0, . . . , L − 1 ermittelt werden. Anwendung findet die Interpolation bei der Spektralanalyse und beim Entwurf von FIR-Filtern mit der Frequenzabtastungsmethode (Abschnitt 4.1.1).

68

3 Diskrete Fouriertransformation

Viel einfacher und schneller als mit Gl. 3.8 erh¨ alt man dasselbe Ergebnis durch Anf¨ ugen von L − N Nullen zum Signal und anschließender Ausf¨  uhrung einer LPunkte DFT. Wird n¨amlich die Fouriertransformation X ejθ des N -Punkte Signals x(n) an L Frequenzen θk = 2π L k, k = 0, . . . , L − 1 abgetastet, dann ergibt sich −1  2π  NX 2π X(k) = X ej L k = (3.10) x(n)e−j L nk . n=0

Andererseits erh¨alt man aus dem (mit L − N Nullen) erweiterten Signal ( x(n) 0 ≤ n ≤ N − 1 x ˆ(n) = 0 N ≤n≤L−1

(3.11)

die DFT der L¨ange L ˆ X(k) =

L−1 X

x ˆ(n)e−j

2π L nk

=

N −1 X

x(n)e−j

2π L nk

.

(3.12)

n=0

n=0

Der Vergleich von Gl. 3.10 mit Gl. 3.12 liefert schließlich  2π  ˆ X(k) = X ej L k = X(k).

(3.13)

Das Anf¨ ugen von Nullen ist somit die einfachste Methode zur Interpolation im Frequenzbereich. Eine h¨ aufige Fehlinterpretation der Interpolation ist die “Verbesserung der Frequenzaufl¨ osung” durch Nullenanf¨ ugen. Das ist damit nat¨ urlich nicht erreichbar, da die Interpolation nur passende Zwischenwerte liefert. Eine h¨ ohere Frequenzaufl¨osung im Sinne von mehr Details im Frequenzbereich ist nur durch eine l¨angere Messung des Signals (und nicht durch k¨ unstliche Verl¨angerung) erreichbar. Aufgabe 3.3  Stellen Sie die Interpolationsfunktion GN ejθ f¨ ur verschiedene Werte von N nach Betrag und Phase graphisch mit MATLABr dar. Welches  Zeitsignal gN (n) geh¨ ort als inverse Fouriertransformation zu GN ejθ ? Bestimmen Sie die DFTs der L¨ ange L = 32 von den folgenden Signalen der L¨ange N = 10, einmal mit der Interpolationsformel Gl. 3.8 und zum Vergleich durch Anf¨ ugen von Nullen. a) x(n) = δ(n),

n = 0, 1, . . . , 9

b) x(n) = δ(n − 1), 2

c) x(n) = e−0,1n ,

n = 0, 1, . . . , 9 n = 0, 1, . . . , 9

3.2 Dezimation im Frequenzbereich

3.2

69

Dezimation im Frequenzbereich

In diesem Fall ist die Anzahl der Frequenzpunkte L kleiner als die Anzahl der Signalwerte N . Zur Vereinfachung soll zwischen N und L ein ganzzahliges Verh¨altnis bestehen, d. h. N = M L (M ganzzahlig). Es wird demnach nur jeder M -te Frequenzpunkt ben¨otigt ¯ X(k) = X(kM )

k = 0 . . . L − 1.

(3.14)

¯ Die naheliegende Methode zur Berechnung von X(k) ist die Anwendung einer DFT der L¨ ange N , von der dann nur jeder M -te Wert verwendet wird. Es gibt allerdings eine besseres Verfahren, das die Berechnung u ussiger Frequenzpunkte ¨berfl¨ vermeidet und folgendermaßen abgeleitet werden kann: ¯ Das zur reduzierten (L-Punkte) DFT X(k) geh¨ orende Zeitsignal x ¯(n) ist

x ¯(n) =

L−1 N −1 2π 2π 1 X 1 X X(k)ej M L nk X(kM )ej L nk = L L k=0 k=0

=

1 L

(k=lM )

N −1 X

X(l)

L−1 X

m=0

l=0

|



δ(l − mM ) ej N nl . {z p(l)

(3.15)

}

Die “Austastfunktion” p(l) selektiert nur jeden M -ten Wert der Summe u ¨ber l und besitzt als periodisches Signal der Periode M die Fourierreihendarstellung p(l) =

L−1 X

m=0

δ(l − mM ) =

M −1 1 X j 2π lm e M . M m=0

(3.16)

Wird Gl. 3.16 in Gl. 3.15 eingesetzt, dann ergibt sich nach kurzer Zwischenrechnung N −1 M −1 X 2π 1 X X(l)ej N (n+mL)l . x ¯(n) = (3.17) N m=0 l=0 {z } | x(n + mL) Der Zusammenhang zwischen dem zur dezimierten DFT geh¨orenden Zeitsignal x ¯(n) und dem urspr¨ unglichen Zeitsignal x(n) ist somit x ¯(n) =

M −1 X m=0

x(n + mL)

n = 0 . . . L − 1.

(3.18)

70

3 Diskrete Fouriertransformation

Werden daher weniger Frequenzpunkte (L) als Zeitpunkte ben¨otigt, dann bildet man zun¨achst in einer Vorverarbeitung nach Gl. 3.18 das Signal x ¯(n) der L¨ange L. ¨ Bei dieser Vorverarbeitung erfolgt die Datenreduktion durch Ubereinanderlegen und Addieren von Signalbl¨ ocken der L¨ ange L. Daf¨ ur werden LM = N Additionen ben¨ otigt. Auf dieses Signal wird dann eine L-Punkte DFT angewendet, um die L DFT-Werte X(kM ) von Gl. 3.14 zu erhalten. Ein Aufwandsvergleich zeigt, daß ohne Vorverarbeitung zur Signall¨ angenreduktion O(N log2 N ) Arithmetikoperationen f¨ ur die N -Punkte FFT erforderlich sind.2 Mit der Vorverarbeitung nach Gl. 3.18 ist die Komplexit¨ at jedoch nur O(N + L log2 L). Beispielsweise ist f¨ ur N = 29 = 512 und L = 26 = 64 der Aufwand im ersten Fall N log2 N = 4608, im zweiten Fall dagegen nur N + L log2 L = 896. Mit MATLABr kann eine dezimierte DFT z.B. in folgender Weise realisiert werden: x = x(:); Nx = length(x); M = ceil(Nx/L); N = M*L; x = [x ; zeros(N-Nx,1)]; Xb = zeros(L,M); Xb(:) = x; xb = sum(Xb.’); X = fft(xb);

% signal stored as column vector % % % % % % % % %

L = number of frequency points number of time points N is a multiple of L append zeros, if necessary matrix for storage of M signal blocks of length L columns of Xb are subsequent signal blocks of length L compute row sums of Xb decimated FFT of length L

Anwendung findet die Dezimation im Frequenzbereich haupts¨achlich zur Datenreduktion bei der Spektralanalyse, wenn z.B. bei Sprachsignalen nur eine grobe Darstellung des Spektrums ben¨ otigt wird. Ein weiteres Einsatzgebiet sind Multiraten-DFT-Filterb¨anke. Aufgabe 3.4 Untersuchen Sie anhand verschiedener Signale (z.B. kurze Sequenzen abgetasteter Sprachsignale) wie die Dezimation im Frequenzbereich das Erscheinungsbild des Signalspektrums beeinflußt. Hinweis: Ein Audiosignal, als Datei im WAV-Format (z.B. voice.wav) gespeichert, kann mit x = wavread(’voice.wav’) als Vektor x in die Arbeitsumgebung von MATLABr geladen werden. Im Falle eines Stereosignals ist x eine Nx × 2 Matrix.

2 Der angegebene Aufwand bezieht sich auf einen FFT-Algorithmus bei dem N eine Zweierpotenz ist.

3.3 Fenstereffekt bei der DFT

3.3

71

Fenstereffekt bei der DFT

Die Verarbeitung von Signalen mit der DFT ist nur dann exakt m¨oglich, wenn das Signal zeitbegrenzt ist. Im Fall nichtzeitbegrenzter Signale k¨onnen nur periodische Signale ohne Fehler mit der DFT analysiert werden, wenn die DFT-L¨ange gleich (oder ein ganzzahliges Vielfaches) der Periodendauer ist. In allen anderen F¨ allen treten in den Spektren Abweichungen auf, die als Fenstereffekte, Window Effects bezeichnet werden und das erwartete Spektrum stark verf¨alschen k¨ onnen [8, 9]. Damit verbunden ist auch das sogenannte Leakage der DFT, das besonders gut bei Signalen beobachtet werden kann, die aus Sinuskomponenten mit nichtharmonischen, eng benachbarten Frequenzen bestehen. Die Effekte durch ¨ die Zeitbegrenzung, die ein “Uberfließen von Spektrallinien” bewirken, lassen sich am einfachen Beispiel einer komplexen Exponentialschwingung illustrieren. F¨ ur 2π x(n) = ej M n als Prototyp eines periodischen Signals (Periode M ) ergibt sich mit ur die DFT Gl. 3.6 f¨ X(k) =

N −1 X

1 − ej2π( M −k) . k 1 1 − ej2π( M − N ) N





e−j N nk ej M n =

n=0

(3.19)

F¨ ur M = N erh¨alt man aus Gl. 3.19 f¨ ur k ∈ [0, N ) eine Spektrallinie X(k) = N δ(k − 1), da die Frequenz der Exponentialschwingung auf einem Frequenzpunkt der DFT liegt. Sind im Gegensatz dazu M und N teilerfremd, dann ergeben sich mehrere von null verschiedene Spektrallinien (siehe Abb. 3.2).

|X(k)|

60

40

20

0 0

10

20

30

40

50

60

k Abbildung 3.2: Betrag der N -Punkte DFT einer komplexen Exponentialschwin2π gung x(n) = ej M n mit N = 64 und M = 3 Die Zeitbegrenzungseffekte k¨ onnen durch Multiplikation des Signals mit einer Fensterfunktion w(n) beeinflußt werden, und zwar bei sinusf¨ormigen Signalen die

72

3 Diskrete Fouriertransformation

Breite des spektralen Hauptbeitrages (Main Lobe) und die H¨ohe der Nebenbeitr¨age (Side Lobes). Die Fensterfunktion hat einen symmetrischen, glockenf¨ormigen Verlauf, der die Randwerte des Signals abschw¨ acht. MATLABr stellt mit den Funktionen bartlett(), blackman(), chebwin(), hamming(), hanning() und kaiser() die gebr¨ auchlichsten Fensterfunktionen f¨ ur die Spektralanalyse zur Verf¨ ugung. Aufgabe 3.5 ¨ Es ist das Spektrum eines Signals zu untersuchen, das aus der Uberlagerung zweier Sinusschwingungen besteht: x(n) = sin θ1 n + sin θ2 n. Beobachten Sie das Spektrum von xw (n) = w(n)x(n) in Abh¨angigkeit von der Differenzfrequenz ∆θ = θ2 − θ1 f¨ ur verschiedene Fensterfunktionen w(n). Achten Sie insbesondere auf die Beeinflussung der Gr¨oße und Form des spektralen Hauptbeitrags durch die Nebenbeitr¨age der anderen Frequenzkomponente (Leakage). Welche Fensterfunktion liefert die beste Trennung der Spektralkomponenten? Welche ist am besten zur Messung der spektralen Amplituden geeignet?

3.4

Zyklische Faltung

Die Verkn¨ upfung von Signalen mit der Faltungsoperation wurde bereits im Abschnitt 1.3 vorgestellt. Ferner wurde im Abschnitt 2.2 gezeigt, daß das Eingangs/Ausgangsverhalten linearer, zeitinvarianter Systeme im Zeitbereich durch eine Faltungsoperation und im Frequenzbereich durch die Multiplikation der Spektren charakterisiert wird (siehe auch Gl. 2.23): y(n) =

∞ X

k=−∞

x(k) h(n − k)

FT

←→

   Y ejθ = H ejθ X ejθ .

(3.20)

Eine entsprechende Beziehung ist auch bei der DFT zu erwarten, wobei jedoch zu beachten ist, daß bei der DFT N -Punkte-Signale transformiert werden. Bei Zeitverschiebungen kommt daher die periodische Fortsetzung des Signals zur Anwendung, d.h. Zeitindizes sind mit der Modulooperation zu verkn¨ upfen. Diese zyklische Zeitverschiebung ist in Abb. 3.3 dargestellt. Im Gegensatz zur normalen Zeitverschiebung, wo Signale endlicher Dauer außerhalb des gegebenen Zeitintervalls null sind, werden N -Punkte-Signale bei der DFT zyklisch zeitverschoben, da

3.4 Zyklische Faltung

73

x(n)

x((n − 4) ⊕ N )

0 1

N −1

n

0

4

N −1

n

Abbildung 3.3: Zyklische Zeitverschiebung bei N -Punkte-Signalen



die DFT und IDFT wegen der Faktoren ej N nk invariant bez¨ uglich Verschiebungen n ± lN, l = 0, 1, 2, . . . ist (siehe Gl. 3.6). Mit der DFT erh¨alt man bei N -Punkte-Signalen eine zu Gl. 3.20 ¨aquivalente Beziehung y(n) =

N −1 X

m=0

DF T

x(m)h((n−m)⊕N ) ←→ Y (k) = H(k)X(k) n = 0, . . . , N −1 (3.21)

(⊕ ist die Modulooperation). Bei der Ableitung dieses f¨ ur die praktische Anwendung a ¨ußerst wichtigen Zusammenhangs wird von den DFTs X(k) =

N −1 X

−j 2π N nk

x(n)e

und

H(k) =

n=0

N −1 X



h(n)e−j N nk

n=0

der Signale x(n) und h(n) ausgegangen. Bildet man damit X(k)H(k) =

N −1 N −1 X X



x(m)h(l)e−j N (m+l)k ,

m=0 l=0

dann geh¨ort zu diesem Produkt der DFTs das Zeitsignal y(n) =

N −1 1 X 2π X(k)H(k)ej N nk N k=0

=

N −1 X

m=0

x(m)

N −1 X l=0

h(l)

N −1 1 X −j 2π e N (n−m−l) N k=0 | {z } 1 f¨ ur l=n−m+iN 0 sonst

=

N −1 X

m=0

x(m)h((n − m) ⊕ N ) n = 0, . . . , N − 1.

(3.22)

74

3 Diskrete Fouriertransformation

Der Zusammenhang zwischen y(n) und x(n), h(n) in Gl. 3.22 wird als zyklische Faltung bezeichnet und wurde bereits auf Seite 20 vorgestellt. Bedingt durch die Modulooperation in der Faltungssumme wird hier h(n) zyklisch verschoben. Man kann sich daher beide Signale auf je einem Zylinder abgebildet denken (h(n) zeitinvers). Die zyklische Verschiebung in Gl. 3.22 ergibt sich dann durch eine entsprechende Verdrehung eines der beiden Zylinder. Der Rechenaufwand f¨ ur die Auswertung der Faltungssumme ist von einer Komplexit¨ at O(N 2 ). Wird die zyklische Faltung u ¨ber die FFT durch Multiplikation der Spektren und anschließender IFFT ausgef¨ uhrt, dann steigt der Aufwand nur mit N (1+log2 N ). Mit MATLABr kann die zyklische Faltung zweier Signale der L¨ange N sehr kompakt und effizient ausgef¨ uhrt werden: x = x(:); h = h(:); y = ifft(fft(x,N) .* fft(h,N)); if ~any(imag(x)) & ~any(imag(h)) y = real(y); end

% force x, h to column vectors % cyclic convolution % real-valued signals x, h ? % avoid tiny imaginary parts

Mit der if-Anweisung wird verhindert, daß bei reellen Signalen das Faltungsergebnis durch minimale Rechenfehler der FFT und IFFT einen kleinen Imagin¨arteil (typisch im Bereich 10−13 . . . 10−15 ) aufweist. Im Gegensatz zur normalen (linearen) Faltung, deren Ergebnis im Fall zweier Signale der L¨ange N die L¨ ange 2N − 1 besitzt, also etwa doppelt so lang ist, hat y(n) in Gl. 3.22 die gleiche L¨ ange N , wie die beiden Signale x(n) und h(n). Soll daher die normale Faltung mit Hilfe der zyklischen realisiert werden, dann m¨ ussen beide Signale durch Anf¨ ugen von Nullen auf die L¨ange des Ergebnissignals gebracht werden. Mit MATLABr ist die Implementierung der linearen Faltung zweier Signale der L¨angen Nx und Nh mit Hilfe der FFT/IFFT wieder ein kurzes Programm: x = x(:); h = h(:); Nx = length(x); Nh = length(h);

% force x, h to column vectors

% linear convolution by cyclic convolution y = ifft(fft([x ; zeros(Nh-1,1)]) .* fft([h ; zeros(Nx-1,1)])); if ~any(imag(x)) & ~any(imag(h)) y = real(y); end

% real-valued signals x, h ? % avoid tiny imaginary parts

3.5 Overlap-Add und Overlap-Save Methode

75

Aufgabe 3.6 Entwerfen Sie eine MATLABr -Funktion [yl,yc] = convolve(x,h) zur Berechnung der normalen (linearen) und der zyklischen Faltung mit der DFT/IDFT f¨ ur Signale unterschiedlicher L¨ angen. Testen und vergleichen Sie die Ergebnisse beider Faltungsoperationen mit folgenden Signalen: a) x(n) = 1, n = 0, . . . , 9 h(n) = 1, n = 0, . . . , 24 b) x(n) =

(

1 0≤n≤9 0 10 ≤ n ≤ 15

h(n) =

(

1 0 ≤ n ≤ 24 0 25 ≤ n ≤ 31

c) x(n) =

(

1 0≤n≤9 0 10 ≤ n ≤ 15

h(n) = δ(n) − δ(n − 10), 0 ≤ n ≤ 15

Versuchen Sie in allen F¨ allen die Unterschiede zwischen normaler und zyklischer Faltung zu erkl¨ aren.

3.5

Overlap-Add und Overlap-Save Methode

Bei der FIR-Filterung von Signalen mit der FFT tritt das Problem auf, daß das Eingangssignal x(n) beliebig lang sein kann, die Filterimpulsantwort h(n) jedoch eine vergleichsweise kurze Dauer Nh aufweist. Um in diesem Fall die zyklische Faltung anzuwenden, muß das Eingangssignal in Bl¨ ocke zerlegt und jeder Block einzeln verarbeitet werden. Bedingt durch die Faltungsoperation verl¨angern sich die Bl¨ ocke, so daß bei der Bildung des gesamten Ausgangssignals y(n) die berechneten Bl¨ocke u ussen. Dabei gibt es ¨berlappend zusammengesetzt werden m¨ zwei grunds¨atzliche Methoden [1]: Bei der Overlap-Add Methode wird das Eingangssignal in aufeinanderfolgende, nicht¨ uberlappende Bl¨ocke xk der L¨ange L unterteilt und jeder Block mit einer FFT der L¨ ange Nf = L + Nh − 1 verarbeitet. Dadurch sind die Ausgangssignalbl¨ ocke um Nh − 1 Werte l¨anger. Sie m¨ ussen daher ¨ u ugt und in den Uberlappungsbereichen addiert werden. ¨berlappend aneinandergef¨ ur den Fall Nx = 3L skizziert.3 In Abb. 3.4 ist diese Blockverarbeitung f¨ 3 Der durchgestrichene Teilblock (Ausschwingvorgang) wird bei Blockverarbeitung nicht verwendet, damit das Ausgangssignal die gleiche Dauer wie das Eingangssignal hat.

76

3 Diskrete Fouriertransformation

0

h h(n) Nh − 1

x1 0

x2

x(n)

x3 2L

L

3L − 1

x1 ∗ h x2 ∗ h x3 ∗ h y1 0

y2 L

y3 2L

y(n) 3L − 1

Abbildung 3.4: Schematische Darstellung der Blockverarbeitung bei der OverlapAdd Methode mit Nx = 3L und Nf = L + Nh − 1 Die zweite Methode ist die Overlap-Save Methode, die eine FFT-L¨ange gleich der Blockl¨ange (Nf = L) verwendet. Das Ergebnis der zyklischen Faltung wird daher nicht mit jenem der ben¨ otigten normalen Faltung u ¨bereinstimmen. Es l¨aßt sich leicht zeigen (am besten graphisch anhand eines einfachen Signals), daß im vorliegenden Fall nur die ersten Nh − 1 Werte nicht u ¨bereinstimmen. Bei der blockweisen Faltung werden daher die ersten Nh − 1 Werte nicht verwendet, sondern vom vorhergehenden Block u ¨bernommen. Die Overlap-Save Methode ben¨otigt ¨ demnach keine Additionen in den Uberlappungsbereichen. In Abb. 3.5 ist die Blockverarbeitung der Overlap-Save Methode schematisch dargestellt. Die Eingangssignalbl¨ ocke der L¨ ange L werden jetzt u ¨berlappend im ¨ Abstand M < L dem Signal x(n) entnommen. Durch die Uberlappung k¨onnen die ung¨ ultigen Werte der Faltungsergebnisse unber¨ ucksichtigt bleiben, da der jeweils vorhergehende Block bereits die richtigen Werte enth¨alt. Um bei beiden Methoden die gleiche FFT-L¨ ange Nf und damit einen vergleichbaren Rechenaufwand zu erhalten, wird man den Parameter M der Overlap-Save Methode gleich der Blockl¨ange L der Overlap-Add Methode w¨ahlen (vergleiche Abb. 3.4 und Abb. 3.5). Das n¨achste MATLABr -Beispiel zeigt die Implementierung der Overlap-Save Methode. x = x(:); h = h(:); Nx = length(x); Nh = length(h);

3.5 Overlap-Add und Overlap-Save Methode

0

77

h h(n) Nh − 1

x(n)

0 M

0

N x + Nh − 2

L

x1 ∗ h x2 ∗ h x3 ∗ h y1 0

y2

y3 2M

M

y(n) 3M − 1

Abbildung 3.5: Schematische Darstellung der Blockverarbeitung bei der OverlapSave Methode mit Nx = 3M und Nf = L (M = L − Nh + 1)

M = Nx1 x = H = x = Nx1 y =

L - Nh + 1; = M*ceil(Nx/M); [x ; zeros(Nx1-Nx,1)]; fft(h,L); [zeros(Nh-1,1) ; x]; = Nx + Nh - 1; zeros(Nx1,1);

% % % % % % %

block shift (L = FFT length) make length of x a multiple of M pad with zeros filter transfer function add leading zeros to input signal new input signal length init. output signal vector

for n = 1:M:Nx1-L+1 % block processing loop y1 = ifft(fft(x(n:n+L-1),L).*H); % FFT - multiply by H - IFFT y(n:n+M-1) = y1(Nh:L); % discard first Nh samples end y = y(1:Nx); if ~any(imag(x)) & ~any(imag(h)) y = real(y); end

% real-valued signals x, h ? % avoid tiny imaginary parts

Die Impulsantwort ist im Vektor h der L¨ ange Nh gespeichert. Die Blockl¨ange L ange, die gr¨ oßer als die Impulsantwortl¨ange ist wie in Abb. 3.5 gleich der FFT-L¨ sein muß, damit der Blockabstand M = L - Nh + 1 positiv ist. Je gr¨oßer L, desto weniger Bl¨ocke m¨ ussen verarbeitet werden. Allerdings steigt dann der Aufwand f¨ ur die FFT.

78

3 Diskrete Fouriertransformation Aufgabe 3.7 Entwickeln Sie aufbauend auf dem Musterbeispiel f¨ ur die Overlap-Save Methode ein MATLABr -Programm y = ovadd(h,x) f¨ ur die OverlapAdd Methode. Die Filterimpulsantwort h eines FIR-Tiefpaßfilters der L¨ ange Nh = 64 k¨ onnen Sie z.B. mit h = fir1(64,1/8) entwerfen. N¨ aheres zu diesem Filterdesign erfahren Sie im Kapitel 4. Vergleichen Sie f¨ ur verschiedene Eingangssignale das Ausgangssignal Ihres Programms mit jenem der Filterfunktion y = filter(h,1,x). Messen Sie die Rechenzeit des Overlap-Add Programms mit etime() f¨ ur verschiedene FFT-L¨angen L.

3.6

Chirp-DFT

Bei der DFT wird der gesamte Frequenzbereich von θ = 0 bis θ = 2π in ¨aquidistante Intervalle unterteilt. Ist nur ein kleiner Ausschnitt der Frequenzskala von Interesse (z.B. zur Spektralanalyse schmalbandiger Signale), dann muß eine große Anzahl von Frequenzpunkten und damit eine FFT großer L¨ange gew¨ahlt werden. Viel zweckm¨aßiger w¨are eine “Frequenzlupe”, die den relevanten Frequenzbereich beliebig vergr¨oßern kann. Außerdem ist es w¨ unschenswert, die Anzahl der Frequenzpunkte nicht immer starr an die Anzahl der Zeitpunkte zu koppeln und diese Anzahl nicht nur auf Zweierpotenzen zu beschr¨anken. Die einfachste Realisierungsm¨ oglichkeit einer Frequenzlupe ist die Anwendung der Fouriertransformation auf das zeitbegrenzte Signal x(n), n = 0 . . . N − 1: jθk

X e



=

N −1 X

x(n) e−jθk n ,

n=0

mit

θk ∈ [ϑ1 , ϑ2 ].

(3.23)

Die Frequenzen θk k¨onnen dabei beliebig zwischen der Startfrequenz ϑ1 und der Stopfrequenz ϑ2 gew¨ahlt werden und m¨ ussen auch nicht ¨aquidistant verteilt sein. Die direkte Anwendung der Fouriertransformation ist dann vorzuziehen, wenn das Spektrum nur an einigen wenigen Frequenzpunkten zu berechnen ist. F¨ ur eine gr¨ oßere Anzahl von Frequenzpunkten kann ein Algorithmus eingesetzt werden, der auf der Chirp-Z Transformation beruht und bei dem trotz beliebiger Wahl der Start- und Stopfrequenzen die FFT verwendet werden kann [10]. Zun¨ achst wird innerhalb des betrachteten Frequenzintervalls [ϑ1 , ϑ2 ] eine Frequenzunterteilung gem¨aß θk = ϑ1 + k∆θ

mit

k = 0, 1, . . . L − 1

(3.24)

3.6 Chirp-DFT

79

gew¨ ahlt, wobei

ϑ2 − ϑ1 L−1 die gew¨ unschte Frequenzaufl¨ osung ist. Damit folgt aus Gl. 3.23 ∆θ =

X(k, ϑ1 , ∆θ) =

N −1 X

x(n)e−jϑ1 n e−j∆θnk

n=0

k = 0, 1, . . . L − 1.

(3.25)

(3.26)

Statt X(k, ϑ1 , ∆θ) wird in der Folge die Kurzform X(k) verwendet. Der n¨achste Schritt ist die Substitution  1 2 (3.27) n − (n − k)2 + k2 , nk = 2

die in Gl. 3.26 eingesetzt

X(k) = e−j

∆θ 2 2 k

N −1 X

x(n)e−jϑ1 n e−j | {z n=0 x ˜(n)

∆θ 2 2 n

∆θ

2

ej 2 (k−n) } | {z } h(k − n)

k = 0, 1, . . . L − 1 (3.28)

liefert. Damit kann X(k) mit Chirp-Signalen zur Modulation und als Impulsantwort zur Filterung berechnet werden: X(k) = e−j

∆θ 2 2 k

N −1 X n=0

|

mit

x ˜(n)h(k − n)

{z (˜ x ∗ h)(k)

x ˜(k) = x(k)e−jϑ1 k e−j und h(k) = ej

∆θ 2 2 k

∆θ 2 2 k

k = 0, 1, . . . L − 1

(3.29)

} k = 0, 1, . . . N − 1

k = −N + 1, . . . L − 1.

(3.30) (3.31)

Wegen der Verwendung von Chirp-Signalen kann man die Fouriertransformation Gl. 3.29 auch als Chirp-DFT bezeichnen. Die Realisierung der Chirp-DFT als System ist in Abb. 3.6 gezeigt. Der Wertebereich von k f¨ ur die Impulsantwort in Gl. 3.31 ergibt sich an Hand der Faltung in Gl. 3.29. Die Faltungssumme kann mit der zyklischen Faltung unter Verwendung der FFT implementiert werden, wobei das Signal x ˜(k) durch Anh¨ angen von Nullen auf M ≥ N + L − 1 Zeitpunkte verl¨angert wird. Dieses Nullenanf¨ ugen ist notwendig, um die lineare Faltung mit der zyklischen Faltung zu berechnen. Durch die Verl¨ angerung von x ˜(k) hat das Faltungsergebnis von Gl. 3.29 und damit X(k) ebenfalls die L¨ ange N + L − 1. Da X(k) jedoch nur L

80

3 Diskrete Fouriertransformation

x(n)

x˜(n)

h(n) = ej

∆Θ

2

e−j(ϑ1 n+ 2 n ) n = 0, 1, . . . , N − 1

X(n)

(˜ x ∗ h)(n) ∆Θ 2 n 2

∆Θ

2

e−j 2 n n = 0, 1, . . . , L − 1

Abbildung 3.6: Blockschaltbild zur Implementierung der Chirp-DFT (Startfrequenz ϑ1 , Frequenzaufl¨osung ∆θ, Anzahl der Zeitpunkte N , Anzahl der Frequenzpunkte L)

Frequenzpunkte umfaßt, sind die ersten N − 1 Punkte der zyklischen Faltung zu streichen. Der Implementierungsvorteil bei der Anwendung der Chirp-DFT ergibt sich dann, wenn die L¨ange der zyklischen Faltung eine Zweierpotenz ist (einfache FFT), was durch das Nullenanf¨ ugen jederzeit m¨ oglich ist. Damit k¨onnen bei der ChirpDFT Signale beliebiger L¨ ange mit einem effizienten FFT-Algorithmus verarbeitet werden. Im folgenden MATLABr -Programm wird das Signalspektrum im Frequenzintervall zwischen fstart und fstop (beide Frequenzen sind normiert auf die Abtastfrequenz) mit der Chirp-DFT bestimmt. Im ersten Teil werden die ChirpSignale und die Impulsantwort des Chirp-Filters berechnet. Der eigentliche ChirpDFT-Algorithmus nach Abb. 3.6 wird mit den beiden letzten MATLABr -Befehlen realisiert. w0 = 2*pi*fstart; fmax = (L-1+fstart)/L; % maximum possible stop frequency fstop = min(fmax,fstop); deltaw = pi/(L-1)*(fstop-fstart); % (half of) frequency resolution n = [0:N-1]’; k1 = [-N+1:-1]’; k2 = [0:L-1]’; p_in = exp(-j*(w0*n + deltaw*n.^2)); % input modulation signal p_out = exp(-j*deltaw*k2.^2); % output modulation signal h = [exp(j*deltaw*k1.^2) ; conj(p_out)]; % chirp filter impulse response M = N+L-1; % length of convolution result % (chirp filtering) Mf = 2^(ceil(log2(M))); % find nearest power of 2 for FFT H = fft(h,Mf); % FFT of chirp filter impulse response

3.6 Chirp-DFT

81

X = ifft(fft(x(:).*p_in,Mf) .* H);

% % % % %

output of chirp filter computed via FFT (use FFT length Mf, so cyclic convolution result is equal to linear convolution result)

X = X(N:M) .* p_out;

% perform modulation of output % to complete computation of DFT % (omitting first N-1 samples)

Aufgabe 3.8 Vergleichen Sie mit MATLABr die Ausf¨ uhrzeiten τA der Chirp-DFT mit jenen der FFT, wenn beide f¨ ur die Spektralanalyse in den folgenden Frequenzintervallen [f1 , f2 ] und mit Frequenzaufl¨osungen ∆f eingesetzt werden sollen (die Abtastfrequenz ist in allen F¨ allen 16 kHz): f1

f2

∆f

τA

τA

(Hz)

(Hz)

(Hz)

Chirp-DFT

FFT

0

8000

100

0

8000

10

0

8000

1

1000

2000

100

1000

2000

10

1000

2000

1

82

3 Diskrete Fouriertransformation

4 Entwurf digitaler Filter Beim Entwurf digitaler Filter wird in der Mehrzahl der Anwendungen von Spezifikationen im Frequenzbereich ausgegangen, die dann durch eine realisierbare ¨ Ubertragungsfunktion H(z) approximiert werden [11, 12]. Ist H(z) eine rationale Funktion in z oder z −1 (IIR-Filter), dann k¨ onnen damit steilflankige oder schmalbandige D¨ampfungsverl¨ aufe sehr gut approximiert werden. Diese Filter besitzen in der Regel eine minimale Phase. Wird mit H(z) ein Polynom in z (bzw. z −1 ) zur Approximation verwendet, dann lassen sich damit vorzugsweise FIR-Filter mit exakt linearer Phase bzw. mit nahezu beliebigem Frequenzgang entwerfen. ¨ F¨ ur scharfe Uberg¨ ange zwischen Durchlaß- und Sperrbereichen sind diese Filter im Vergleich zu den IIR-Filtern nicht sehr effizient. W¨ ahrend beim Entwurf von IIR-Filtern zum u ¨berwiegenden Teil klassische Entwurfsmethoden zum Einsatz kommen, die auf Verfahren des Analogfilterentwurfs zur¨ uckgreifen, wird das Design von FIR-Filtern bevorzugt mit numerischen Optimierungsverfahren durchgef¨ uhrt. F¨ ur beide F¨ alle bietet MATLABr ausgereifte Programme, deren Einsatz normalerweise unproblematisch ist. Trotzdem sind einige Besonderheiten zu beachten, die beim praktischen Einsatz zum Tragen kommen k¨ onnen.

4.1

FIR-Filterentwurf

FIR-Filter zeichnen sich durch eine Reihe von Vorteilen aus, so daß sie in vielen F¨ allen den IIR-Filtern vorgezogen werden. Als Hauptvorteile sind vor allem die Stabilit¨at f¨ ur beliebige Werte der Filterkoeffizienten und die M¨oglichkeit einer exakt linearen Phase zu nennen. Außerdem stehen f¨ ur die Implementierung eine Reihe von M¨oglichkeiten zur Verf¨ ugung, u.a. die in Abschnitt 3.4 vorgestell-

84

4 Entwurf digitaler Filter

te Faltungsoperation mit der FFT. Die am h¨ aufigsten verwendete Struktur f¨ ur FIR-Filter ist jedoch ein digitales Transversalfilter, das sich f¨ ur ak = 0, ∀k, unmittelbar aus der Differenzengleichung (Gl. 2.25) ergibt: y(n) =

N −1 X k=0

bk x(n − k) =

N −1 X k=0

h(k)x(n − k) .

(4.1)

Der rechte Ausdruck in Gl. 4.1 ist die Faltungssumme mit der Impulsantwort h(n) der L¨ ange N .1 Die Filterkoeffizienten bk dieses Filters sind daher direkt durch die Werte der Impulsantwort festgelegt. x(n)

x(n − 1)

T b0

x(n − 2)

T b1

x(n − N + 1)

T

T

b2

bN −2

bN −1 y(n)

Abbildung 4.1: FIR-Filter als transversales, digitales Filter ¨ F¨ ur die Ubertragungsfunktion des FIR-Filters folgt aus Gl. 2.28 mit ak = 0 und bk = h(k) H(z) =

N −1 X k=0

h(k)z −k =

1 z N −1

N −1 X

h(k)z N −1−k .

(4.2)

k=0

Die Pole eines FIR-Filters liegen demnach alle bei z = 0. Diese Filter sind daher immer stabil (was auch wegen der endlich langen Impulsantwort zu erwarten ist). Die Approximation von Frequenzg¨ angen erfolgt nur durch Ver¨andern der Nullstellenlagen. Mit FIR-Filtern werden daher Frequenzg¨ ange durch Polynome approximiert, so daß bei steilen (scharfkantigen) Filtern die Filterordnung im Vergleich zu rekursiven Filtern, die rationale Funktionen zur Filterapproximation verwenden, wesentlich h¨oher ist (typisch um einen Faktor 10 . . . 20). Bei linearphasigen FIR-Filtern lassen sich je nach Filterl¨ange N und Symmetrie der Impulsantwort h(n) vier F¨ alle unterscheiden [10]: I N gerade, h(n) gerade symmetrisch, d.h. h(n) = h(N − 1 − n), II N ungerade, h(n) gerade symmetrisch, 1 Hier

wird N − 1 anstelle von M als obere Summengrenze verwendet.

4.1 FIR-Filterentwurf

85

III N gerade, h(n) ungerade symmetrisch, d.h. h(n) = −h(N − 1 − n), IV N ungerade, h(n) ungerade symmetrisch. F¨ ur den Fall I erh¨alt man durch Einsetzen der Symmetriebedingung von h(n) in Gl. 4.2 mit z = ejθ und M = (N − 1)/2 (N gerade) N 2



−jθM

H(e ) = e

−1 X

n=0

{z

|

A(θ)

Entsprechend ergibt sich f¨ ur Fall II (N ungerade) jθ

−jθM

H(e ) = e

h(M ) +

M −1 X n=0

|

(4.3)

2h(n) cos θ(n − M ) } !

2h(n) cos θ(n − M ) . {z

(4.4)

}

A(θ)

Da die Nullphasenkomponente A(θ) eine reellwertige Funktion ist, besitzen diese beiden Filtertypen einen linearen Phasengang. Nur dort, wo A(θ) das Vorzeichen wechselt (¨ ublicherweise in den Sperrbereichen der Filter), treten 180o Phasenspr¨ unge auf. Zu beachten ist, daß M im ersten Fall halbzahlig ist, hingegen im zweiten Fall ganzzahlige Werte annimmt. F¨ ur FIR-Filter mit ungerade symmetrischen Impulsantworten erh¨alt man f¨ ur Fall III (N gerade)



−jθM −j π 2

H(e ) = e

e

N 2

−1 X

n=0

|

und f¨ ur Fall IV (N ungerade) π

H(ejθ ) = e−jθM e−j 2

M −1 X n=0

|

2h(n) sin θ(n − M ) {z

A(θ)

}

2h(n) sin θ(n − M ) . {z

A(θ)

(4.5)

}

(4.6)

Diese Beziehungen f¨ ur die Frequenzg¨ ange werden sp¨ater beim Filterentwurf verwendet. Zur Veranschaulichung der Symmetrieeigenschaften bei FIR-Filtern soll als einfaches MATLABr -Beispiel eine abgetastete und zeitbegrenzte sin x/xFunktion zur Konstruktion der jeweiligen Impulsantwort betrachtet werden:

86

4 Entwurf digitaler Filter

N1 = 40; n = 1:N1/2; fc = 1/10; h = sin(pi*fc*n)./(pi*n); h = [h(N1/2:-1:1), fc, h]; plot(abs(fft(h))); zplane(h,1);

% filter length minus 1 % cutoff frequency normalized to Fs/2 % one-sided discrete-time sinc-function % include symmetric part and midpoint % plot poles and zeros

Aufgabe 4.1 Modifizieren Sie die obigen MATLABr -Befehle, um alle vier F¨alle von FIR-Filtern graphisch zu veranschaulichen. Achten Sie insbesondere auf die Unterschiede zwischen gerader und ungerader Filterl¨ange. Stimmen die Frequenzg¨ange und die Lage der Pole und Nullstellen mit Ihren Vorstellungen u ¨berein? Um die Untersuchung flexibel zu gestalten, schreiben Sie am besten eine M-Funktion der Art h = firsym(N,fc,even_odd), wobei N die Filterl¨ ange, fc die Grenzfrequenz normiert auf die halbe Abtastfrequenz ist und even_odd zur Unterscheidung zwischen gerader (z.B. even_odd = ’e’ ) und ungerader Symmetrie von h(n) dient. Der Prototyp der M-Funktion k¨ onnte dann so aussehen: function h = firsym(N,fc,even_odd) N2 = fix(N/2); n = 1:N2; if rem(N,2) == 1 h = sin(pi*fc*n)./(pi*n); if strcmp(upper(even_odd),’E’) h = ... else h = ... end else ... end

In den folgenden Abschnitten werden die wichtigsten Methoden zum Entwurf von FIR-Filtern mit MATLABr vorgestellt. F¨ ur die ersten drei Verfahren sollen Sie selbst MATLABr -Programme schreiben. Der optimale Entwurf mit dem Remez-Algorithmus ([10, 11, 12]) ist in MATLABr (SIGNAL PROCESSING TOOLBOX) enthalten. Neben der Entwicklung der M-Files ist der Vergleich der einzelnen Verfahren ein wesentlicher Teil der vorgeschlagenen Aufgaben.

4.1 FIR-Filterentwurf

4.1.1

87

Frequenzabtastungsmethode

Bei dieser Entwurfsmethode wird der gew¨ unschte Frequenzgang an ¨aquidistanten Frequenzpunkten im Frequenzintervall von null bis zur Abtastfrequenz vorgegeben. Die Impulsantwort bzw. die Filterkoeffizienten des FIR-Filters erh¨alt man durch die inverse, diskrete Fouriertransformation (IDFT) des gegebenen Frequenzgangs. Der Vorteil dieser Methode ist neben ihrer Einfachheit auch die praktische Relevanz, z.B. wenn ein gemessener Frequenzgang mit einem FIR-System nachgebildet werden soll. Das Verfahren liefert gute Resultate, wenn hinreichend viele Frequenzpunkte gew¨ahlt werden und im Amplitudenfrequenzgang keine allzu stei¨ len Uberg¨ ange auftreten. F¨ ur idealisierte Frequenzg¨ ange in Form rechteckf¨ormiger Verl¨ aufe ergeben sich relativ bescheidene Ergebnisse. Dieses Verhalten ist aus den Interpolationseigenschaften der DFT verst¨ andlich (siehe Abschnitt 3.1). Zun¨ achst werden linearphasige FIR-Filter behandelt, bei denen nur der Betragsverlauf des Frequenzgangs angegeben werden muß. Bei der Festlegung des gew¨ unschten Frequenzgangs m¨ ussen die Symmetrieeigenschaften der DFT ber¨ ucksichtigt werden, um reellwertige Impulsantworten zu erhalten. Mit dem folgenden MATLABr -Programm, das auch als Muster zur L¨ osung der Aufgabenstellungen dieses Abschnitts dienen soll, wird ein idealisiertes Tiefpaßfilter mit der Frequenzabtastungsmethode approximiert. function [h,Hid] = firfs(N,fc) N2 = fix((N-1)/2); Np = fix(fc*N/2); Hmag = zeros(1,N); Hmag(1:Np+1) = ones(1,Np+1); Hmag(N-N2+1:N) = Hmag(N2+1:-1:2);

% % % %

magnitude response from 0 to pi (ideal low pass filter) magnitude response from pi to 2*pi, using (even) symmetry property

% create linear phase response phi = zeros(1,N); phi(1:N2+1) = -pi*(N-1)*(0:N2)/N; phi(N-N2+1:N) = -phi(N2+1:-1:2);

% phase response from 0 to pi % phase response from pi to 2*pi, % using (odd) symmetry property

% compute ideal frequency response and FIR filter impulse response Hid = Hmag .* exp(j*phi); h = real(ifft(Hid));

% real() avoids a very small imaginary % part caused by rounding errors

88

4 Entwurf digitaler Filter Aufgabe 4.2 Die Approximation steiler Frequenzg¨ ange ist nicht optimal mit der Frequenzabtastungsmethode zu erreichen. Mit firfs() werden Sie feststellen, daß die Approximation des Rechtecktiefpaßfilters nur eine geringe Sperrd¨ampfung ergibt. Eine Idee zur Verbesserung liegt nun darin, daß ¨ im Referenzbetragsverlauf eine Ubergangszone zwischen Durchlaß- und Sperrbereich vorgesehen wird. Dadurch entsteht ein rampenf¨ormiger Betragsverlauf, der besser approximiert werden kann. Modifizieren Sie firfs(), so daß im gew¨ unschten Betragsverlauf ein bis ¨ drei Frequenzpunkte f¨ ur den Ubergangsbereich vorsehen werden, wo der Betragsverlauf Werte zwischen 0 und 1 annimmt. Optimieren Sie experimentell diese Zwischenwerte in bezug auf eine maximale Sperrd¨ampfung.

Die bisher untersuchten FIR-Filter haben einen linearen Phasenverlauf. In der n¨ achsten Aufgabe wird eine einfache Methode angewendet, um aus linearphasigen Filtern minimalphasige Filter zu erzeugen. Der Trick dabei ist die Inversion jener Nullstellen z0i , die außerhalb des Einheitskreises in der komplexen z-Ebene liegen, d.h. es wird z0i durch 1/z0 ∗i ersetzt.

Aufgabe 4.3 Schreiben Sie eine MATLABr -Funktion h_min = lin2min(h_lin), die ausgehend von der Impulsantwort h_lin eines linearphasigen Filters ¨ zun¨achst mit roots() die Nullstellen der Ubertragungsfunktion berechnet, dann die außerhalb des Einheitskreises liegenden Nullstellen mit find() findet und diese durch die invertierten Nullstellen ersetzt. Ab¨ schließend wird mit poly() die Ubertragungsfunktion des neuen (minimalphasigen) Filters gebildet und die Filterkoeffizienten bestimmt. Kor¨ rigieren Sie auch die Anderung der Filterverst¨ arkung bedingt durch die Nullstelleninversion. Vergleichen Sie graphisch die Frequenzg¨ ange des so gewonnenen minimalphasigen FIR-Filters mit dem urspr¨ unglichen Filter. Gibt es Unter¨ schiede im Betragsverlauf? Beobachten Sie die Anderung der Impulsantwort. Bis zu welcher Filterl¨ ange funktioniert diese Methode?

4.1 FIR-Filterentwurf

4.1.2

89

Methode der kleinsten Quadrate

Ist der gew¨ unschte Frequenzgang des FIR-Filters an nicht¨aquidistanten Frequenzpunkten gegeben oder liegen nur wenige Frequenzpunkte vor, so ist das Frequenzabtastungsverfahren nicht besonders gut geeignet. Man k¨onnte bestenfalls einen sehr dichten Frequenzraster w¨ ahlen, um alle gegebenen Frequenzpunkte zu umfassen. Allerdings wird dann die Filterl¨ ange sehr groß. Besser sind Verfahren, die die vorgegebenen Filterspezifikationen durch L¨ osung eines linearen Gleichungssystems zu erf¨ ullen versuchen. Um die Idee dieser Methode zu vermitteln, wird ein linearphasiges Filter mit ungerader Filterl¨ ange N und gerade symmetrischer Impulsantwort h(n) betrachtet (Fall II von Seite 85). Mit Gl. 4.4 erh¨alt man f¨ ur den Amplitudenfrequenzgang an den gegebenen Frequenzpunkten θk : A(θk ) = h(M ) +

M −1 X n=0

2h(n) cos θk (M − n),

k = 0, 1, 2 . . . M,

(4.7)

mit M = (N − 1)/2. Dabei wird zun¨ achst vorausgesetzt, daß genausoviele Frequenzpunkte L wie unbekannte Variable h(n) gegeben sind (L = M + 1). Stellt man Gl. 4.7 in Matrizenform dar, dann ergibt sich das folgende lineare Gleichungssystem f¨ ur die gesuchte Impulsantwort h(n): Sh = A,

(4.8)

mit h = [h(0)h(1) . . . h(M )]T , A = [A(θ0 )A(θ1 ) . . . A(θM )]T und der Systemmatrix   2 cos θ0 M 2 cos θ0 (M − 1) · · · 2 cos θ0 1    2 cos θ1 M 2 cos θ1 (M − 1) · · · 2 cos θ1 1   . (4.9) S= .. ..  .. .. ..  . . . . .   2 cos θM M 2 cos θM (M − 1) · · · 2 cos θM 1 MATLABr verwendet exzellente Algorithmen zur effizienten und numerisch robusten L¨ osung linearer Gleichungssysteme. Dabei ist auch automatisch der Fall unterund u ¨berbestimmter Gleichungssysteme miteingeschlossen, d.h. Gleichungssysteme mit weniger oder mehr Frequenzpunkte als unbekannte Impulsantwortwerte. Sind mehr Gleichungen als Unbekannte vorhanden, dann ist Gl. 4.8 nur n¨aherungsweise l¨ osbar: Sh − A = ǫ. (4.10) S ist jetzt eine L × (M + 1) Matrix mit L > M + 1, da die Anzahl L der Frequenzpunkte gr¨oßer als die Anzahl M + 1 der Unbekannten ist. Die L¨osung hopt von Gl. 4.10 wird so bestimmt, daß die L¨ ange (Norm) des unbekannten Fehlervektors ǫ minimiert wird [2]. Dazu setzt man die Ableitungen des Fehlervektors

90

4 Entwurf digitaler Filter

(bzw. dessen Komponenten) nach den Komponenten von h null und erh¨alt daraus folgendes Gleichungssystem: ST S hopt = ST A.

(4.11)

In Gl. 4.11 hat die Systemmatrix ST S die Dimension (M + 1) × (M + 1), so daß dieses Gleichungssystem bzgl. hopt wie u ost wird. Da die optimale L¨osung ¨blich gel¨ die Summe der Fehlerquadrate (Quadrat der Norm von ǫ) minimiert, wird die L¨ osung hopt als Least Squares Solution bezeichnet. Das n¨achste MATLABr -Beispiel zeigt den FIR-Filterentwurf mit der Methode der kleinsten Quadrate. Der gew¨ unschte Amplitudenfrequenzgang ist in den Vektoren f (Frequenzpunkte) und m (dazugeh¨ orende Amplitudenwerte) gespeichert. F¨ ur reellwertige FIR-Filter gen¨ ugt die Angabe der Spezifikation im Frequenzintervall von null bis zur halben Abtastfrequenz. L = length(f); % number of frequency points if rem(N,2) == 0 % even filter length N ? M = N/2; S = 2*cos(pi*f(:)*(M - 0.5 - [0:M-1])); % system matrix else M = (N-1)/2; S = [2*cos(pi*f(:)*(M - [0:M-1])) , ones(L,1)]; end h = S \ m(:); % solve LS-problem h = [h ; h(M:-1:1)]; % append symmetric part

Aufgabe 4.4 Modifizieren Sie das MATLABr -Beispiel zum LS-Entwurf von FIRFiltern mit ungerader symmetrischer Impulsantwort. Entwerfen Sie danach einen sogenannten Hilberttransformator mit dem gew¨ unschten Frequenzgang  N −1 π H ejθ = e−jθ 2 e−j 2 sign θ

(sign x ist die Vorzeichenfunktion). Welche Abweichungen vom idealen Betragsverlauf sind zu beobachten? Ist der Hilberttransformator gerader oder ungerader L¨ange besser? Wie sieht die Lage der Pole und Nullstellen in der komplexen z-Ebene aus? K¨ onnen Sie einen minimalphasigen Hilberttransformator entwerfen?

4.1 FIR-Filterentwurf

91 Aufgabe 4.5

Verwenden Sie die vorgestellte LS-Methode zum Entwurf a) eines FIR-Filters mit gaußf¨ ormigem Betragsfrequenzgang, b) eines “Differenzierers” (Betragsverlauf proportional zur Frequenz), c) eines FIR-Filters zur Formung von weißem Rauschen zu 1/f Rauschen (Leistungsdichtespektrum verkehrt proportional zur Frequenz) mit einer vorgegebenen unteren Grenzfrequenz fc , d) eines FIR-Filters zur Approximation des Frequenzgangs der mittleren H¨orschwelle des menschlichen Geh¨ ors, deren Betragsverlauf in Dezibel durch die Funktion  −0.8 4  2 f f f −0.6( 1000 −3.3) − 6.5 e Tq (f ) = 3.64 + 0.001 1000 1000 angen¨ahert werden kann (Frequenz f in Hertz).

4.1.3

Fenstermethode

Die Fenstermethode geht von einem idealisierten Filter mit der Impulsantwort hd (n) (Referenzimpulsantwort) aus. Dieses Filter ist nicht realisierbar, da es nicht kausal ist und seine Impulsantwort keine endliche L¨ange besitzt. F¨ ur ein idealisiertes Tiefpaßfilter mit der Grenzfrequenz θg ist die Referenzimpulsantwort hd (n) =

sin θg n , πn

−∞ < n < ∞.

(4.12)

Durch Zeitverschiebung und Zeitbegrenzung mit einer Fensterfunktion w(n) erh¨alt man die Impulsantwort eines FIR-Filters, die jene des idealisierten Filters approximiert:   N −1 w(n), 0 ≤ n ≤ N − 1. (4.13) h(n) = hd n − 2 F¨ ur eine lineare Phase muß h(n) symmetrisch sein (h(N − 1 − n) = h(n)) und das Maximum von h(n) in der Mitte liegen2 . 2 F¨ ur

N ungerade ergibt sich ein Maximum bei n = benachbarte Maxima bei n = N − 1 und n = N auf. 2 2

N −1 , 2

und f¨ ur N gerade treten zwei

92

4 Entwurf digitaler Filter

Die einfachste Form einer Fensterfunktion ist ein Rechteckzeitfenster der Dauer N . Leider tritt mit dieser Fensterfunktion bei der Approximation von idealisierten (rechteckf¨ormigen) Frequenzg¨ angen das Gibbsche Ph¨ anomen auf, so daß sich unabh¨angig von der Filterl¨ ange N immer eine Welligkeit im Durchlaßbereich von 9% bzw. eine Sperrd¨ ampfung von 21 dB ergibt. Durch Wahl anderer Fensterfunktionen kann das Gibbsche Ph¨anomen vermie¨ den werden, allerdings auf Kosten der Breite des Ubergangsbereiches zwischen Durchlaß- und Sperrbereich des Filters [10, 11]. In MATLABr (SIGNAL PROCESSING TOOLBOX) sind verschiedene Fensterfunktionen implementiert. Dabei werden bei einigen Fenstern (und zwar bartlett() und blackman(), nicht jedoch hanning()) Randpunkte, die null sind, bei der Fensterl¨ange mitgez¨ahlt! Normalerweise sollten diese Randpunkte eliminiert werden, da sie bei einer Implementierung der FIR-Filter u ussige Multiplikationen mit null bewirken. Außerdem ¨berfl¨ wird der Vergleich mit anderen Fensterfunktionen gleicher L¨ange verf¨alscht. Bei Verwendung der erw¨ahnten Fensterfunktionen sollte daher die Fensterl¨ange um 2 erh¨ oht und die beiden Randpunkte eliminiert werden. Neben den dreieckf¨ormigen Fensterfunktionen (triang() und bartlett())3 gibt es vier verallgemeinerte Cosinusfenster und das Kaiser-Fenster. Das verallgemeinerte Cosinusfenster der L¨ ange N ist gegeben durch   a − b cos 2πn + c cos 4πn 0≤n≤N −1 N −1 N −1 w(n) = , (4.14)  0 sonst wobei Fensternamen und Parameter in Tabelle 4.1 zusammengestellt sind. Tabelle 4.1: Parameter der verallgemeinerten Cosinusfenster Fenstername

MATLAB Funktion

a

b

c

Rechteck

boxcar()

1

0

0

Hann

hanning()

0.5

0.5

0

Hamming

hamming()

0.54

0.46

0

Blackman

blackman()

0.42

0.5

0.08

Beim Kaiser-Fenster (MATLABr -Funktion kaiser(N,beta)) wird neben der Fensterl¨ange N auch ein Parameter β zur Beeinflussung der Sperrd¨ampfung des entworfenen FIR-Filters angegeben. Dieses Fenster stellt einen empirisch gefundenen Kompromiß zwischen der Breite der Fouriertransformation des Fensters 3 Diese

beiden MATLABr -Funktionen liefern unterschiedliche Fenster bei gleicher Filterl¨ ange.

4.1 FIR-Filterentwurf

93

¨ (bestimmt die Breite der Ubergangszone zwischen Durchlaß- und Sperrbereichen) und der erzielbaren Sperrd¨ ampfung dar. Die Beziehung f¨ ur das Kaiser-Fenster ist

w(n) =

     I0    

β

r

1−



2(n−M ) N −1

I0 (β)

2

!

0≤n≤N −1 ,

0

(4.15)

sonst

mit M = (N − 1)/2 und I0 (x) als modifizierte Besselfunktion nullter Ordnung, die am einfachsten durch die Reihenentwicklung I0 (x) = 1 +

2 ∞  X (x/2)k

k=1

(4.16)

k!

berechnet werden kann. Dabei braucht man in der Regel nur maximal 25 Reihenglieder zu ber¨ ucksichtigen. Der Parameter β h¨ angt mit der gew¨ unschten Sperrd¨ampfung ar (in dB) des zu entwerfenden Filters in folgender Weise zusammen:     0 β= 0.5842 (ar − 21)0.4 + 0.07886 (ar − 21)    0.1102 (a − 8.7) r

ar < 21 21 ≤ ar < 50 .

(4.17)

ar ≥ 50

Ein weiterer, empirisch gefundener Zusammenhang besteht zwischen Filterl¨ange ¨ N , Sperrd¨ampfung ar und der Breite der Ubergangszone ∆f = (fr − fc )/fs zwischen Durchlaß- und Sperrbereich des Tiefpaßfilters [11]: N =1+



ar − 7.95 14.36∆f



,

(4.18)

mit der Durchlaßgrenzfrequenz fc , der Sperrbereichsgrenzfrequenz fr und der Abtastfrequenz fs .4 Die Fenstermethode kann auch zum Entwurf von Hochpaßfiltern, Bandpaßund Bandsperrfiltern sowie von Hilberttransformatoren und Differenzierer eingesetzt werden. Hochpaßfilter ergeben sich aus der Differenzbildung “Allpaß minus Tiefpaß”. Ein (symmetrisches) Bandpaßfilter erh¨ alt man durch cosinusf¨ormige Modulation der Tiefpaßimpulsantwort und eine Bandsperre als Differenz “Allpaß minus Bandpaß” (siehe Tabelle 4.2). 4 Die

Operation ⌈x⌉ liefert die kleinste ganze Zahl, die gr¨ oßer als x ist.

94

4 Entwurf digitaler Filter

Tabelle 4.2: Impulsantworten der idealisierten Referenzfilter (die angegebenen Frequenzg¨ange sind 2π–periodisch, θ1 = θM − ∆θ und θ2 = θM + ∆θ)

Tiefpaß

sin θg n hT P (n) = πn

⇐⇒

Hochpaß

hHP (n) = δ(n) − hT P (n)

Bandpaß

sin ∆θn hBP (n) = 2 cos θM n πn

Bandsperre Hilberttrans. Differenzierer

hBS (n) = δ(n) − hBP (n) πn 2 2  sin hHi (n) = πn 2   0 n=0 n hDi (n) =  (−1) n 6= 0 n

⇐⇒ ⇐⇒ ⇐⇒

(

HT P (jθ) = HHP (jθ) = HBP (jθ) = HBS (jθ) =

(

(

(

(

⇐⇒

HHi (jθ) =

⇐⇒

HDi (jθ) = jθ,

1

0 < |θ| < θg

0

sonst

0

0 < |θ| < θg

1

sonst

1

θ1 < |θ| < θ2

0

sonst

0

θ1 < |θ| < θ2

1

sonst

−j

0 1

(4.54)

(4.55)

Auch f¨ ur die Pole und Nullstellen der analogen Tschebyscheff-Filter gibt es explizite Formeln, die in den MATLABr -Funktionen cheb1ap() und cheb2ap() verwendet werden. Das folgende Beispiel zeigt die Verwendung dieser Funktionen zum Entwurf digitaler Tschebyscheff-Filter mit Hilfe der bilinearen Z-Transformation.

118

4 Entwurf digitaler Filter

|Ha (jω)|2 f¨ ur normierten Tschebyscheff I Tiefpaß (N = 7) 1 1 1+ε2

0 0

1 ωr ω

2

|Ha (jω)|2 f¨ ur normierten Tschebyscheff II Tiefpaß (N = 7) 1 1 1+ε2

0 0

1 ωr ω

2

Abbildung 4.7: Frequenzgang normierter, analoger Tschebyscheff-Tiefpaßfilter

% Tschebyscheff I Filter N = 7; % filter order rp = 1; % pass band ripple in dB fc = 0.3; % cutoff frequency normalized to Fs/2 % compute poles, zeros, and gain of analog filter [za,pa,ka] = cheb1ap(N,rp); % transform to digital domain [z,p,k] = bilzt(za,pa,ka,fc); % plot result [b,a] = zp2tf(z,p,k); freqz(b,a); % Tschebyscheff II Filter N = 7; % filter order as = 70; % stop band attenuation in dB fr = 0.4; % stop band edge frequency normalized to Fs/2 % compute poles, zeros, and gain of analog filter [za,pa,ka] = cheb2ap(N,as); % transform to digital domain [z,p,k] = bilzt(za,pa,ka,fr);

4.2 IIR-Filterentwurf

119

% plot result [b,a] = zp2tf(z,p,k); freqz(b,a);

Ein Equi-Ripple Design wie bei FIR-Filtern, d.h. konstante Welligkeit sowohl im Durchlaß- als auch im Sperrbereich, wird mit elliptischen Filtern (auch Cauer-Filter genannt) erreicht. Der Betragsverlauf des Frequenzgangs eines normierten elliptischen Analogtiefpaßfilters ist in Abb. 4.8 skizziert, wobei nur zur besseren Sichtbarkeit eine große Welligkeit gew¨ ahlt wurde. |Ha (jω)|2 f¨ ur ein elliptisches Filter (N = 5) 1 1 1+ε2

0 0

1 ω

2

Abbildung 4.8: Betragsfrequenzgang eines normierten, analogen, elliptischen Tiefpaßfilters Mit der MATLABr -Funktion [z,p,k] = ellip(N,rp,ar,fc) kann ein digitales elliptisches Tiefpaßfilter mit der Ordnung N, der Welligkeit im Durchlaßbereich rp und der Sperrd¨ampfung ar (beide in dB), sowie der Durchlaßgrenzfrequenz fc entworfen werden. Aufgabe 4.15 In dieser Aufgabe sollen Sie die vier vorgestellten Standardapproximationen f¨ ur digitale Tiefpaßfilter vergleichen. Dazu bestimmen Sie jeweils Pole, Nullstellen und den Verst¨ arkungsfaktor f¨ ur die folgende Spezifikation: fc = 0.800 kHz, fr = 1.2 kHz, fs = 10 kHz, rp = 0.5 dB, ar = 60 dB. Passen Sie die jeweilige Filterordnung so an, daß Filter gleicher Steilheit und Welligkeiten entstehen. Betrachten Sie den Frequenzgang von D¨ ampfung und Gruppenlaufzeit. Welches Filter hat die gr¨oßte Verzerrung der Gruppenlaufzeit? Wie sieht die Lage der Pole und Nullstellen mit der Funktion zplane() aus?

120

4 Entwurf digitaler Filter Aufgabe 4.16 Von Interesse ist auch ein Vergleich der Impulsantworten der einzelnen IIR-Filter. Dazu gehen Sie wie folgt vor: a) Bestimmen Sie Pole p, Nullstellen z und Verst¨arkungsfaktor k des jeweiligen IIR-Filters. ¨ b) Transformieren Sie Pole und Nullstellen der Ubertragungsfunktion mit b = k*real(poly(z)) und a = real(poly(p)) in die Darstellung als rationale Funktion mit dem Koeffizientenvektor b des Z¨ahlerpolynoms bzw. a des Nennerpolynoms (real() eliminiert einen kleinen Imagin¨ arteil, der durch Rundungsfehler entstehen kann). c) Berechnen Sie mit h = filter(b,a,[1 zeros(1,Ntime)]) wie gewohnt die Impulsantwort. Welches der untersuchten Filter ist f¨ ur die Bandbegrenzung bei Daten¨ ubertragungskan¨ alen am besten geeignet? Welche Filter sind streng minimalphasig? Versuchen Sie, mit dem auf Seite 112 vorgestellten LS-Verfahren, aus der Impulsantwort die Polynom- bzw. ¨ Pol/Nullstellendarstellung der Ubertragungsfunktion zu bestimmen. Gibt es Abweichungen zur urspr¨ unglichen Darstellung? Ab welcher Filterordnung versagt diese Methode? Versuchen Sie, die Fehlerquellen zu lokalisieren.

4.2.3

Frequenztransformationen

Der bisher vorgestellte Entwurf mit Hilfe der bilinearen Z-Transformation hat sich auf Tiefpaßfilter beschr¨ankt. Andere Standardapproximationen, wie Hochp¨asse, Bandp¨ asse und Bandsperren erh¨ alt man ¨ ahnlich wie bei analogen Filtern durch Frequenztransformationen. So wird z.B. ein analoger Tiefpaß mit der Transforuhrt, wobei sich Sperrd¨ampfung und mation s → 1s in einen Hochpaß u ¨bergef¨ Welligkeit im Durchlaßbereich nicht ¨ andern. Beim Entwurf von Digitalfiltern kann man entweder den analogen Referenztiefpaß in ein anderes Analogfilter (z.B. Hochpaß) transformieren und danach mit der bilinearen Z-Transformation das gesuchte Digitalfilter erhalten, oder man wendet die Frequenztransformation im Digitalbereich an. Beide Verfahren sind gleichwertig. Sie unterscheiden sich nur in der Frequenzverwerfung. Hier sollen die Frequenztransformationen im Digitalbereich angewendet werden. Diese Frequenztransfor-

4.2 IIR-Filterentwurf

121

mationen sind sogenannte Allpaßtransformationen, bei denen die komplexe Frequenz z durch eine Allpaßfunktion z → G(z) mit |G(ejθ )| = 1 transformiert wird. Dadurch ist gew¨ahrleistet, daß lediglich die Frequenzskala f¨ ur H(z) ge¨andert wird [19, 11]. Tiefpaß-Hochpaß-Transformation ¨ Ein Tiefpaßfilter mit der Grenzfrequenz θc und der Ubertragungsfunktion Hlp (z) geht mit folgender Transformation in ein Hochpaßfilter mit der Grenzfrequenz θ1 ¨ und der Ubertragungsfunktion Hhp (z) u ¨ber: Hhp (z) = Hlp (z) (4.56) z+α , z→− 1 + αz mit α = −

cos

cos

θ1 +θc 2 θ1 −θc 2

.

F¨ ur θc = π − θ1 wird α = 0, so daß sich eine sehr einfache Transformation ergibt: Hhp (z) = Hlp (−z). (4.57) Man braucht daher nur die gegebene Hochpaßgrenzfrequenz in die Tiefpaßgrenz¨ frequenz umzurechnen (fc = fs /2 − f1 ) und in der Ubertragungsfunktion des entworfenen Tiefpaßfilters bei jedem z oder in der Filterstruktur bei jedem Verz¨ogerungselement eine Vorzeichenumkehr vorzunehmen! Aufgabe 4.17 Probieren Sie diese Transformation an einem Beispiel aus. Entwerfen Sie dazu ein beliebiges Tiefpaßfilter und wenden Sie dann die einfache Transformation auf die Pol/Nullstellendarstellung von H(z) an. Beobachten ¨ Sie auch die Anderung der Pole und Nullstellen mit zplane().

Tiefpaß-Bandpaß-Transformation Ein Bandpaßfilter mit der unteren Grenzfrequenz θ1 und der oberen Grenzfrequenz θ2 gewinnt man durch die Transformation Hbp (z) = Hlp (z) , (4.58) z 2 − 2αk z + k−1 z → − k−1 2k+1 2αk k+1 k+1 z − k+1 z + 1

122

4 Entwurf digitaler Filter

mit α =

cos cos

θ1 +θ2 2 θ2 −θ1 2

1 und k = cot θ2 −θ tan θ2c . 2

Auch hier gibt es einen (allerdings einschr¨ ankenden) einfachen Spezialfall f¨ ur θ1 + θ2 = π und θc = θ2 − θ1 : Hbp (z) = Hlp (−z 2 ).

(4.59)

Die Einschr¨ankung betrifft die Mittenfrequenz des Bandpaßfilters, die immer ein Viertel der Abtastfrequenz ist. Die Bandbreite ist beliebig und durch die Tiefpaßgrenzfrequenz bestimmt. Ist die Filterstruktur gegeben, so entspricht Gl. 4.59 dem Austausch jedes Verz¨ogerungselements durch zwei in Kette geschaltete Verz¨ogerungen plus einer Vorzeichenumkehr.

Aufgabe 4.18 F¨ uhren Sie mit einfachen MATLABr -Befehlen f¨ ur eine gegebene Tiefpaߨ ubertragungsfunktion die Frequenztransformation Gl. 4.59 durch. Danach entwerfen Sie mit ellip() ein elliptisches Bandpaßfilter Ihrer Wahl. Finden Sie heraus, ob die Transformation symmetrische oder unsymmetrische Bandp¨ asse liefert.

Tiefpaß-Bandsperre-Transformation In ¨ ahnlicher Weise wie beim Bandpaß ergibt sich f¨ ur eine Bandsperre mit θ1 (untere Grenzfrequenz) und θ2 (obere Grenzfrequenz) die Transformation , Hbs (z) = Hlp (z) z 2 − 2α z + 1−k z → 1−k 2k+1 2α k+1 k+1 z − k+1 z + 1 mit α =

cos cos

θ1 +θ2 2 θ2 −θ1 2

(4.60)

1 und k = tan θ2 −θ tan θ2c . 2

Der entsprechende Spezialfall ist hier Hbs (z) = Hlp (z 2 ) f¨ ur θ1 + θ2 = π und θc = π − θ2 + θ1 .

(4.61)

4.2 IIR-Filterentwurf

123 Aufgabe 4.19

Die Transformation z → ±z 2 kann z.B. dadurch verallgemeinert werden, ¨ daß z in H(z) durch ±z L (L ganzzahlig) ersetzt wird. Uberlegen Sie sich mit den Eigenschaften der Fouriertransformation den Einfluß einer solchen Transformation, d.h. ejθ → ejθL auf den Frequenzgang H(ejθ ). Entwerfen Sie danach ein schmalbandiges Bandpaßfilter (oder Tiefpaßfilter) und kontrollieren Sie Ihre theoretischen Resultate mit MATLABr .

4.2.4

Least-Squares-Approximation von Frequenzg¨ angen

Ein Least-Squares-Verfahren f¨ ur den IIR-Filterentwurf, das gegebene Impulsantworten durch IIR-Systeme approximiert, ist auf Seite 112 angegeben. In diesem Abschnitt soll die Approximation den Betragsfrequenzgang betreffen. Wie beim FIR-Filterentwurf bereits erw¨ ahnt, eignen sich Least-Squares-Verfahren nur bedingt zur Approximation unstetiger D¨ ampfungsverl¨ aufe. Man wird sie daher f¨ ur die Approximation nichtstandardm¨ aßiger Verl¨ aufe einsetzen, wie z.B. f¨ ur gemessene Frequenzg¨ange. Im Gegensatz zu FIR-Filtern f¨ uhrt das Least-Squares-Verfahren ¨ bei IIR-Filtern auf ein nichtlineares Problem, da die Ubertragungsfunktion eines IIR-Filters als rationale Funktion (siehe Gl. 2.28) vorliegt und die Filterkoeffizienten somit nicht als L¨ osung eines linearen Gleichungssystems gefunden werden k¨ onnen. Bei IIR-Filtern muß man daher i.a. auf numerische Optimierungsmethoden f¨ ur die Least-Squares-Approximation zur¨ uckgreifen. Ein Verfahren, das numerische Optimierungsalgorithmen vermeidet und trotzdem gute Ergebnisse liefert, soll in seinen Grundz¨ ugen erkl¨art werden. Die Idee ist ¨ die Uberf¨ uhrung der Approximationsaufgabe vom Frequenz- in den Zeitbereich, d.h. man findet die Filterkoeffizienten anhand einer geeigneten Zeitfunktion, deren Fouriertransformation dem gew¨ unschten Betragsverlauf entspricht. Das Problem dabei ist, daß nur der Betrag des Frequenzgangs vorliegt, dessen R¨ ucktransformation ja eine akausale Impulsantwort ergibt (Nullphasenfilter). Man muß daher eine andere Zeitfunktion suchen, deren Fouriertransformation eine Nullphase besitzt. Die L¨ osung ist die Autokorrelationsfunktion (AKF), aus der mit einem LeastSquares-Verfahren, ¨ahnlich wie auf Seite 112, die Filterkoeffizienten berechnet werden. Allerdings ergeben sich dabei prinzipielle Probleme bei der Bestimmung der Koeffizienten des Z¨ahlerpolynoms von H(z). Zur Berechnung des Zusammenhangs zwischen der AKF und den Koeffizienten eines IIR-Filters geht man von der Rekursion Gl. 2.25 aus und verwendet station¨ ares, weißes Rauschen als Eingangssignal. Damit ergibt sich f¨ ur die AKF des

124

4 Entwurf digitaler Filter

Ausgangssignals ryy (m) = E{y(n)y(n − m)} =− oder

M X

k=1

ak E{y(n − k)y(n − m)} +

ryy (m) = −

M X

k=1

N X

k=0

ak ryy (m − k) +

bk E{x(n − k)y(n − m)}

N X

k=0

bk rxy (m − k) ,

(4.62)

(4.63)

d.h. auch f¨ ur die AKF ergibt sich eine Rekursion. Die Kreuzkorrelationsfunktion rxy (m) h¨angt mit der Impulsantwort h(n) in folgender Weise zusammen: rxy (m) = E{x(n)y(n − m)} =

∞ X

k=0

h(k) E{x(n)x(n − m − k)} , | {z } rxx (m + k)

(4.64)

wobei die Faltungsbeziehung zwischen Eingangs- und Ausgangssignal des Systems verwendet wurde. F¨ ur weißes Rauschen mit rxx (m) = σx2 δ(m) folgt aus Gl. 4.64 ( 0 m>0 rxy (m) = . (4.65) 2 σx h(−m) m ≤ 0 Wird schließlich Gl. 4.65 in Gl. 4.63 eingesetzt, so ergibt sich  M N X X   2  − a r (m − k) + σ bk h(k − m) 0 ≤ m ≤ N  k yy x  k=1 k=m ryy (m) = . M X     − ak ryy (m − k) m>N 

(4.66)

k=1

Die Koeffizienten ak k¨onnen demnach mit m > N wie auf Seite 112 durch L¨osung eines linearen Gleichungssystems bestimmt werden. Leider ist die Berechnung der ¨ Koeffizienten bk des Z¨ahlerpolynoms der Ubertragungsfunktion wegen der unbekannten Impulsantwort h(n) in Gl. 4.66 jetzt nicht mehr einfach m¨oglich. Auf die verschiedenen Ans¨atze zur Umgehung dieses Hindernisses wird hier nicht eingegangen (siehe dazu z.B. [11]). Eine der Methoden zur L¨ osung des Problems ist in der MATLABr -Funktion [b,a] = yulewalk(N,f,m) realisiert, mit der Filterordnung N und den Filterspezifikationen f (Frequenzpunkte) und m (Betragswerte des Frequenzgangs). Zwischen den gegebenen Frequenzpunkten wird interpoliert, um ein m¨oglichst feines Frequenzraster f¨ ur die inverse Fouriertransformation zu erhalten. Das Ergebnis liegt in Form der Koeffizienten f¨ ur das Z¨ ahlerpolynom (Vektor b) und das Nennerpo¨ lynom (Vektor a) der Ubertragungsfunktion vor. Ein Beispiel f¨ ur den Entwurf ist ein rekursiver Differenzierer 9. Ordnung:

4.2 IIR-Filterentwurf

125

[b,a] = yulewalk(9,[0 1],[0 1]); h = filter(b,a,[1 zeros(1,127)]); freqz(b,a); zplane(b,a);

Ein weiteres Beispiel ist ein Tiefpaßfilter mit einem Betrag des Frequenzgangs, der dem Verlauf eines Hamming-Fensters entspricht. Ein solches Filter hat eine ¨ sanfte Bandbegrenzung, so daß die Sprungantwort nur ein minimales Uberschwingen aufweist: m = hamming(40); m = m(21:40); f = linspace(0,1,20); [b,a] = yulewalk(10,f(:),m(:)); h = filter(b,a,[1 zeros(1,255)]); stem(h(1:30)); freqz(b,a); zplane(b,a); step = filter(b,a,ones(1,256)); stem(step(1:30));

% impulse response

% step response

Aufgabe 4.20 Es soll ein IIR-Filter entworfen werden, dessen D¨ampfungsverlauf dem Frequenzgang der mittleren H¨ orschwelle eines gesunden menschlichen Geh¨ors entspricht. Eine N¨ aherungsformel f¨ ur diesen Verlauf ist bereits auf Seite 91 in Aufgabe 4.4.5 angegeben. Bestimmen Sie mit yulewalk() ein IIR-Filter, das den Frequenzverlauf der H¨ orschwelle nachbildet. Entwerfen Sie dann das inverse Filter zur Kompensation dieses Frequenzgangs und testen Sie Ihren Entwurf, indem Sie beide Filter in Kette schalten. Vergleichen Sie das Ergebnis mit jenem des FIR-Filters als L¨ osung von Aufgabe 4.4.5.

126

4 Entwurf digitaler Filter

5 Multiratenfilterb¨ anke und Wavelets Die Verarbeitung von Signalen in Teilb¨ andern mit Hilfe von Filterb¨anken wird seit langem vor allem im Bereich der Audiosignalverarbeitung eingesetzt [20, 21]. Mit den Methoden der digitalen Signalverarbeitung k¨onnen heute sehr komplexe Filterbanksysteme realisiert werden. Typische Anwendungen sind die Codierung bzw. Kompression von Audiosignalen (z.B. MPEG-Verfahren) und die Entst¨orung massiv verrauschter Sprachsignale. Die Signalverarbeitung mit Filterb¨anken hat neben einer effizienten Implementierung auch den Vorteil, daß Wahrnehmungseigenschaften des menschlichen Geh¨ ors relativ einfach ber¨ ucksichtigt werden k¨onnen. Je nach Art der Aufteilung in Teilb¨ ander wird zwischen ¨aquidistanten und nicht¨ aquidistanten Filterb¨ anken unterschieden. Eine nicht¨aquidistante Frequenzbandunterteilung findet Anwendung bei der mehrfachaufl¨osenden Spektralanalyse und -synthese und steht in Zusammenhang mit der Wavelet-Transformation, die im Abschnitt 5.3 behandelt wird. Im Gegensatz zu ¨ aquidistanten Filterb¨anken haben die einzelnen Bandpaßkan¨ ale einer nicht¨ aquidistanten Filterbank eine unterschiedliche (von der Mittenfrequenz abh¨ angige) Bandbreite. Nimmt beispielsweise die Bandbreite mit steigender Mittenfrequenz zu, dann werden niederfrequente Signalkomponenten sehr gut im Spektralbereich aufgel¨ ost, die h¨oherfrequenten Anteile jedoch weniger genau im Frequenzbereich dargestellt. Allerdings bewirkt die gr¨oßere Bandbreite am oberen Ende der betrachteten Frequenzskala eine verbesserte zeitliche Lokalisation von Kurzzeitvorg¨ angen, die ja ein breites Frequenzspektrum aufweisen. Die Kombination einer guten Frequenzaufl¨osung f¨ ur tiefe Frequenzen mit einer guten Zeitaufl¨ osung bei hohen Frequenzen kommt z.B. dem Verhalten des menschlichen Geh¨ors sehr nahe.

128

5 Multiratenfilterb¨anke und Wavelets

H1

↓ M1

H2

↓ M2

x(n)

HN −1

HN



MN −1

↓ MN

Analyseseite

Teilbandverarbeitung

Das Blockdiagramm eines nicht¨ aquidistanten Filterbanksystems mit Mehrfachtaktverarbeitung ist in Abb. 5.1 dargestellt. Auf der Analyseseite wird das Ein↑ M1

G1

↑ M2

G2

y(n)



GN −1

↑ MN

GN

MN −1

Syntheseseite

Abbildung 5.1: Blockschaltbild eines N -Kanal-Multiratenfilterbanksystems gangssignal x(n) in N Teilb¨ ander aufgespalten. Die Teilbandsignale werden unterabgetastet (mit unterschiedlichen Faktoren Mi in den einzelnen Kan¨alen). Danach erfolgt die Verarbeitung der Teilbandsignale (z.B. Codierung oder Amplitudenmodifikation bei der Sprachsignalentst¨ orung). Auf der Syntheseseite werden die Teilbandsignale nach einer Interpolation zum Ausgangssignal y(n) zusammengesetzt. Ein Spezialfall dieser Anordnung ist die ¨ aquidistante Filterbank, bei der alle Kan¨ ale die gleiche Bandbreite und den gleichen Abtastfaktor Mi = M, i = 1, 2, . . . , N besitzen. Im Fall M = N spricht man von kritisch abgetasteten Filterb¨ anken, d.h. die Anzahl der zu verarbeiteten Abtastwerte pro Zeiteinheit bleibt erhalten. Auch bei nicht¨ aquidistanten Filterb¨ anken ist eine kritische Abtastung m¨ oglich, allerdings kann nicht f¨ ur jeden Bandbreitenverlauf und f¨ ur realisierbare Kanalfilter Hi , Gi ein Satz von Abtastfaktoren Mi gefunden werden. Beim Entwurf von Filterb¨ anken besteht nun die Aufgabe, die Filtercharakteristik der einzelnen Teilfilter so zu w¨ ahlen, daß bei fehlender Verarbeitung der Teilbandsignale (also bei direkter Zusammenschaltung von Analyse- und Syntheseseite) eine perfekte Rekonstruktion des Eingangssignals gew¨ahrleistet ist. Dabei wird von einer Signalverz¨ ogerung durch die Laufzeit der Filter abgesehen. Diese Aufgabenstellung ist schon bei fehlender Taktratenumsetzung nicht trivial und erfordert spezielle Frequenzg¨ ange der Teilfilter. Bei Taktratenumsetzung am Ausgang der Analyseseite bzw. am Eingang der Syntheseseite tritt zus¨atzlich Ali¨ asing auf, das durch die Uberlappung der Teilb¨ ander (endliche Flankensteilheit

5.1 Cosinusmodulierte Filterb¨anke

129

der Filter) entsteht. Trotzdem gibt es Entwurfsverfahren, die dieses Aliasing kompensieren, so daß auch bei Taktratenumsetzung eine exakte Rekonstruktion des Filterbankeingangssignals m¨ oglich ist (siehe [22] f¨ ur eine umfassende Darstellung). Bei Filterb¨anken mit großer Sperrd¨ ampfung der Bandpaßfilter kann der Entwurf dadurch erheblich vereinfacht werden, daß nur das Aliasing bei benachbarten Filterbankkan¨alen kompensiert wird. In diesem Fall weist die Filterbank eine nahezu perfekte Rekonstruktion auf und man spricht von NPR-Filterb¨ anken. Dieser f¨ ur die Audiosignalverarbeitung wichtige Fall wird in den n¨achsten Abschnitten behandelt.

5.1

Cosinusmodulierte Filterb¨ anke

Bei vielen Filterbankanwendungen k¨ onnen kritisch abgetastete, cosinusf¨ormig modulierte NPR-Filterb¨anke eingesetzt werden, bei denen die N Teilbandfilter cosinusmodulierte Versionen eines Tiefpaßprototypfilters sind. Dadurch reduziert sich der Entwurf dieser Filterb¨ anke auf das Design des Prototypfilters. Gleichzeitig wird die Anzahl der Filterkoeffizienten drastisch verringert, so daß bei den verwendeten Optimierungsverfahren wesentlich weniger Freiheitsgrade auftreten. Beispielsweise m¨ ussen bei einer 80-Kanal Filterbank mit FIR-Filtern der L¨ange L = 800 im Fall der cosinusf¨ ormig modulierten Filterbank nur 800 statt 64000 Filterkoeffizienten mit dem Entwurfsverfahren bestimmt werden. Außerdem gibt es effiziente Implementierungsm¨ oglichkeiten, bei denen nur die Impulsantwort des Prototypfilters gespeichert werden muß [23, 24, 25]. Im folgenden Abschnitt wird zun¨ achst der Entwurf ¨aquidistanter NPR-Filterb¨ anke behandelt und ein Entwurfsverfahren f¨ ur diesen Fall vorgestellt. Im Anschluß daran erfolgt die Erweiterung auf nicht¨ aquidistante Filterb¨anke. Alle Filterb¨ anke haben FIR-Filter mit linearer Phase in jedem Teilband, so daß ein Entwurf ohne Verwendung von Optimierungsprogrammen m¨oglich ist. Eine Alternative dazu sind Filterb¨anke mit Teilfiltern nichtlinearer Phase, die einige Implementierungsvorteile haben [22], jedoch f¨ ur den Entwurf Optimierungsprogramme ben¨ otigen.

5.1.1

Entwurf ¨ aquidistanter Filterb¨ anke

In diesem Fall haben alle Analyse- und Synthesefilter der Filterbank die gleiche Bandbreite. Dadurch k¨onnen diese Filter einfach durch Modulation eines Tiefpaßfilters erzeugt werden. Mit den Koeffizienten h(n) des Prototypfilters ergeben sich damit die Koeffizienten der Analysefilter (Abb. 5.1 mit Mi = N, i = 1, 2, . . . , N ) zu    √ L−1+N π hi (n) = 2 N h(n) cos (5.1) (2i − 1) n − 2N 2

130

5 Multiratenfilterb¨anke und Wavelets

bzw. jene der Syntheseseite zu √ gi (n) = 2 N h(n) cos



  π L−1−N , (2i − 1) n − 2N 2

(5.2)

mit i = 1, 2, . . . , N und n = 0, 1, . . . , L − 1. Um das Entwurfsverfahren zu erl¨ autern, wird vom Amplitudenfrequenzgang (genaugenommen von der Nullphasenkomponente) des linearphasigen Prototypfilters ausgegangen (siehe dazu auch die FIR-Filtergleichungen f¨ ur Fall I und II auf Seite 85): L 2 −1

H(h, θ) =

X

2h(n) cos

n=0

f¨ ur gerade FIR-Filterl¨ange L bzw. H(h, θ) = h

L−1 2





n−

L−1 2 −1

+

X

2h(n) cos

n=0

L−1 2



  θ

n−

L−1 2

(5.3)

  θ

(5.4)

f¨ ur L ungerade. Dabei ist θ = 2πf /FA die Frequenzvariable normiert auf die T Abtastfrequenz FA . Der Vektor h = (h(0), h(1), . . . , h(⌊ L−1 stellt die erste 2 ⌋)) H¨ alfte der symmetrischen Impulsantwort des FIR-Filters dar. Dieser Filterkoeffizientenvektor muß mit dem Entwurfsverfahren bestimmt werden, wobei zum Erreichen einer nahezu perfekten Rekonstruktion der Filterbank einerseits eine hohe π π < θs ≤ N notwendig Sperrd¨ ampfung im Frequenzbereich θs < θ ≤ π, mit 2N ¨ ist und andererseits ein spezieller Verlauf von H(h, θ) im Durchlaß- und Ubergangsbereich eingehalten werden muß. Dieser spezielle Verlauf ergibt sich aus der Bedingung  2 π T (h, θ) = [H(h, θ)]2 + H h, θ − N = 1, (5.5)

π mit θ ∈ [0, 2N ] (siehe z.B. [23]). Die gegebenen Anforderungen an das Prototypfilter k¨ onnen als Optimierungsaufgabe formuliert werden, deren L¨osung den optimalen Koeffizientenvektor h ergibt. Eines von vielen m¨oglichen Fehlerkriterien ist gegeben durch

E(h) =

Z

0

π/2N

2

[T (h, θ) − 1] dθ + α

Z

π

[H(h, θ)]2 dθ.

(5.6)

θs

Der erste Ausdruck in Gl. 5.6 ber¨ ucksichtigt den Fehler durch Abweichung von der Bedingung Gl. 5.5. Das rechte Integral in Gl. 5.6 ist die Sperrbereichsenergie, mit deren Minimierung eine hohe Sperrd¨ ampfung angestrebt wird. Der Gewichtungsfaktor α legt den Einfluß beider Fehlerterme fest. Der u ¨bliche L¨osungsweg zur Suche eines optimalen Vektors h ist die Verwendung nichtlinearer Optimierungsmethoden zur Minimierung von Gl. 5.6. Dieser direkte Ansatz ist jedoch in der

5.1 Cosinusmodulierte Filterb¨anke

131

Regel rechenzeitintensiv und bei großen Filterl¨ angen (L > 500) sehr empfindlich bez¨ uglich der Wahl einer Startl¨ osung. Daher wird hier ein anderer Ansatz verwendet, der urspr¨ unglich nur bei Zweikanalfilterb¨ anken angewendet wurde [26, 27], aber sehr einfach auf Mehrkanalfilterb¨ anke erweitert werden kann [28, 29]. Das Verfahren, das hier nur kurz dargestellt werden soll, geht von folgender Aufspaltung f¨ ur das Quadrat der Nullphasenkomponente aus: [H(hk , θ)]2 ≈ H(hk−1 , θ)H(hk , θ),

(5.7)

wobei k = 0, 1, 2, 3, . . . ein Iterationsindex ist, d.h. die optimale L¨osung f¨ ur h wird iterativ berechnet. Im Fall der Konvergenz des iterativen Algorithmus strebt hk−1 gegen hk und Gl. 5.7 wird immer besser erf¨ ullt. Wird nun das Fehlermaß von uglich hk minimiert (bei festem hk−1 ), dann kann man zeigen, daß Gl. 5.6 bez¨ der optimale Koeffizientenvektor durch L¨ osung eines linearen Gleichungssystems pro Iterationsschritt gefunden werden kann. Es werden daher keine Routinen zur nichtlinearen Optimierung ben¨ otigt. In Tabelle 5.1 ist der iterative Algorithmus zur Berechnung des optimalen Koeffizientenvektors des Prototypfilters zusammengefaßt. Tabelle 5.1: Algorithmus zur Berechnung des Koeffizientenvektors h. Berechnung der Matrizen U1 , U2 , Q Wahl eines Startvektors h−1 Iteration f¨ ur k = 0, 1, 2, . . . , kmax mit1 U g hk E

= diag(U1 hk−1 )U1 + diag(U2 hk−1 )U2 = (UT U + αQ)−1 UT 1 = (1 − τ )hk−1 + τ g = ||hk − g||2 / ||hk ||2

Fertig, wenn E < 10−5 , Ergebnis ist h = hkmax .

Die ben¨otigten Matrizen U1 , U2 ergeben sich sehr einfach aus der Darstellung von Gl. 5.3 (Gl. 5.4) als inneres Vektorprodukt H(h, θ) = cT (θ)h: U1 U2

= =

 T c(θ1 ) c(θ2 ) · · · c(θNf )  π π ) c(θ2 − N ) · · · c(θNf − c(θ1 − N

(5.8) T π N)

,

(5.9)

1 diag(·) ist eine Diagonalmatrix, 1 ein N × 1 Vector mit Einselementen, || · || ist die l 2 2 f Vektornorm, τ = 0, 5 . . . 0, 8.

132

5 Multiratenfilterb¨anke und Wavelets

π mit einer Auswahl an Frequenzpunkten θi ∈ [0, 2N ], i = 1, 2, . . . , Nf und (  T L−1 1 2 cos L−1 L gerade 2 θ, cos 2 − 1 θ, . . . , cos 2 θ . c(θ) =   L−1 1 T L−1 L ungerade 2 cos 2 θ, cos 2 − 1 θ, . . . , cos θ, 2

(5.10)

Die Elemente qik der symmetrischen Matrix Q in Tabelle 5.1 findet man durch analytische Auswertung des zweiten Integrals in Gl. 5.6: qik = si(i − k) + si(L + 1 − i − k) mit i, k = 1, 2, . . . , ⌈ L−1 2 ⌉ und   −2 sin θs n n si(n) =  2(π − θ ) s

n = ±1, ±2, . . .

(5.11)

.

(5.12)

n=0

Im Fall einer ungeraden Filterl¨ ange L ergibt sich f¨ ur Q eine zus¨atzliche Zeile und Spalte mit den Elementen (  i 6= L+1 si L+1 2 −i 2 qi, L+1 = . (5.13) 2 π − θs i = L+1 2 Die Erfahrungen mit diesem Verfahren zeigen, daß f¨ ur Filterb¨anke mit N = 2 bis N = 128 Kan¨alen und Filterl¨ angen bis zu L = 1536 etwa 15 Iterationsschritte zum Erreichen der optimalen L¨ osung ben¨ otigt werden. In allen F¨allen konnten bisher keine Probleme mit lokalen Minima, wie sie bei Verwendung von nichtlinearen Optimierungsroutinen auftreten, beobachtet werden. Außerdem ist die Konvergenz des iterativen Verfahrens von Tabelle 5.1 immer schneller als jene bei nichtlinearer Optimierung. Die folgende MATLABr -Funktion kann zum Entwurf a¨quidistanter, cosinusmodulierter Filterb¨anke mit dem iterativen Algorithmus nach Tabelle 5.1 verwendet werden. Das Programm befindet sich auch auf der Internetseite des Autors.

function [h,g] = unicmfb(N,L,df,alpha,Lf) % function [h,g] = unicmfb(N,L,delta_f,alpha,Nfreq) % % design of critically sampled uniform N-channel cosine-modulated % NPR filter banks (requires MATLAB function fir1.m) % % N number of filter bank channels % L prototype FIR filter length % delta_f transition band width normalized to Fsampl/2 (typ. fc error(’delta_f must be in (0,1/2N)’); end % compute starting solution using Kaiser-Bessel window design as = 7.95 + 7.18*L*df; % estimated stop band attenuation in dB if as < 21 % determine parameter beta beta = 0; elseif as < 50 beta = 0.58417*(as-20.96)^0.4 + 0.07886*(as-20.96); else beta = 0.1102*(as-8.7); end hpt = fir1(L-1,fc,kaiser(L,beta)); fs = fc + df; hpt = sqrt(N)*hpt(:)/sum(hpt); % find optimum prototype low pass filter Lh = floor((L+1)/2); N0 = (L-1)/2; h0 = hpt(1:Lh); theta = linspace(0,pi*fc,Lf)’; n = [0:Lh-1] - N0; U1 = 2*cos((theta)*n); U2 = 2*cos((theta-pi/N)*n); if rem(L,2) U1(:,Lh) = 0.5*U1(:,Lh); U2(:,Lh) = 0.5*U2(:,Lh); end alpha = abs(alpha);

% first half of symmetric impulse resp. % pass band frequencies

% odd filter order

134

5 Multiratenfilterb¨anke und Wavelets

% compute matrix Q for stop band energy Es = h0’*Q*h0 of prototype filter Lh1 = ceil((L-1)/2); i = [1:Lh1]’; k = i(:,ones(1,Lh1)); ik = k - k’; fspi = fs*pi; Q = -2*sin(ik*fspi)./(ik+eps); ik = L+1-k-k’; Q = Q - 2*sin(ik*fspi)./ik; Q = Q + 2*(pi-fspi)*eye(Lh1); if rem(L,2) k = [Lh1:-1:1]; q = -2*sin(k*fspi)./k; Q = [[Q q’];[q pi-fspi]]; end Niter = 30; epsil = 1e-5; tau = 0.7; tau1 = 1-tau; I1 = ones(1,Lh);

% matrix of indices i-k

% matrix of indices L+1-i-k % modify diagonal elements % odd filter length

% maximum number of iterations % error limit to terminate iteration % forgetting factor

for k = 1:Niter H1 = U1*h0; H2 = U2*h0; U = H1(:,I1).*U1 + H2(:,I1).*U2; % g0 = (U’*U + alpha*Q) \ sum(U)’; % h0 = tau1*h0 + tau*g0; % err = norm(h0-g0)/norm(h0); % disp([’Iteration ’, int2str(k), ’, if err < epsil, break, end end

matrix for pass band energy find synthesis low pass filter impulse response update impulse response error Error = ’, num2str(err)]);

% form symmetric prototype low pass filter impulse response if rem(L,2) Lh1 = Lh-1; else Lh1 = Lh; end hpt = sqrt(N)*[h0 ; h0(Lh1:-1:1)]; % compute modulation matrix (for channel impulse responses)

5.1 Cosinusmodulierte Filterb¨anke

135

n = [0:L-1]’-N/2-N0; i = 2*[1:N]-1; I = n*i; Ma = 2*cos(pi*fc*I); n = n + N; I = n*i; Ms = 2*cos(pi*fc*I); hlp = hpt * ones(1,N); h = hlp .* Ma; g = hlp .* Ms;

% analysis filters % synthesis filters

Am Beginn dieser Funktion wird mit der Fenstermethode (siehe Abschnitt 4.1.3) eine Startl¨osung f¨ ur das Referenztiefpaßfilter generiert. Durch die nachfolgende Iteration wird dieses Filter so modifiziert, daß die NPR-Bedingungen Gl. 5.5 und Gl. 5.6 mit der gew¨ unschten Genauigkeit erf¨ ullt werden. Zum Schluß werden durch Modulation die Analyse- und Synthesefilterimpulsantworten erzeugt. Ein Entwurfsbeispiel einer 8-Kanalfilterbank ist in Abb. 5.2 dargestellt und kann mit [h,g] = unicmfb(8,256,1/32,1e5,256) erzeugt werden. Der Rekonstruktionsfehler (Welligkeit der Gesamt¨ ubertragungsfunktion in dB) ist im Bereich ±10−3 und kann daher f¨ ur praktische Anwendungen vernachl¨assigt werden. Analysefilterübertragungsfunktionen, N = 8, L = 256

|Hi(f)| (dB)

0

−50

−100

−150 0 −3

|H(f)| (dB)

2

x 10

0.1

0.2

0.3

0.4

0.5 0.6 0.7 0.8 0.9 f Gesamtübertragungsfunktion der Analyse/Synthesefilterbank

0.1

0.2

0.3

0.4

1

1 0 −1 −2 0

0.5 f

0.6

0.7

0.8

0.9

1

Abbildung 5.2: Beispiel einer ¨ aquidistanten 8-Kanal-Multiratenfilterbank

136

5 Multiratenfilterb¨anke und Wavelets Aufgabe 5.1 Es ist mit [h,g] = unicmfb(8,256,1/32,1e5,256) die in Abb. 5.2 gezeigte Filterbank zu entwerfen. Schreiben Sie eine MATLABr -Funktion [y,Y] = unifib(h,g,x), die mit dem Entwurfsergebnis die komplette, kritisch abgetastete Filterbank nach Abb. 5.1 f¨ ur verschiedene Eingangssignale berechnet. Das Ausgangssignal wird im Vektor y gespeichert. Die Matrix Y enth¨alt die Teilbandsignale als Spaltenvektoren. Als Eingangssignale verwenden Sie zeitverschobene Einsimpulse oder ein Zufallssignal x = randn(Nx,1).

5.1.2

Entwurf nicht¨ aquidistanter Filterb¨ anke

Um das Modulationskonzept auch bei nicht¨ aquidistanten NPR-Filterb¨anken anzuwenden, approximiert man den gew¨ unschten Bandbreitenverlauf st¨ uckweise durch Teilb¨ ander von ¨aquidistanten, modulierten Filterb¨ anken. An den Stoßstellen von ¨ Teilb¨ andern unterschiedlicher Breite werden Ubergangsfilter verwendet. In [30] ¨ wird gezeigt, daß durch spezielle Wahl dieser Ubergangsfilter die gesamte Filterbank wieder eine nahezu perfekte Rekonstruktion aufweisen kann. Allerdings sind diese nicht¨aquidistanten Filterb¨ anke vom Aufwand her nicht mehr so effizient wie ¨ aquidistante Filterb¨ anke, da mehrere Prototypfilter ben¨otigt werden und die Modulationsfrequenzen nicht mehr auf einem ¨ aquidistanten Raster liegen. F¨ ur spezielle Frequenzbandunterteilungen (wie z.B. Bandbreite proportional zur Mittenfrequenz der Teilb¨ander) wird man daher die Wavelet-Transformation vorziehen (siehe Abschnitt 5.3). Um das Entwurfsprinzip f¨ ur den Fall nicht¨ aquidistanter Filterb¨anke zu illustrieren, ist in Abb. 5.3 eine nicht¨ aquidistante 6-Kanal-Filterbank dargestellt, die aus Teilen einer ¨aquidistanten 8-Kanal-Filterbank (FIR-Filterl¨ange L1 = 96) und einer ¨ aquidistanten 4-Kanal-Filterbank (L2 = 40) zusammengesetzt ist. Beide Fil¨ terbankteile werden durch ein unsymmetrisches Ubergangsfilter (Lt = 96) mitein¨ ander verbunden. Durch die spezielle Form des Ubergangsfilters ist sichergestellt, daß Aliasing-Terme der benachbarten Kan¨ ale unterdr¨ uckt werden und die gesamte Filterbank eine nahezu perfekte Rekonstruktion besitzt (unteres Diagramm in Abb. 5.3). Die Unterschiede in der Welligkeit der Gesamt¨ ubertragungsfunktion sind durch die verschiedenen FIR-Filterl¨ angen bedingt. ¨ Der Entwurf des Ubergangsfilters, das als modulierte Version eines (komplexwertigen) Tiefpaßfilters dargestellt wird, erfolgt in ¨ ahnlicher Weise wie der Entwurf des Prototypfilters von Abschnitt 5.1.1. Es m¨ ussen allerdings im Durchlaߨ und Ubergangsbereich dieses Filters mehr Bedingungen erf¨ ullt werden, da einerseits die Aliasing-Komponenten benachbarter Kan¨ ale unterdr¨ uckt werden m¨ ussen

5.1 Cosinusmodulierte Filterb¨anke

137

Analysefilterübertragungsfunktionen, N = 6

|Hi(f)| (dB)

0

−50

−100

−150 0

0.1

0.2

0.3

0.4

0.5 0.6 0.7 0.8 0.9 f Gesamtübertragungsfunktion der Analyse/Synthesefilterbank

0.1

0.2

0.3

0.4

1

0.01

|H(f)| (dB)

0.005 0 −0.005 −0.01 0

0.5 f

0.6

0.7

0.8

0.9

1

Abbildung 5.3: Beispiel einer nicht¨ aquidistanten 6-Kanal-Filterbank mit einem ¨ unsymmetrischen Ubergangsfilter

und andererseits unterschiedliche Flankensteilheiten auftreten. In den folgenden ¨ Bedingungen f¨ ur das Verhalten des Ubergangsfilters wird die reellwertige Nullphasenkomponente Ht (θ) des Tiefpaßprototypfilters entsprechend der Beziehung L

L 2 −1

Ht (θ) =

X

n=0

2 ℜe{ht (n)} cos



n−

L−1 2

2 −1 X    θ + 2 ℑm{ht (n)} sin n −

n=0

L−1 2

  θ

(5.14) verwendet (mit gerader Filterl¨ ange L). Im Detail muß Ht in den in Abb. 5.4 angegebenen Frequenzintervallen folgenden Bedingungen gen¨ ugen:2 f¨ ur θ im Intervall I   π 1 π π   π  π  1 H1 − θ + = H1 θ + + − Ht (θ)Ht − θ − N1 2N1 2N2 2N1 2N2 N2 N2 π 1 h  1 π i2 H1 θ + + + [Ht (θ)]2 = 1, (5.15) N1 2N1 2N2 N2

2 Aus Gr¨ ¨ unden der Ubersichtlichkeit wird die Abh¨ angigkeit von H(·) vom Koeffizientenvektor h weggelassen.

138

5 Multiratenfilterb¨anke und Wavelets Ht (θ) 

H1 θ +

π 2N2

+

π 2N1

I



 H2 θ −

II

π − 2N 2 π − 2N − 2

π 2N1



III 0

π − 2N + 2

π N2

π 2N2

θ π N2

π 2N1

¨ Abbildung 5.4: Schematische Darstellung des Frequenzgangs des Ubergangsfilters Ht zur Verbindung der Nachbarfilter H1 (von N1 -Kanal Filterbank) und H2 (von N2 -Kanal Filterbank)

f¨ ur θ im Intervall II

1 [Ht (θ)]2 = 1, N2

und f¨ ur θ im Intervall III   π  π  H2 (−θ) = Ht (θ)Ht − θ + H2 θ − N2 N2 h  i 2 π 1 1 H2 θ − + [Ht (θ)]2 = 1. N2 N2 N2

(5.16)

(5.17)

Die in Abb. 5.4 gezeigten Filter H1 und H2 sind die Randfilter einer a¨quidistanten N1 -Kanal- bzw. N2 -Kanal-Filterbank und sind als gegeben zu betrachten (vergleiche dazu das Beispiel in Abb. 5.3). Gleichung 5.15 und Gl. 5.17 m¨ ussen zur Unterdr¨ uckung von Aliasing erf¨ ullt sein [30]. Die restlichen Beziehungen sind a¨quivalent zu Gl. 5.5. ¨ Ahnlich wie bei ¨aquidistanten NPR-Filterb¨ anken kann mit den vorliegenden Bedingungen ein Fehlerkriterium (entsprechend zu Gl. 5.6) formuliert werden, das mit Hilfe nichtlinearer Optimierungsmethoden bez¨ uglich des Koeffizientenvektors ht minimiert wird [30]. Allerdings konvergieren diese Verfahren wesentlich schlechter und sind auch erheblich empfindlicher in Hinblick auf die Wahl der Startl¨osung als der im folgenden behandelte iterative Algorithmus. Diese Methode ben¨otigt f¨ ur ¨ den Entwurf der Ubergangsfilter bei nicht¨ aquidistanten Filterb¨anken ebenfalls nur Routinen zur L¨osung linearer Gleichungssysteme. Hier soll nur die prinzipielle Vorgangsweise skizziert werden, die zu einem v¨ ollig ¨ aquivalenten Algorithmus wie in Tabelle 5.1 f¨ uhrt.

5.1 Cosinusmodulierte Filterb¨anke

139

Verwendet man eine Vektorschreibweise und die Aufspaltung von Ht entsprechend Gl. 5.7, dann k¨onnen die f¨ unf Gleichungen 5.15 bis 5.17 in ein Fehlermaß inkludiert werden, das folgende Form hat: E(ht ) =

5 X i=1

αi (ai − Bi ht )T (ai − Bi ht ) + αhTt Qt ht .

(5.18)

¨ Der letzte Term in Gl. 5.18 ist die Sperrbereichsenergie des Ubergangsfilters Ht . Die Vektoren ai und Matrizen Bi lassen sich relativ leicht an Hand von Gl. 5.15 – Gl. 5.17 ableiten. Dabei ist zu ber¨ ucksichtigen, daß Ht (θ) entsprechend Gl. 5.14 dargestellt werden kann und der gesuchte Koeffizientenvektor die Form T ht = ℜe{ht (0)}, . . . , ℜe{ht ( L2 − 1)}, ℑm{ht (0)}, . . . , ℑm{ht ( L2 − 1)}

hat. Zur Minimierung des Fehlermaßes von Gl. 5.18 wird der Gradient gesetzt und daraus der gesuchte Koeffizientenvektor berechnet: ht =

5 X i=1

αi BTi Bi

+ αQt

!−1

5 X

αi BTi ai .

(5.19) ∂E ∂ht

null

(5.20)

i=1

Abgesehen von den unterschiedlichen Matrizen ergibt sich damit f¨ ur den iterativen Algorithmus eine v¨ollig gleiche Struktur wie in Tabelle 5.1. Die Berechnung des ¨ Ubergangsfilters (Tiefpaßprototyp) kann mit der folgenden MATLABr -Funktion vorgenommen werden: function ht = nuftrans(h1,N1,h2,N2,Lt) % function ht = nuftrans(h1,N1,h2,N2,Lt) % % transition filter design (lowpass prototype) for nonuniform filterbanks % % h1 prototype filter impulse response at lower frequencies % N1 spacing of uniform part at lower frequencies % h2 prototype filter impulse response at higher frequencies % N2 spacing of uniform part at higher frequencies % Lt length of transition filter % ht prototype impulse response of transition filter % G. Doblinger, Th. Zeitlhofer, TU-Wien, 1996 if nargin == 0 help nuftrans return end

140

5 Multiratenfilterb¨anke und Wavelets

fc1 = 1/(2*N1); fc2 = 1/(2*N2); h1 = h1(:)/sum(h1); h2 = h2(:)/sum(h2); L1 = length(h1); L2 = length(h2); Lv = [L1,L2,Lt]; evenodd = sum(rem(Lv,2)); if evenodd ~= 0 & evenodd ~= 3 error(’Impulse response lengths must all be even or all be odd’); end L = max(Lv); % common length of all filters Lh = floor((L+1)/2); N0 = (L-1)/2; % delay of prototype filters Nz1 = (L-L1)/2; % number of zeros appended at both sides of h1 Nz2 = (L-L2)/2; Nzt = (L-Lt)/2; % compute constant vectors and matrices for error vector Lfp = round(L/2); % no. of passband freq. points Lfs = L; % no. of stopband freq. points pifc1 = pi*fc1; % pi/2N1 pifc2 = pi*fc2; % pi/2N2 n = [Nz1:Lh-1] - N0; theta = pifc1*linspace(0,2,Lfp).’; C1 = 2*cos(theta*n); n = [Nz2:Lh-1] - N0; theta = pifc2*linspace(0,2,Lfp).’; C2 = 2*cos(theta*n); n = [Nzt:Lh-1] - N0; theta = linspace(-pifc2-pifc1,-pifc2+pifc1,Lfp).’; phi = theta*n; Ut1 = 2*[cos(phi) sin(phi)]; theta = pifc2*linspace(0,2,Lfp).’; phi = theta*n; Ut2 = 2*[cos(phi) sin(phi)]; theta = pi*linspace(2*fc2,2-fc2-fc1,Lfs).’; phi = theta*n; Uts = 2*[cos(phi) sin(phi)]; theta = linspace(-pifc2+pifc1,0,Lfp).’; phi = theta*n; Utp = 2*[cos(phi) sin(phi)]; L1h = floor((L1+1)/2);

5.1 Cosinusmodulierte Filterb¨anke L2h = floor((L2+1)/2); Lth = floor((Lt+1)/2); if rem(L,2) C1(:,L1h) = ones(Lfp,1); C2(:,L2h) = ones(Lfp,1); Ut1(:,Lth) = ones(Lfp,1); Ut2(:,Lth) = ones(Lfp,1); Uts(:,Lth) = ones(Lfs,1); Utp(:,Lth) = ones(Lfp,1); imax = 2*Lth-1; Ut1 = Ut1(:,1:imax); Ut2 = Ut2(:,1:imax); Uts = Uts(:,1:imax); Utp = Utp(:,1:imax); end h1 h2 G1 G2 a1 a2 a3 a4 a5

= = = = = = = = =

h1(1:L1h); h2(1:L2h); C1*h1; C2*h2; G1.*G1(Lfp:-1:1); G2.*G2(Lfp:-1:1); 1 - G1.^2; 1 - G2(Lfp:-1:1).^2; ones(Lfp,1);

% create starting solution ht = [zeros((Lt-L2)/2,1);h2]; if rem(L,2) ht = [ht(1:Lth);zeros(Lth-1,1)]; else ht = [ht(1:Lth);zeros(Lth,1)]; end Q = Uts’*Uts;

% matrix to compute stop band energy

% find optimum transition filter (low pass prototype filter) alpha1 = 5; alpha2 = 5; alpha3 = 1; alpha4 = 1; alpha5 = 1; alphas = 100; epsil = 1e-6;

141

142

5 Multiratenfilterb¨anke und Wavelets

tau = 0.7; tau1 = 1-tau; Niter = 200; I = ones(1,length(ht)); for k = 1:Niter d = Ut1*ht; B1 = (d(Lfp:-1:1)*I).*Ut1; B3 = (d*I).*Ut1; d = Ut2*ht; B2 = (d(Lfp:-1:1)*I).*Ut2; B4 = (d*I).*Ut2; B5 = ((Utp*ht)*I).*Utp; U = alpha1*B1’*B1+alpha2*B2’*B2+alpha3*B3’*B3+alpha4*B4’*B4+ ... alpha5*B5’*B5+alphas*Q; v = alpha1*B1’*a1+alpha2*B2’*a2+alpha3*B3’*a3+alpha4*B4’*a4+ ... alpha5*B5’*a5; gt = U \ v; % solution for transition low pass filter ht = tau1*ht + tau*gt; % impulse response update (real part) err = norm(ht-gt)/norm(ht); % impulse response error disp([’Iteration ’, int2str(k), ’, Error = ’, num2str(err)]); if err < epsil, break, end end % form symmetric prototype low pass filter impulse response j = sqrt(-1); htr = ht(1:Lth); if rem(L,2) hti = ht(Lth+1:2*Lth-1); ht = sqrt(N2)*([htr ; htr(Lth-1:-1:1)] +j*[hti ; 0 ; -hti(Lth-1:-1:1)]); else hti = ht(Lth+1:2*Lth); ht = sqrt(N2)*([htr ; htr(Lth:-1:1)] +j*[hti ; -hti(Lth:-1:1)]); end

Aufgabe 5.2 Verwenden Sie die Funktionen unicmfb() und nuftrans() zum Design der nicht¨aquidistanten Filterbank auf Seite 137. Dazu entwerfen Sie zun¨achst zwei ¨aquidistante Filterb¨ anke mit N1 = 8 und N2 = 4 Kan¨alen. Die FIR-Filterl¨angen sind L1 = 96 (8-Kanalfilterbank) und L2 = 40 (4Kanalfilterbank). Dann wird mit nuftrans() der Tiefpaßprototyp des ¨ Ubergangsfilter (Lt = 96) entworfen. Das Bandpaߨ ubergangsfilter erhalten Sie dann durch eine cosinusf¨ ormige Modulation des Prototyps.

5.1 Cosinusmodulierte Filterb¨anke

143

F¨ ur die Audiosignalverarbeitung werden h¨ aufig Filterb¨anke ben¨otigt, deren Teilbandaufteilung dem Frequenzgruppenverhalten des menschlichen Geh¨ ors entspricht. Ein einfaches Modell f¨ ur die Vorverarbeitung akustischer Signale durch das Ohr ist eine Bandpaßfilterbank deren Filter Bandbreiten entsprechend dem empirisch gefundenen Verlauf

BWc (f ) = 25 + 75 1 + 1.4



f 1000

2 !0.69

haben [31] (alle Frequenzen in Hertz). Die Approximation dieses Bandbreitenverlaufes durch eine nicht¨ aquidistante Filterbank kann stufenweise erfolgen, indem Teile von ¨aquidistanten Filterb¨ anken mit unterschiedlicher Kanalanzahl aneinan¨ dergereiht und mit Ubergangsfilter verbunden werden (siehe Abb. 5.5).

4

N = 22, Partitionierung = 4/80 3/60 4/40 3/30 4/20 3/10 1/5

Bandbreite in Hz

10

3

10

2

10 1 10

2

10

3

10 Mittenfrequenz in Hz

4

10

Abbildung 5.5: Approximation der Frequenzgruppen (Critical Bands) durch eine nicht¨ aquidistante 22-Kanal Filterbank (16 kHz Abtastfrequenz)

Da nicht alle Kombinationen von Unterabtastfaktoren Mi m¨oglich sind, ist die Bandaufteilung (Partitionierung) kein triviales Problem. Die Filterbank in Abb. 5.5 besteht aus 4 Kan¨ alen einer ¨ aquidistanten 80-Kanal Filterbank, 3 Kan¨ale einer 60-Kanal Filterbank, 4 Kan¨ ale einer 40-Kanal Filterbank usw. (siehe Partitionierungsangabe in Abb. 5.5). Alle Teilfilterb¨ anke sind kritisch abgetastet mit den Faktoren 80, 60, 40, 30, 20, 10 und 5. Entwurfsergebnisse, weitere Beispiele und MATLABr -Programme f¨ ur diese Filterb¨ anke k¨ onnen von der Internetseite des Autors bezogen werden.

144

5.2

5 Multiratenfilterb¨anke und Wavelets

DFT-Filterb¨ anke

Bei den bisher behandelten Filterb¨ anken wird ein Tiefpaßfilter durch cosinusf¨ormige Modulation in die einzelnen Bandpaßlagen transformiert. Verwendet man als Alternative Exponentialschwingungen zur Modulation, dann kann f¨ ur diese komplexwertig modulierten Filterb¨ anke die DFT (oder FFT) unmittelbar angewendet werden. Es ergeben sich sehr effiziente Filterbankrealisierungen, die f¨ ur den praktischen Einsatz auch sehr einfach dimensioniert werden k¨onnen [20, 32, 21]. Diese Filterb¨ anke bilden die Grundstrukturen der ausgew¨ ahlten Anwendungen im Kapitel 6. Die Analyseseite dieser DFT-Filterb¨ anke entspricht der Realisierung einer Kurzzeit-Fouriertransformation (Short-Time Fourier Transform, STFT), wie sie auch bei der Spektralanalyse (Zeit-Frequenzanalyse) von kurzzeitstation¨aren Signalen h¨aufig angewendet wird. Bei der STFT wird das Zeitsignal vor der Transformation mit einem gleitenden Fenster multipliziert, so daß vom gesamten Signalverlauf nur ein zeitlich lokalisierter Ausschnitt analysiert wird: ∞ X  h(mM − n)x(n)e−jθn . XST ejθ , m =

(5.21)

n=−∞

Der ganzzahlige Dezimationsfaktor M legt die Anzahl der Abtastwerte fest, um die das Zeitfenster h(n) zur n¨ achsten Position weitergeschoben wird. Die Fouriertransformation (oder die FFT) wird daher nur alle M Abtastwerte berechnet. Die Funktionsweise der STFT ist in Abb. 5.6 anschaulich dargestellt. In einem ersten Schritt werden nach Gl. 5.21 aus dem Eingangssignal laufend u ¨berlappende ¨ Bl¨ ocke entnommen. Der Grad an Uberlappung bestimmt die Taktratenredukti¨ on der Analyseseite. Beispielsweise ergibt sich bei einer Uberlappung der Bl¨ocke (L¨ ange N ) von 50% eine Taktratenreduktion von N/2, da die FFT nur alle N/2 Abtastintervalle berechnet wird. Vor der Anwendung der FFT werden die Bl¨ocke mit Fensterfunktionen h(n) gewichtet. Die Fensterfunktion ist eine Tiefpaßimpulsantwort, die das spektrale Verhalten (Bandbreite, Sperrd¨ ampfung) der Kurzeit-Fouriertransformation bestimmt. Die gewichteten Signalbl¨ ocke werden mit der FFT weiterverarbeitet, wobei die FFT-L¨ ange gleich oder gr¨ oßer der Blockl¨ ange N gew¨ahlt wird. In Abb. 5.6 ist das FFT-Ergebnis in Form des Betrags (dB-Skala) illustriert, wie es bei Kurzzeitspektren von Audiosignalen u ur allgemeine Anwendungen der STFT ¨blich ist. F¨ werden jedoch Real- und Imagin¨ arteil (oder als Alternative Betrag und Phase) im Frequenzbereich weiterverarbeitet.  Aus der STFT XST ejθ , m kann in einem Syntheseschritt das urspr¨ ungliche Signal wiedergewonnen werden. Wird die STFT vor dieser Rekonstruktion aller  ¨ dings modifiziert, XST ejθ , m → YST ejθ , m , dann f¨ u hrt diese Anderung im  jθ allgemeinen dazu, daß die modifizierte STFT YST e , m keine g¨ ultige STFT ist. In diesem Fall wird man daher ein Zeitsignal suchen, dessen STFT der modifizierten STFT m¨oglichst nahe kommt. Wird ein Least-Squares Kriterium als Fehlermaß

5.2 DFT-Filterb¨anke

145

h(n)

h(n)

FFT

h(n)

FFT

h(n)

FFT

FFT

dB

dB

dB

dB

Frequenz

Zeit

Abbildung 5.6: Signalverarbeitung in der Analyseseite der FFT-Filterbank

verwendet, dann ergibt sich nach [33] als beste Approximation das Zeitsignal y(n) = k(n)

∞ X

m=−∞

mit

h(mM − n) yST (n, m),

1 2 (mM − n) h m=−∞

k(n) = P∞

(5.22)

(5.23)

und der inversen Fouriertransformation (siehe auch Gl. 2.24 auf Seite 39) Z π  1 yST (n, m) = YST ejθ , m ejθn dθ. (5.24) 2π −π Durch geeignete Dimensionierung der Fensterfunktion h(n) kann k(n) ≡ 1 erreicht werden, so daß man aus Gl. 5.22 y(n) =

∞ X

m=−∞

h(mM − n) yST (n, m)

(5.25)

146

5 Multiratenfilterb¨anke und Wavelets

erh¨ alt. Eine m¨ogliche Wahl der Fensterfunktion ist nach [33] √   π 2 M h(n) = p (2n + 1) , n = 0, 1, . . . , N − 1, (5.26) a + b cos N N (4a2 + 2b2 )

mit a = 0.54 und b = −0.46. Die Signalverarbeitung in der Syntheseseite der Filterbank ist in Abb. 5.7 schematisiert dargestellt. Real- und Imagin¨ arteil der spektralen Darstellung werden

dB

dB

dB

dB

Frequenz

Zeit

IFFT

g(n)

IFFT

g(n)

IFFT

g(n)

IFFT

g(n)

Abbildung 5.7: Signalverarbeitung in der Syntheseseite der FFT-Filterbank mit der inversen FFT (IFFT) blockweise in den Zeitbereich zur¨ ucktransformiert. Die Bl¨ ocke werden mit Funktionen g(n) = h(n) gewichtet und u ¨berlappend aufaddiert. Werden keine Modifikationen im Frequenzbereich vorgenommen, also Realund Imagin¨arteil der FFT direkt zur IFFT der Syntheseseite weitergeleitet, so erh¨ alt man ein Ausgangssignal, das (abgesehen von einer Signalverz¨ogerung) perfekt dem Filterbankeingangssignal entspricht. Dabei sind die Abweichungen von

5.2 DFT-Filterb¨anke

147

einer exakten Rekonstruktion vernachl¨ assigbar klein, d.h. beispielsweise bei der Audiosignalverarbeitung nicht h¨ orbar. Die Filterbankdarstellung f¨ ur die STFT ergibt sich durch Anwendung der DFT (FFT), wie dies in Abb. 5.6 bereits eingezeichnet ist. F¨ ur eine Filterbank mit k diskretisiert: N Kan¨ alen wird in Gl. 5.21 die Frequenz θ = 2π N XST (k, m) =

∞ X

n=−∞



h(mM − n) x(n) e−j N nk ,

k = 0, 1, . . . , N − 1.

(5.27)

Durch Umformung von Gl. 5.27 erh¨ alt man das Analysefilterbanksystem 2π

XST (k, m) = e−j N mM k

∞ X



x(n) h(mM − n) ej N (mM −n)k , | {z } n=−∞

(5.28)

hk (mM −n)

das in Abb. 5.8 als Blockschaltbild angegeben ist. Im Gegensatz zu den kritisch abgetasteten cosinusmodulierten Filterb¨ anken mit M = N , wird hier (wegen der notwendigen Block¨ uberlappung) M < N (also etwa M = N/4) gew¨ahlt, d.h. es ¨ liegen hier u anke vor. Durch die Uberabtastung der ¨berabgetastete Filterb¨ Teilb¨ ander sind diese Filterb¨ anke auch besser f¨ ur verschiedene Modifikationen der Teilbandsignale geeignet. Die Teilbandfilter hk (n) in Abb. 5.8 sind frequenzverschobene Versionen des Prototypfilters h(n), dessen Impulsantwort die STFTFensterfunktion in Abb. 5.6 ist. XST (0, m) h0 (n)

↓M

x(n)

1

hN −1 (n)

XST (N − 1, m)

↓M 2π

e−j N (N −1)mM

Abbildung 5.8: Blockschaltbild der DFT-Analysefilterbank (N Kan¨ale)

Die Syntheseseite der DFT-Filterbank kann in ¨ ahnlicher Weise wie die Analysefilterbank durch Anwendung der IFFT f¨ ur die inverse Fouriertransformation in

148

5 Multiratenfilterb¨anke und Wavelets

Gl. 5.24 und Gl. 5.25 abgeleitet werden: y(n) =

∞ X

m=−∞

=

N −1 X

h(mM − n)

∞ X

N −1 2π 1 X YST (k, m) ej N nk N k=0



ej N mM k YST (k, m)

k=0 m=−∞

2π 1 h(mM − n) e−j N (mM −n)k . |N {z }

(5.29)

gk (mM −n)

YST (0, m) ↑M

g0 (n) y(n)

1 YST (N − 1, m)

↑M

gN −1 (n)



ej N (N −1)mM

Abbildung 5.9: Blockschaltbild der DFT-Synthesefilterbank (N Kan¨ale) Die in Abb. 5.9 gezeigte Struktur des Syntheseseite stellt die Filterbankdarstellung der inversen STFT dar. Ein Spezialfall der Synthesefilterbank ist die Filter Bank Overlap Addition Method [20, 32], bei der in der Syntheseseite keine Filter verwendet werden (gk (n) ≡ 1 k = 0, 1, . . . , N −1). Diese Vereinfachung ergibt jedoch keine perfekte Rekonstruktion der Filterbankanalyse/synthese. Die ¨ Fehler sind allerdings bei Audioanwendungen und f¨ ur mindestens vierfache Uberabtastung (N/M ≥ 4) vernachl¨ assigbar. F¨ ur die Implementierung der DFT-Filterb¨ anke mit der FFT bildet die anschauur liche Darstellung der Funktionweise in Abb. 5.6 und Abb. 5.7 die Grundlage f¨ die Programmierung mit MATLABr . Das folgende Programm verwendet eine L¨ fache Uberabtastung und f¨ ur die Analyse- und Syntheseseite die Fensterfunktion von Gl. 5.26. Es erfolgt keine Modifikation der Teilbandsignale, sondern eine direkte Kopplung von Analyse- und Syntheseseite der Filterbank. Dieses Programm bildet die Grundlage f¨ ur die Audioanwendungen von Kapitel 6, bei denen dann verschiedene Modifikationen der Teilbandsignale vorgenommen werden.

5.2 DFT-Filterb¨anke

149

function y = fft_fib(N,L,x) %function y = fft_fib(N,L,x) % % analysis/synthesis FFT flterbank using the STFT % % N number of filter bank channels (window length = FFT length) % L oversampling factor (L = N/M = 4, typically) % x input signal vector % y output signal vector % % G. Doblinger, TU-Wien, 1-2001 M = round(N/L); % decimation factor (frame hop size) if M < 1 error(’L must be less than N’); end % create time window function a = 0.54; b = -0.46; h = 2*sqrt(M/N)/(sqrt(4*a^2+2*b^2))*(a + b*cos(pi/N*(2*[0:N-1]’+1))); Nf = N; Nx = length(x); x = x(:); y = zeros(Nx,1);

% FFT length

% filter bank loop for m = 1:M:Nx-N+1 % analysis filter bank m1 = m:m+N-1; X = fft(x(m1).*h,Nf);

% cut out a block of length N, % apply weighting function, and FFT

% synthesis filter bank y1 = real(ifft(X,Nf));

% perform inverse FFT % real() avoids tiny imaginary parts

% overlap-add of successive IFFT outputs y(m1) = y(m1) + h.*y1(1:N); end

150

5 Multiratenfilterb¨anke und Wavelets

Zur Messung des Rekonstruktionsfehlers der Zusammenschaltung von Analyse- und Syntheseseite kann als Eingangssignal weißes, gaußsches Rauschen verwendet werden: N = 512; L = 4; Nx = 2048; x = randn(Nx,1); y = fft_fib(N,L,x); err = y(N:Nx-N)-x(N:Nx-N); plot(err), max(abs(err))

% number of channels % oversampling factor (decimation M=N/L=128) % input signal length

% error of steady-state response % show reconstruction error

Als Ergebnis erh¨alt man Fehlerwerte < 10−14 , also perfekte Rekonstruktion im Rahmen der MATLABr -Rechengenauigkeit. Aufgabe 5.3 Verwenden Sie fft_fib() zum Testen der Analyse/Synthese-Filterbank mit Sprachsignalen. Dazu erweitern Sie diese MATLABr -Funktion f¨ ur Blockverarbeitung, so wie das bei der Blockfilterung auf Seite 43 bereits realisiert ist. Achten Sie darauf, daß beim Aneinanderf¨ ugen der Bl¨ocke keine Stoßstellen auftreten! Die Audiosignale k¨ onnen beispielsweise als WAV-Dateien (oder in bin¨ arer Form als RAW-Datei) gespeichert sein. Variieren Sie die Blockl¨ ange N und den Dezimationsfaktor M . F¨ ur welche Werte M sind Abweichungen des rekonstruierten Signals vom urspr¨ unglichen Signal deutlich wahrnehmbar?

Aufgabe 5.4 Es ist ein Equalizer f¨ ur Audiosignale zu entwerfen, mit dem Verzerrungen des Frequenzgangs (z.B. von Lautsprechern) kompensiert werden k¨onnen. Eine andere Einsatzm¨ oglichkeit w¨ are die Realisierung von Klangbewertungsfiltern (oder Klangreglern) (siehe z.B. [34]). Verwenden Sie Ihr Filterbankprogramm aus dem vorhergehenden Beispiel, in dem Sie in der Teilbandverarbeitung (siehe Abb. 5.1) den Betrag der FFT-Komponenten mit einem reellwertigen Faktor 0 ≤ gk ≤ 1, k = 1, 2, . . . , N modifizieren. Beachten Sie dabei die Symmetriebedingungen der FFT f¨ ur reellwertige Signale.

5.3 Wavelet-Transformation

5.3

151

Wavelet-Transformation

Die Analyse (und Synthese) von Signalen mit der Kurzzeit-Fouriertransformation (STFT) besitzt die gleiche Zeit-Frequenzaufl¨ osung f¨ ur alle Teilbandsignale. Die verwendeten Teilband¨ ubertragungsfunktionen der Filterb¨anke leiten sich n¨amlich ¨ durch Modulation der Ubertragungsfunktion des Zeitfensters ab. Viele nat¨ urliche Signale weisen Merkmale auf, die besser mit unterschiedlicher Zeit-Frequenzaufl¨osung in Teilb¨andern erfaßt werden. So ist z.B. bei Sprachsignalen eine hohe Frequenzaufl¨osung in den unteren Frequenzbereichen, gekoppelt mit einer besseren Zeitaufl¨osung bei hohen Frequenzen w¨ unschenswert. Eine M¨oglichkeit f¨ ur eine solche Analyse und Synthese erm¨ oglichen die bereits behandelten nicht¨ aquidistanten Filterb¨ anke. Eine viel allgemeinere und in den meisten F¨allen auch mit geringerem Implementierungsaufwand verbundene L¨ osung bietet die WaveletTransformation (WT), die ¨ ahnlich wie die STFT auch eine Filterbankinterpretation zul¨aßt. Zur Wavelet-Transformation gibt es zahlreiche Lehrb¨ ucher, von denen [22, 35, 36, 37] besonders zu empfehlen sind. Die folgende Darstellung dieses attraktiven Fachgebiets bietet nur eine kleine Einf¨ uhrung mit dem Schwerpunkt auf effizienten Implementierungsm¨oglichkeiten mit speziellen Filterbankstrukturen bzw. deren Programmierung in MATLABr . F¨ ur viele Fragen, wie beispielsweise den Entwurf von Wavelets, muß auf die zitierte Fachliteratur verwiesen werden. Zum eingehenden Studium der Wavelet-Transformation kann auch die umfangreiche WAVELETToolbox von MATLABr empfohlen werden. Als kosteng¨ unstige Alternative dazu stehen auf der Internetseite des Autors auch MATLABr -Programme f¨ ur zeitdiskrete Realisierungen der Wavelet-Transformation zur Verf¨ ugung.

5.3.1

Diskrete Wavelet-Transformation (DWT)

Zum einfacheren Verst¨andnis werden zun¨ achst zeitkontinuierliche (analoge) Signale betrachtet [22]. Bei der WT sind die Analysefilter¨ ubertragungsfunktionen Hk (jω) der Filterbankdarstellung nicht modulierte (also frequenzverschobene) Versionen ¨ eines Prototypfilters H(jω), sondern frequenzskalierte Ubertragungsfunktionen (bzw. zeitskalierte Impulsantworten) der Form k

Hk (jω) = a 2 H jak ω





 k hk (t) = a− 2 h a−k t ,

a > 1, k ∈ Z,

(5.30)

die vom Prototypfilter H(jω) (k = 0) abgeleitet werden. Mit dem NormierungsR∞ k faktor a− 2 wird sichergestellt, daß die Signalenergie −∞ |hk (t)|2 dt unabh¨angig vom Teilbandindex k ist. Um die Auswirkung der Frequenzskalierung zu zeigen, sind in Abb. 5.10 f¨ ur a = 2 die einzelnen Teilbandfilter der WT-Analysefilterbank vereinfacht dargestellt. Das Prototypfilter H0 in Abb. 5.10 ist ein breitbandiges Bandpaßfilter mit

152

5 Multiratenfilterb¨anke und Wavelets

|Hk (ω)|

2



2 1

H2

H1 H0

ω0 4

ω

ω0 2

ω0

ω1 = 2ω0

Abbildung 5.10: Teilbandfilter¨ ubertragungsfunktionen bei der WT-Analysefilterbank (Prototypfilter H0 , Skalierungsfaktor a = 2)

den Grenzfrequenzen ω0 und ω1 = 2ω0 . Dadurch ergibt sich f¨ ur a = 2 eine dyadische Frequenzbandunterteilung (Oktavbandanalyse). Die Frequenzskalierung hat demnach eine ¨ahnliche Wirkung wie eine Modulation. Der wesentliche Unterschied ist die dabei auftretende gleichzeitige Ver¨ anderung der Bandbreite und die Bedeutung des Index k, der jetzt mit steigender Frequenz kleiner wird. Im Gegensatz dazu werden bei der STFT-Filterbank die Teilbandfilter von einem schmalbandigen Tiefpaß abgeleitet und haben eine konstante Bandbreite. Durch die unterschiedlichen Bandbreiten bei der WT k¨onnen die Teilbandsignale zu tieferen Frequenzen hin mit entsprechend kleineren Raten abgetastet werden. Damit erh¨alt man ein Analysefilterbanksystem, das aus dem analogen Eingangssignal x(t) zeitdiskrete Teilbandsignale gewinnt, deren Gesamtheit die diskrete Wavelet-Transformation (DWT) darstellt (siehe Abb. 5.11). Die DWT ergibt sich daher durch Filterung (Faltung) des analogen Eingangssignals x(t) mit den Teilbandfiltern hk (t) und Abtastung der Filterausgangssignale an Zeitpunkten n2k T (T ist das Abtastgrundintervall): Z



 x(τ )hk n2k T − τ dτ −∞ Z ∞  −k 2 =2 x(τ )h nT − 2−k τ dτ,

XDW T (k, n) =

(5.31)

−∞

mit k, n ∈ Z. Mit dieser Signalzerlegung wird einem analogen, eindimensionalen Signal eine zweidimensionale, diskrete Darstellung zugeordnet, die dann von praktischer Bedeutung ist, wenn das Signal nur durch wenige Koeffizienten XDW T (k, n) approximiert werden kann. In diesem Fall kann mit der DWT z.B. eine Datenreduktion bei der Signalspeicherung oder eine Signalentst¨orung durchgef¨ uhrt werden. Unter relativ allgemeinen Bedingungen kann anhand der DWT das Signal

5.3 Wavelet-Transformation

x(t)

153

h0 (t)

nT

h1 (t)

n2T

h2 (t)

n4T

XDW T (0, n)

XDW T (1, n)

XDW T (2, n)

Abbildung 5.11: DWT-Analysefilterbank (Skalierungsfaktor a = 2, Teilbandfilterimpulsantworten hk (t), Abtastgrundintervall T )

rekonstruiert werden (DWT-Synthese, inverse DWT): x(t) =

XX k

XDW T (k, n) ψkn (t).

(5.32)

n

Im Gegensatz z.B. zur Fourierreihendarstellung, die eine einfache Summe aufweist und daher nur f¨ ur spezielle Signale (n¨ amlich periodische Signale) ausgelegt ist, ist die zweidimensionale Darstellung viel allgemeiner und f¨ ur eine bedeutend gr¨oßere Klasse von Signalen geeignet. Die Wahl der als Wavelets bezeichneten Basisfunktionen ψkn (t) dieser Signaldarstellung ist ein zentrales Thema der Wavelet-Theorie uhrlich dargestellt. Eine besondere Bedeutung haben und wird z.B. in [35, 36] ausf¨ dabei orthonormierte Wavelets, die Z ∞ ∗ ψkn (τ )ψlm (τ ) dτ = δ(k − l)δ(n − m) (5.33) −∞

erf¨ ullen (∗ bedeutet konjugiert komplex, δ(n) ist der Einsimpuls). Mit dieser Beziehung ergibt sich durch Integration beider Seiten von Gl. 5.32 f¨ ur die DWT Z ∞ ∗ XDW T (k, n) = x(τ )ψkn (τ ) dτ. (5.34) −∞

ur die Basisfunktionen (WaveDer Vergleich dieser Gleichung mit Gl. 5.31 liefert f¨ lets)   k ψkn (t) = h∗k n2k T − t = 2− 2 h∗ nT − 2−k t . (5.35)

154

5 Multiratenfilterb¨anke und Wavelets

Damit erh¨alt man f¨ ur die DWT-Synthese XX  x(t) = XDW T (k, n) h∗k n2k T − t k

n

−k 2

XX

=2

n

k

(5.36)

 XDW T (k, n) h∗ nT − 2−k t .

Bei orthonormierten Wavelets gen¨ ugt die Angabe einer einzigen Prototypfilterimpulsantwort h(t) f¨ ur den Entwurf der kompletten Wavelet-Analyse/Synthesefilterbank.

5.3.2

Zeitdiskrete Wavelet-Transformation (DTWT)

Die DWT verarbeitet zeitkontinuierliche Signale x(t). Die Implementierungsvorteile der DWT kommen im vollen Umfang erst dann zum Tragen, wenn zeitdiskrete Signale x(n) mit der sogenannten zeitdiskreten WT, Discrete-Time Wavelet Transform (DTWT), verarbeitet werden. F¨ ur Signale endlicher Dauer N ben¨ otigt die DTWT einen Rechenaufwand von der Komplexit¨at O(N ). Sie demnach noch effizienter als die FFT (bzw. die STFT), die eine Komplexit¨at O(N log2 N ) besitzt. Der Grund daf¨ ur liegt einerseits in der logarithmischen Frequenzbandunterteilung, die weniger B¨ ander als bei ¨ aquidistanter Aufteilung (FFT) erfordert. Andererseits gibt es zur Implementierung sehr effiziente Multiratenfilterbankstrukturen (z.B. [22, 38]), die in diesem Abschnitt vorgestellt werden. Die DTWT kann ¨ahnlich wie die DWT als Analysefilterbank interpretiert werden, wobei sich bei zeitdiskreten Signalen die Frequenzbandunterteilung bis zur halben Abtastfrequenz fN = fs /2 erstreckt. Die dyadische Bandaufteilung ist in arkungsfaktoren der einzelnen Abb. 5.12 schematisiert (und vereinfacht ohne Verst¨ B¨ ander) f¨ ur eine DTWT mit 4 Kan¨ alen gezeigt.

|Hk (f )| 3 0

2 1 8

1 1 4

k=0 1 2

f /fN 1

Abbildung 5.12: Schematisierte, dyadische Frequenzbandaufteilung bei der DTWT f¨ ur N = 4 Filterbankkan¨ ale (halbe Abtastfrequenz fN = fs /2) Eine offensichtliche Realisierung w¨ are eine nicht¨ aquidistante Filterbank, wie sie in Abschnitt 5.1.2 angegeben ist. F¨ ur die spezielle Bandaufteilung der DTWT

5.3 Wavelet-Transformation

155

gibt es jedoch eine weitaus effizientere Methode, die die DTWT f¨ ur viele Anwendungen ¨ außerst attraktiv macht. Bei dieser Implementierung wird die Bandaufteilung durch baumf¨ ormige Anordnung von Zweikanalfilterb¨ anken erzeugt, bei der jede dieser elementaren Filterb¨ anke das entsprechende Frequenzintervall halbiert. Die Analyseseite der Zweikanalfilterbank mit den zugeh¨orenden Spektren der involvierten Signale ist in Abb. 5.13 dargestellt. Die Zweikanalfilterbank unterX

X1

0

1

f /fN

Y1

1 2

0

1

x1 (n)

HL

x2 (n)

↓2

X2

0

1 2

0

1

f /fN

1

′ f /fN

y1 (n)

↓2

x(n) HH

f /fN

y2 (n) Y2

0

1

′ f /fN

Abbildung 5.13: Spektren bei der 2-Kanal Filterbank (DTWT) mit kritisch abge′ tasteten Teilbandsignalen (fN = fs /2, fN = fs′ /2 = fs /4) teilt das Frequenzintervall [0, fs /2] mit zwei sogenannten Halbbandfiltern in ein Tiefpaß- und ein Hochpaßband. Die Teilbandsignale k¨onnen daher um den Faktor 2 unterabgetastet werden, so daß die Abtastfrequenz an den Filterbankausg¨angen fs′ = fs /2 betr¨agt. Durch diese kritische (oder maximale) Abtastung erstrecken sich die Spektren der Teilbandsignale, ¨ ahnlich wie das Eingangssignal, bis zur (ausgangsseitigen) halben Abtastfrequenz fs′ /2.3 Werden die Zweikanalfilterb¨ anke zu einer baumf¨ ormigen Struktur kombiniert, dann erh¨ alt man die in Abb. 5.14 gezeigte Realisierung der DTWT. Die Anorduck zur DWT in Abb. 5.11, bei nung in Abb. 5.14 ist das zeitdiskrete Gegenst¨ der ebenfalls jedes Teilbandsignal kritisch abgetastet ist. Durch die Abtastratenreduktion in den Teilb¨andern bleibt die Anzahl der Abtastwerte erhalten, d.h. ein Signal endlicher Dauer ben¨ otigt (abgesehen von den Signalverl¨angerungen durch 3 N¨ ahere Einzelheiten zur Frequenzbereichsdarstellung von Systemen mit Mehrfachtaktverarbeitung sind in [32, 22, 38] zu finden. Die wichtigsten Beziehungen dazu sind auch im Anhang B auf Seite 211 zusammengestellt.

156

5 Multiratenfilterb¨anke und Wavelets

XDT W T (3, n) HL

↓2

XDT W T (2, n) HL

↓2

HH

↓2

HH

↓2

XDT W T (1, n) HL

↓2

HH

↓2

XDT W T (0, n)

x(n)

Abbildung 5.14: Realisierung der N = 4 DTWT als Baumstruktur mit kritisch abgetasteten 2-Kanal Filterb¨ anken (Analysestufen) die Filteroperationen) gleich viele Werte zur Zeitbereichsdarstellung und f¨ ur die Repr¨ asentation mit der DTWT. Die Abtastratenreduktion um den Faktor 2, angewendet auf ein Signal x(n), ergibt im Zeitbereich y(n) = x(2n), da nur jeder zweite Wert von x(n) weiterverwendet wird. Mit diesem Zusammenhang l¨ aßt sich anhand von Abb. 5.14 die folgende Beziehung f¨ ur die DTWT unmittelbar ableiten (vgl. dazu Gl. 5.31): XDT W T (k, n) = XDT W T (M − 1, n) =

∞ X

m=−∞ ∞ X

m=−∞

 x(m) hk 2k+1 n − m , M −1

x(m) hk 2

k = 0, 1, . . . , M − 2 (5.37)



n−m .

Diese Darstellung der DTWT ist eine alternative Realisierungsm¨oglichkeit f¨ ur die DTWT. Sie ist jedoch durch die Verwendung der individuellen Teilbandfilter mit den Impulsantworten hk (n) bei weitem nicht so effizient bzgl. Rechenzeit und Speicherplatzbedarf, wie die hochgradig modulare Baumstruktur von Abb. 5.14. Außerdem reduziert sich der Filterentwurf bei der Baumstruktur auf das relativ einfache Design einer Zweikanalfilterbank. Zum Vergleich der DTWT-Filterbank mit anderen nicht¨aquidistanten Filterb¨ anken m¨ ussen die einzelnen Frequenzg¨ ange der Teilbandfilter anhand der Baumstruktur berechnet werden. Am einfachsten geschieht das durch Verschiebung der Taktratenreduktionen an die Ausg¨ ange der Filterbank. Dazu benutzt man die Vertauschung der Filterung mit H(z) und der Taktratenreduktion um den Faktor M ,

5.3 Wavelet-Transformation

157

¨ bei der H(z) durch H(z M ) ersetzt wird. Im Zeitbereich bedeutet der Ubergang M von z → z das Einf¨ ugen von M − 1 Nullen zwischen den Abtastwerten, die bei der Taktratenreduktion um den Faktor M wieder entfernt werden. Auf diese Weise ergibt sich die zu Abb. 5.14 ¨ aquivalente Filterbankstruktur in Abb. 5.15.

x(n)

HL (z)

HL (z 2 )

HL (z 4 )

↓8

HL (z)

HL (z 2 )

HH (z 4 )

↓8

HL (z)

HH (z 2 )

HH (z)

↓4 ↓2

XDT W T (3, n)

XDT W T (2, n)

XDT W T (1, n)

XDT W T (0, n)

Abbildung 5.15: Teilbandfilter einer N = 4 DTWT Filterbank, abgeleitet von ¨ Zweikanalfiltern mit Ubertragungsfunktionen HL (z) und HH (z) Ein Beispiel f¨ ur die Frequenzg¨ ange einer 4-Kanal DTWT-Filterbank ist in Abb. 5.16 dargestellt. Die Teilbandfilter werden entsprechend Abb. 5.15 von 2Kanalfiltern (FIR-Filter der L¨ ange L = 30) abgeleitet, die mit unicmfb()} oder qmf_2() entworfen werden k¨ onnen. Beide Programme sind auf der Internetseite ¨ des Autors zu finden. Generell zeigen DTWT-Filterb¨ anke eine starke Uberlappung der einzelnen Teilb¨ander und eine vergleichsweise geringe Sperrd¨ampfung. Diese Effekte sind bei Wavelet-Funktionen, die meist k¨ urzer als 30 Abtastwerte sind, noch viel st¨arker ausgepr¨ agt. F¨ ur diese Funktionen gelten andere Entwurfskriterien, n¨ amlich m¨oglichst komprimierte DTWT-Koeffizienten, als f¨ ur stark frequenzselektive Filterb¨anke. Dieser Sachverhalt wird bei einer Anwendung der DTWT im Abschnitt 5.3.3 noch n¨ aher erl¨ autert.

Aufgabe 5.5 Entwickeln Sie ein MATLABr -Programm wtfib(N,h_l,h_h), mit dem ausgehend von den Impulsantworten der Zweikanalfilter hL (n) und hH (n) die Frequenzg¨ ange der Teilbandfilter einer DTWT der L¨ange N , so wie in Abb. 5.16, dargestellt werden k¨ onnen. Als Basis dazu dient die Verallgemeinerung der Filterbank von Abb. 5.15.

158

5 Multiratenfilterb¨anke und Wavelets nichtdezimierte DTWT Filter, N = 4 20

Betrag in dB

0 −20 −40 −60 −80 −100 0

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1

f normiert auf Fs/2

Abbildung 5.16: Beispiel N = 4 DTWT Filterbank (ohne Taktratenreduktion), abgeleitet von Zweikanalfiltern HL (z) und HH (z) der L¨ange L = 30

Die Signalsynthese mit der DTWT (inverse DTWT, IDTWT) kann ebenfalls mit einer Baumstruktur von Zweikanalfilterb¨anken durchgef¨ uhrt werden (siehe Abb. 5.17). Wird n¨ amlich die Struktur der DTWT von Abb. 5.14 unmittelbar mit jener der IDTWT von Abb. 5.17 gekoppelt, dann ergibt sich eine perfekte Rekonstruktion, wenn die Zweikanal-Analyse/Synthesefilterbank eine perfekte Rekonstruktion aufweist. Man erkennt das am einfachsten dann, wenn die zusammengeschalteten Baumanordnungen von DTWT und IDTWT sukzessive von oben nach unten aufgel¨ost werden, d.h. es wird jede Zweikanal-Analyse/Synthesefilterbank durch eine Durchverbindung ersetzt. Bei der praktischen Realisierung ist dabei allerdings zu beachten, daß die Zweikanal-Analyse/Synthesefilterbank eine Signalverz¨ ogerung aufweist, die beim Zusammenschalten durch Verz¨ogerungselemente in den entsprechenden Zweigen kompensiert werden muß. Wird die DTWT und IDTWT als Blockverarbeitungsalgorithmus z.B. mit MATLABr implementiert, dann k¨onnen diese Extraverz¨ ogerungselemente durch einen einfachen Trick, der auf Seite 162 verraten wird, eliminiert werden. Durch die baumf¨ormige Struktur der DTWT und IDTWT reduziert sich deren Realisierung auf den Entwurf und die Implementierung einer zweikanaligen Analyse/Synthesefilterbank. Der Entwurf einer solchen Filterbank ist ein Spezialfall der anke und wurde f¨ ur den Fall nahezu ¨aquidistanten, kritisch abgetasteten Filterb¨ perfekter Rekonstruktion bereits in Abschnitt 5.1.1 vorgestellt. F¨ ur den Entwurf dieser, auch als Quadrature Mirror Filterb¨ anke (QMF) bezeichneten, elementaren Filterbanksysteme, gibt es eine Reihe von Verfahren (siehe dazu z.B. [22].

5.3 Wavelet-Transformation

159

XDT W T (3, n) ↑2

GL

↑2

GH

XDT W T (2, n) ↑2

GL

↑2

GH

XDT W T (1, n) ↑2

GL

↑2

GH

x(n)

XDT W T (0, n)

Abbildung 5.17: Baumstruktur f¨ ur die N = 4 IDTWT mit kritisch abgetasteten 2-Kanal Filterb¨anken (Synthesestufen)

Einen schnellen und mit geringem Rechenaufwand verbundenen Entwurf von kritisch abgetasteten Zweikanalfilterb¨ anken bietet das bereits auf Seite 132 vorgestellte MATLABr -Programm unicmfb(). Als weitere Funktionen stehen qmf_2() und qmf_2hb() auf der Internetseite des Autors zur Verf¨ ugung. Mit unicmfb() oder qmf_2() werden linearphasige FIR-Filter f¨ ur das Tiefpaßband HL und das Hochpaßband HH erzeugt. Der spezielle Zusammenhang hH (n) = (−1)n hL (n) zwischen der Impulsantwort hL (n) des Tiefpaßfilters HL und jener des Hochpaßfilters HH gestattet die sehr effiziente Implementierung der Zweikanalfilterbank mit Hilfe von Polyphasenfiltern [32, 38]. Bei der Polyphasenzerlegung wird die ¨ Ubertragungsfunktion H(z) eines digitalen (IIR- oder FIR-) Filters z.B. in zwei Polyphasenkomponenten aufgespalten:

H(z) = =

∞ X

h(n)z −n

n=−∞ ∞ X

∞ X h(2n + 1) z −2n z −1 h(2n) z −2n + | {z } | {z } n=−∞ n=−∞

= Hg z

2

hg (n)



+z

(5.38)

hu (n)

−1

Hu z

2



.

Wird diese Aufspaltung auch auf das Hochpaßfilter der Zweikanalfilterbank angewendet, so erh¨alt man mit h(n) = hL (n) und hH (n) = (−1)n h(n) f¨ ur die Hoch-

160

5 Multiratenfilterb¨anke und Wavelets

paߨ ubertragungsfunktion HH (z) = = =

∞ X

(−1)n h(n)z −n

n=−∞ ∞ X

(−1)2n h(2n)z −2n +

n=−∞  Hg z 2

∞ X

(−1)2n+1 h(2n + 1)z −2n z −1

(5.39)

n=−∞

−z

−1

Hu z

2



.

Als Blockdiagramm sind die Zusammenh¨ ange Gl. 5.38 und Gl. 5.39 in Abb. 5.18 gezeigt.

HL 2

Hg (z )

z −1

Hu (z 2 )

HH

Abbildung 5.18: Polyphasendarstellung der Tiefpaß- und Hochpaߨ ubertragungsfunktion (HL bzw. HH ) f¨ ur die Analyseseite der Zweikanalfilterbank Bei FIR-Filtern gen¨ ugen wegen des bereits erw¨ ahnten speziellen Zusammenhangs hH (n) = (−1)n h(n) f¨ ur die Filterimpulsantworten zwei Filter mit halbierter Anzahl von Filterkoeffizienten. Ein zus¨ atzlicher und wesentlicher Vorteil der Polyphasendarstellung kommt dann zur Wirkung, wenn damit kritisch abgetastete Filterb¨ anke realisiert werden. Im Fall der Zweikanalfilterbank mit Taktraten¨anderungen um den Faktor 2 kann n¨ amlich die Filteroperation mit der Taktraten¨ umsetzung entsprechend vertauscht werden, da in den Ubertragungsfunktionen Polynome in z 2 bzw. z −2 auftreten. Die Filterstrukturen der Polyphasenfilter haben Verz¨ogerungselemente, die immer paarweise in Kette geschaltet auftreten. Wie bereits auf Seite 157 erw¨ ahnt, kann bei solchen Anordnungen eine Taktraten¨anderung durch das Filter “geschoben” werden. Diese Transformation ist in Abb. 5.19 anhand der kompletten Zweikanalfilterbank zu sehen, deren Syntheseseite ebenfalls mit der Polyphasenzerlegung realisiert werden kann [22]. Die Struktur in Abb. 5.19 ist hocheffizient, da nicht nur die Filter die H¨alfte der Koeffizienten der urspr¨ unglichen Filter haben, sondern alle Arithmetikoperationen mit der niedrigeren Taktfrequenz ausgef¨ uhrt werden. Der einzige Nachteil ist die nichtperfekte Rekonstruktion (Amplitudenfehler) bei Verwendung linearphasiger FIR-Filter. Da die Rekonstruktionsfehler typisch im Bereich 10−5 . . . 10−3 liegen,

5.3 Wavelet-Transformation

z −1

z −1

161

Hg (z 2 )

↓2

↑2

Hu (z 2 )

Hu (z 2 )

↓2

↑2

Hg (z 2 )

↓2

Hg (z)

Hu (z)

↑2

↓2

Hu (z)

Hg (z)

↑2

z −1

z −1

Abbildung 5.19: Polyphasendarstellung der Zweikanalfilterbank mit kritischer Abtastung der Teilbandsignale (unten: Verschiebung der Taktratenumsetzung an den Eingang und an den Ausgang)

ist dieser Nachteil im praktischen Einsatz bei der DTWT nicht gravierend. Mit den folgenden MATLABr -Befehlen kann die Zweikanalpolyphasenfilterbank von Abb. 5.19 programmiert werden.

hg = h(1:2:end); hu = h(2:2:end); x = x(:);

% polyphase filters of low pass prototyp % input signal

% analysis filter bank u1 u2 y1 y2

= = = =

filter(hg,1,x(1:2:end)); filter(hu,1,[0 ; x(2:2:end-1)]); u1 + u2; % subband signals y1, y2 u1 - u2;

% synthesis filter bank v1 = y1 - y2; v2 = y1 + y2; y = zeros(size(x)); y(1:2:end) = filter(hg,1,v1); y(2:2:end) = filter(hu,1,v2);

162

5 Multiratenfilterb¨anke und Wavelets Aufgabe 5.6 Kontrollieren Sie zun¨ achst, ob das vorgeschlagene Programm f¨ ur die Zweikanalfilterbank bei geraden und ungeraden Signall¨angen richtig arbeitet. Berechnen Sie dann mit dem auf Seite 132 angegeben Programm unicmbf() die Prototypimpulsantwort h(n) f¨ ur eine Zweikanalfilterbank (z.B. mit h = unicmfb(2,40,1/6,1e5,80);). Testen Sie danach mit verschiedenen Eingangssignalen das Verhalten der Zweikanalpolyphasenfilterbank und bestimmen Sie den Rekonstruktionsfehler. Wie groß ist die Zeitverz¨ogerung der Filterbank zwischen Eingang und Ausgang?

Mit der Zweikanalpolyphasenfilterbank kann die baumf¨ormige Filterbankstruktur der DTWT bzw. der IDTWT von Abb. 5.14 (Abb. 5.17) aufgebaut werden. Dabei muß jedoch die Verz¨ ogerungszeit der Zweikanalfilterbank ber¨ ucksichtigt werden. Im folgenden MATLABr -Programm f¨ ur die DTWT und IDTWT (genaugenommen der Zusammenschaltung von DTWT und IDTWT) wird diese Verz¨ ogerungszeit in den Synthesestufen bei der IDTWT kompensiert. Um diesen Trick anwenden zu k¨onnen, m¨ ussen in den Analyseseiten der einzelnen Zweikanalfilterb¨ anke um L Werte (Ausschwingvorgang der Filter) mehr berechnet werden. Das ist auch der Grund f¨ ur die Verwendung der Funktion conv() anstelle von filter(), da die Faltung conv() den Ausschwingvorgang mitberechnet. Hingegen ist bei der Funktion filter() die Anzahl der Ausgangssignalwerte gleich der Anzahl von Eingangsdaten. function y = DTWT_IDTWT(N,h,x) % function y = DTWT_IDTWT(N,h,x) % compute combination of DTWT and IDWT to show reconstruction property % % N number of DTWT coefficients = number of filter bank channels % h low pass filter impulse response (linear phase filter) % x,y input, and output signal vectors % % Note: do not use unicmfb() to design filter because linear phase filters % are required, use e.g. h = qmf_2(50,0.65,0.1) instead % (qmf_2() can be obtained from the author’s homepage) % % G. Doblinger, TU-Wien, 02-2001 Nx2 = ceil(length(x)/2); L = length(h); p1 = h(1:2:end); p2 = h(2:2:end);

% maximum length of DTWT coefficients % polyphase filters of low pass prototyp

5.3 Wavelet-Transformation DTWT = zeros(Nx2+L,N); % matrix of N DTWT coefficients yl = x; for n = 1:N-1 [yl,yh] = polyafib2(p1,p2,yl); DTWT(1:length(yh),n) = yh; end DTWT(1:length(yl),N) = yl; % compute IDTWT = output y of synthesis filter bank y = DTWT(1:length(yl),N); for n = N-1:-1:1 y = polysfib2(p1,p2,y,DTWT(1:length(y),n)); end % ------------------------------------------------------function [yl,yh] = polyafib2(p1,p2,x) % compute analysis filter bank (polyphase filters) u1 u2 yl yh

= = = =

conv(p1,x(1:2:end)); conv(p2,[0 ; x(2:2:end-1)]); u1 + u2; u1 - u2;

% ------------------------------------------------------function y = polysfib2(p1,p2,yl,yh) % compute synthesis filter bank (polyphase filters) L = 2*length(p1); Ly = 2*length(yl)+L-2; v1 = yl - yh; v2 = yl + yh; y = zeros(Ly,1); y(1:2:Ly) = conv(p1,v1); y(2:2:Ly) = conv(p2,v2); y = y(L:Ly+3-L); % compensate delay of 2 channel filter bank

163

164

5 Multiratenfilterb¨anke und Wavelets Aufgabe 5.7 Verwenden Sie den angegeben MATLABr -Code zur Bestimmung der DTWT folgender Signale: a) Zeitdiskreter, verz¨ ogerter Rechteckimpuls. Wie ¨andert sich die DTWT mit der Verz¨ ogerungszeit des Rechteckimpulses?  b) Sinusf¨ormiges Chirp-Signal x(n) = sin αn2 . 2

c) Modulierter Gaußimpuls x(n) = e−αn cos(θ0 n).

Als Prototypfilterimpulsantwort h verwenden Sie jene aus der vorherge¨ henden Aufgabe. Uberpr¨ ufen Sie die Rekonstruktionseigenschaften der IDTWT, indem Sie (wie im angegebenen Programm) die DTWT und IDTWT zusammenschalten.

Die Realisierung der DTWT und IDTWT mit Zweikanalpolyphasenfilterb¨anken ist nicht f¨ ur die wichtige Klasse orthonormierter Wavelets geeignet, da nach Gl. 5.36 das Prototypfilter der Syntheseseite gleich dem zeitinversen (und konjugiert komplexen) Prototypfilter der Analyseseite ist. F¨ ur orthonormierte Wavelets gibt es bei Verwendung von FIR-Leiterstrukturen (FIR-Lattice-Filter) ebenfalls sehr effiziente Implementierungsm¨ oglichkeiten. Neben der hochgradigen Effizienz der Leiterstrukturen ist der entscheidende Vorteil die inh¨ arente exakte Rekonstruktion bei kritisch abgetasteten Zweikanalfilterb¨ anken. Die exakte Rekonstruktion bleibt strukturbedingt auch bei einer Quantisierung der Filterkoeffizienten erhalten, was Lattice-Filter insbesondere f¨ ur die Implementierung mit Festkommasignalprozessoren sehr attraktiv macht. Als Nachteil k¨ onnte man lediglich die Notwendigkeit einer nichtlinearen Optimierung beim Entwurf der ben¨otigten Filterkoeffizienten ansehen. Das entsprechende Entwurfsprogramm qmf_2hb() f¨ ur die Koeffizienten der FIR-Lattice-Filter qmf_2hb() kann von der Internetseite des Autors bezogen werden. Es wird jedoch die OPTIMIZATION Toolbox von MATLABr ben¨otigt, die nicht in der kosteng¨ unstigen Studentenversion von MATLABr enthalten ist. Als Alternative sind Lattice-Filterkoeffizienten und eine ausf¨ uhrliche Darstellung der Zweikanalfilterbank mit Leiterstrukturen in [39] angegeben. Diese Filterkoeffizienten sind in der Datei QMF_Lat_Coef.m ebenfalls auf der Internetseite des Autors zu finden. Die Struktur der Zweikanalfilterbank mit FIR-Lattice-Filtern ist in Abb. 5.20 gezeigt. Wie bei der Verwendung von Polyphasenfiltern (Abb. 5.19) kann auch hier die Taktratenumsetzung am Eingang und Ausgang erfolgen, so daß alle Rechenoperationen mit der niedrigeren Taktrate ausgef¨ uhrt werden.

5.3 Wavelet-Transformation

165

y1 (n) ↓2

x(n) T

α1 −α1

↓2

y1 (n) −αL αL y2 (n)

T

T −αL−1 αL−1

α2 −α2

T

T −α1 α1

αL −αL

↑2

y2 (n)

T y(n)

↑2

Abbildung 5.20: Analyseseite (oben) und Syntheseseite (unten) der kritisch abgetasteten Zweikanalfilterbank mit FIR-Lattice-Filtern Die Programmierung der Leiterstrukturen mit MATLABr kann mit den folgenden beiden Funktionen durchgef¨ uhrt werden.4 function [y_lp,y_hp] = latafib2(x,alpha) %function [y_lp,y_hp] = latafib2(x,alpha) % % 2-channel critically sampled lattice analysis filter bank % % x input signal vector % alpha vector of lattice coefficients created with QMF_Lat_Coef() % or qmf_2hb() % y_lp, y_hp output signal vectors of low pass and high pass filters % % G. Doblinger, TU-Wien, 6-1998 Nx = length(x); % compute lattice input signals p0 (upper path), and q0 (lower path) p0 q0 p0 q0

= = = =

x(:)/sqrt(prod(1+alpha.^2)); [0 ; p0(1:Nx-1)]; p0(2:2:Nx); q0(2:2:Nx);

% apply gain factor % delay q-signal % down-sampling at input

4 In den neueren Versionen der SIGNAL PROCESSING Toolbox zu MATLABr gibt es f¨ ur Lattice-Filter die Funktion latcfilt(), die in bin¨ arer Form (MEX-File) implementiert ist und damit eine k¨ urzere Laufzeit hat.

166

5 Multiratenfilterb¨anke und Wavelets

Nq = length(q0)-1; % compute lattice stages output signals p = p0 - alpha(1)*q0; q = q0 + alpha(1)*p0; for n = 2:length(alpha) q = [0 ; q(1:Nq)]; pt = p; p = p - alpha(n)*q; q = q + alpha(n)*pt; end y_lp = p; y_hp = q;

% loop of remaining stages % delayed q-vector

% --------------------------------------------------------------function y = latsfib2(y_lp,y_hp,alpha) %function y = latsfib2(y_lp,y_hp,alpha) % % 2-channel critically sampled lattice synthesis filter bank % % y_lp, y_hp input signal vectors % alpha vector of lattice coefficients % y output signal vector % % G. Doblinger, TU-Wien, 6-1998 Nx = length(y_lp); Nq = Nx - 1; alpha = alpha(end:-1:1);

% use reversed coefficients

% compute first stage output signals y_lp = y_lp(:); y_hp = y_hp(:); p = y_lp + alpha(1)*y_hp; q = y_hp - alpha(1)*y_lp; for n = 2:length(alpha) p = [0 ; p(1:Nq)]; pt = p; p = p + alpha(n)*q; q = q - alpha(n)*pt; end

% loop of remaining stages % delayed p-vector

5.3 Wavelet-Transformation

167

% up-sampling at output Nx = 2*Nx; p_int = zeros(Nx,1); p_int(2:2:Nx) = p; q_int = zeros(Nx,1); q_int(2:2:Nx) = q; p_int = [0 ; p_int(1:Nx-1)]; y = (p_int + q_int)/sqrt(prod(1+alpha.^2));

qQ L 2 Der Skalierungsfaktor 1/ k=1 (1 + αk ) am Eingang der Analysefilterbank (bzw. am Ausgang der Synthesefilterbank) stellt den Verst¨arkungsfaktor 1 f¨ ur die gesamte Zweikanalfilterbank sicher. Diese Skalierung ist in Abb. 5.20 nicht eingezeichnet. Mit beiden MATLABr -Funktionen kann die DTWT und IDTWT programmiert werden, indem im Programm auf Seite 162 die Funktionen polyafib2() und polysfib2() durch die Lattice-Filterfunktionen latafib2() und latsfib2() ersetzt werden. Allerdings ganz so einfach ist das nicht, da ja wie bereits erw¨ahnt die Verz¨ ogerungszeit der Zweikanalfilterbank ber¨ ucksichtigt werden muß.

Aufgabe 5.8 Modifizieren Sie die Funktionen latafib2() und latsfib2(), so daß sie f¨ ur die Berechnung der DTWT und IDTWT mit dem Programm auf Seite 162 herangezogen werden k¨onnen. Dabei kommt es darauf an, die richtige Anzahl von Abtastwerten zu berechnen und die Verz¨ogerungszeit der Zweikanalfilterbank zu kompensieren. Die ben¨otigten Koeffizienten αk der Lattice-Filter k¨onnen Sie mit den bereits erw¨ahnten Programmen qmf_2hb() oder QMF_Lat_Coef.m generieren: Beispielsweise mit alpha = qmf_2hb(40,0.63,’l’); oder alpha = QMF_Lat_Coef(’32C’);. Kontrolle des Ergebnisses: Erfolgt der Entwurf der Lattice-Filter mit alpha = qmf_2hb(40,0.63,’l’), dann muß der Betrag des Rekonstruktionsfehlers der Zusammenschaltung von DTWT und IDTWT f¨ ur N ≤ 10 Filterbankkan¨ ale im Bereich 10−14 liegen. Abweichungen von dieser Fehlerschranke sind mit großer Wahrscheinlichkeit auf Programmierfehler zur¨ uckzuf¨ uhren.

168

5.3.3

5 Multiratenfilterb¨anke und Wavelets

Signalentst¨ orung mit Wavelets

Wavelets in Form der DTWT und IDTWT haben zahlreiche Anwendungen im Bereich der digitalen Signalverarbeitung gefunden. Die Hauptgr¨ unde daf¨ ur sind einerseits der geringe Rechenaufwand bei den im vorangegangenen Abschnitt vorgestellten Baumstrukturen der DTWT und IDTWT. Andererseits k¨onnen die Wavelet-Filter so dimensioniert werden, daß die DTWT/IDTWT f¨ ur eine große Klasse von Signalen sehr kompakt ist, also nur wenige Koeffizienten zur Signaldarstellung ben¨otigt werden. Das erlaubt den Einsatz der Wavelet-Transformation bei der Datenkompression von Audio- und Videosignalen, die heute bei Multimediaanwendungen in großem Umfang ben¨ otigt wird. Eine weitere, sehr erfolgreiche Anwendung der Wavelet-Transformation ist die Entst¨ orung verrauschter Signale. Hier wird die Eigenschaft von Wavelets ausgenutzt, daß auf der Ebene der DTWT-Koeffizienten gew¨ unschte Signalkomponenten von St¨ oranteilen sehr gut zu trennen sind. W¨ ahrend bei vielen Signalen die DTWTKoeffizienten konzentriert sind und damit große Amplituden haben, zeigen additive St¨ orsignale in Form von weißem Rauschen ein diffuses Bild, d.h. die DTWTKoeffizienten der St¨orer sind verteilt auf alle Kan¨ ale der DTWT-Filterbank. Man kann daher erwarten, daß haupts¨ achlich die St¨ orsignale f¨ ur die kleinen DTWTKoeffizienten maßgebend sind. Eine einfache und wirkungsvolle Methode zur Verbesserung verrauschter Signale ist die Unterdr¨ uckung von DTWT-Koeffizienten mit kleinen Amplituden durch eine nichtlineare Verarbeitung der DTWT vor dem Syntheseschritt mit der IDTWT (siehe Abb. 5.21). ˆ DT W T (k, n) X

IDTWT

s(n) + w(n)

DTWT

XDT W T (k, n)

sˆ(n)

Abbildung 5.21: Nichtlineare Verarbeitung der DTWT zur Unterdr¨ uckung von Rauschanteilen w(n) im Nutzsignal s(n) Diese Methode wird als Wavelet Shrinkage bezeichnet und beruht trotz des heuristisch anmutenden Ansatzes auf einer fundierten theoretischen Basis [40]. F¨ ur die nichtlineare Verarbeitung werden Hard Thresholding ( XDT W T (k, n) |XDT W T (k, n)| ≥ th ˆ XDT W T (k, n) = (5.40) 0 |XDT W T (k, n)| < th

5.3 Wavelet-Transformation

169

oder Soft Thresholding ( sign(XDT W T (k, n))(|XDT W T (k, n)| − th) |XDT W T (k, n)| ≥ th ˆ XDT W T (k, n) = 0 |XDT W T (k, n)| < th (5.41) eingesetzt. F¨ ur die Berechnung der Schwelle wird als einziger Parameter die Lei2 stung (Varianz) σw des weißen Rauschsignals w(n) ben¨otigt. Damit ergibt sich f¨ ur Signale endlicher Dauer N ein erstaunlich einfacher Schwellwert [41]: p th = σw 2 log N . (5.42)

Ein MATLABr -Programm wt_dn() zum Wavelet Shrinkage steht auf der Internetseite des Autors zur Verf¨ ugung. So kann beispielsweise mit xc = sin(4e-5*[0:2047].^2); [y,xn] = wt_dn(xc,6,15);

% % % % % %

chirp signal y = denoised signal, xn = noisy signal DTWT with 6 channels, SNR = 15 dB orthonormal wavelet (Coiflet), length = 24 hard thresholding DTWT of last channel (no. 6) not modified

ein verrauschtes Chirp-Signal weitgehend entst¨ ort werden. Das Ergebnis ist in Abb. 5.22 dargestellt. Dieses gute Resultat ist nat¨ urlich nicht mit einer konventionellen (linearen, frequenzselektiven) Filterung erreichbar, da sich das Chirp-Signal u ¨ber einen weiten Frequenzbereich erstreckt. Das Programm wt_dn() setzt sich aus der bereits vorgestellten DTWT- und IDTWT-Implementierung von Seite 162 (allerdings mit Lattice-Filtern) und der zwischen Analyse- und Syntheseseite der Wavelet-Filterbank zwischengeschalteten Nichtlinearit¨aten zusammen. Die Erfahrung zeigt, daß bessere Resultate erzielt werden, wenn XDT W T (N − 1, n) (Kanal mit der kleinsten Bandbreite) nicht ver¨ andert wird. Dieses Teilbandsignal ist normalerweise f¨ ur den Hauptanteil des Signals zust¨andig und weist die gr¨ oßten DTWT-Werte und die geringste St¨orung auf (kleinste Bandbreite). Die Anwendung einer Nichtlinearit¨at auf dieses Teilbandsignal f¨ uhrt daher eher zu Signalverzerrungen, als zu einer Verbesserung des Entst¨ orverhaltens. Als Wavelets kommen orthonormierte Funktionen zum Einsatz, die eine besonders gute Konzentration der DTWT-Koeffizienten f¨ ur eine große Klasse von Signalen (ausgenommen weißes Rauschen) besitzen. Die Impulsantworten der Filter der Zweikanalfilterbank f¨ ur diese Wavelets sind relativ kurz (typisch L = 24) und die ¨ Betragsfrequenzg¨ange von Tiefpaß und Hochpaß weisen eine sehr starke Uberlappung auf. Es sind also f¨ ur die Wirkung der Entst¨ orung keine sonderlich guten Filter notwendig. Dieser Sachverhalt erstaunt nur, wenn die Wavelet-Transformation in ihrer Funktion als klassische Filterbank gesehen wird und nicht, wenn man Wavelets als Mittel zur kompakten Signaldarstellung, die nur wenige Koeffizienten und

170

5 Multiratenfilterb¨anke und Wavelets

Basisfunktionen ben¨otigt, betrachtet. Der Anreiz f¨ ur die Anwendung von Wavelets liegt in der Kombination dieser guten Eigenschaften mit der M¨oglichkeit einer sehr effizienten Implementierung mit kritisch abgetasteten Filterb¨anken! Die Wavelet-Transformation ist nat¨ urlich kein universelles Heilmittel f¨ ur alle gest¨ orten Signale. So k¨onnen beispielsweise Sprachsignale, die selbst rauschartige Komponenten enthalten, nur schlecht mit Wavelet Shrinkage entst¨ort werden. Die Anwendbarkeit beschr¨ankt sich haupts¨ achlich auf relativ glatte Nutzsignale, die jedoch auch Sprungstellen enthalten k¨ onnen. Aufgabe 5.9 Wenn Sie sich selbst ein Bild von der Leistungsf¨ahigkeit des WaveletSchrumpfens machen wollen, dann sind Experimente mit der Funktion wt_dn() und verschiedenen Signalen und St¨ orpegeln empfehlenswert. Versuchen Sie die folgenden, mit weißem Rauschen u ¨berlagerten Signale zu entst¨oren. Variieren Sie dabei die Kanalanzahl N und die Leistung des St¨orsignals. a) Vokalische Sprachlaute oder eine Singstimme. b) Signale mit Sprungstellen. c) Tiefpaß- oder bandpaßgefiltertes weißes Rauschen. d) Random Walk Signal: x(n) = x(n − 1) + r(n)σ(n),

n = 0, 1, 2, . . .

(x(−1) = 0, r(n) ist ein mittelwertfreies, gaußsches Rauschen, σ(n) ist die zeitdiskrete Sprungfunktion).

5.3 Wavelet-Transformation

171

Noisy Chirp-Signal x(n) 1 0 -1 0

200

400

600

800

1000

1200

1400

1600

1800

2000

1600

1800

2000

Index n Denoised Chirp-Signal y(n) 1 0 -1 0

200

400

600

800

1000

1200

1400

Index n

Abbildung 5.22: Sinusf¨ ormiges, verrauschtes Chirp-Signal und mit DTWTAnalyse/Synthesebank entst¨ ortes Signal (SNR = 15 dB, N = 6 Filterbankkan¨ale)

172

5 Multiratenfilterb¨anke und Wavelets

6 Anwendungen aus dem Bereich der Audiotechnik In diesem Kapitel werden ausgew¨ ahlte Anwendungen der digitalen Verarbeitung von Audiosignalen behandelt, die in erster Linie als Anregungen zu umfangreicheren Projektarbeiten in MATLABr -Seminaren oder Vertiefungsf¨achern auf dem Gebiet der digitalen Signalverarbeitung zu verstehen sind. Ein wesentlicher Grund f¨ ur die Beschr¨ankung auf Audioanwendungen ist die Erfahrung, daß diese auf Studenten einen besonderen Reiz und eine st¨ arkere Motivation zum Erlernen der Methoden aus¨ uben, als z.B. der Entwurf digitaler Filter. Die Beurteilung der Qualit¨ at einer Probleml¨osung in der Audiotechnik durch das menschliche Geh¨or ist ein sehr u uhrungen von interessanten Verfahren der Au¨berzeugender Maßstab. Vorf¨ diosignalverarbeitung ziehen daher meist ein gr¨ oßeres Publikum an, als etwa die Pr¨ asentation der Ergebnisse eines geschickten Filterentwurfs. Der Nachteil der Implementierung von Audioanwendungen mit MATLABr ist die relativ lange Rechenzeit. Das k¨ onnte aber auch der Anlaß sein, sich Simulationen genau zu u ¨berlegen und bei der Auswahl der Parameter auch eine vereinfachte Analyse per Hand vorzunehmen. Zus¨ atzlich ist der Anreiz gegeben, ausgehend von der L¨ osung mit MATLABr auch eine andere Programmierung, z.B. in C, anzustreben. Der Schritt von MATLABr zu C (oder C++) ist nicht allzu groß und hat bei der Programmentwicklung den Vorteil, daß die MATLABr -Simulationsergebnisse als Referenz zum Testen des C-Programms dienen k¨ onnen. Die Einf¨ uhrung in die einzelnen Problemstellungen beschr¨ankt sich auf die wesentlichen Erl¨auterungen und soll zum Studium der angef¨ uhrten Fachliteratur animieren, wo die Details zu den eingesetzten Algorithmen dargestellt werden. F¨ ur alle Aufgaben gibt es L¨ osungen des Autors, die u ¨ber das Internet zug¨anglich

174

6 Anwendungen aus dem Bereich der Audiotechnik

Xk (m)

Modifikation

ˆ k (m) X

k = 0, 1, . . . , N − 1

IDFT (Synthese)

x(n)

DFT (Analyse)

sind. Die Anwendungen zeigen in erster Linie den Einsatz von u ¨berabgetasteten DFT-Filterb¨anken und bieten ein weites Bet¨ atigungsfeld zur Vertiefung der Programmierk¨ unste in MATLABr . Die sehr effizienten DFT-Filterb¨anke beruhen auf uhrder Kurzzeit-Fouriertransformation (STFT) und sind im Abschnitt 5.2 ausf¨ lich dargestellt. Die Grundstruktur, dessen Blockdiagramm in Abb. 6.1 gezeigt ist, ist f¨ ur alle vorgestellten Anwendungen gleich. Die Modifikationen der spektralen Komponenten Xk (m) werden der jeweiligen Anwendung angepaßt.

x ˆ(n)

Abbildung 6.1: Blockschaltbild der DFT-Analyse- und Synthesefilterbank mit Modifikation der spektralen Komponenten Xk (m) in N Kan¨alen

6.1 6.1.1

Pitch- und Zeitskalierung mit der DFT-Filterbank Pitch-Skalierung

Die Ver¨ anderung der Tonh¨ ohe von Audiosignalen hat zahlreiche Anwendungen und ist aus der Sicht der Signalverarbeitung eine durchaus anspruchsvolle Pro¨ blemstellung. Einen Uberblick und eine einheitliche Darstellung der verschiedenen Methoden kann in [42] nachgelesen werden. An naheliegendsten w¨are eine Modifikation des Signals durch eine Verschiebung des Signalspektrums entlang der Frequenzachse, die mit Hilfe einer Einseitenbandmodulation digital einfach zu realisieren ist. Leider zerst¨ ort die Translation entlang der Frequenzachse die Oberwellenstruktur vokalischer Sprachlaute oder den Klang von Musikinstrumenten. Besser ist eine Tonh¨ohen¨ anderung durch eine Dehnung oder Kompression der Frequenzachse (Pitch-Skalierung). Unter Pitch versteht man in der Audiotechnik die Tonh¨ ohe, also z.B. die Grundfrequenz der Stimmbandschwingungen, aber auch die Stimmung eines Musikinstruments. Aus der Sicht der Signalverarbeitung bedeutet Pitch-Scaling demnach eine Multiplikation aller Frequenzen eines Spektrums mit einem (konstanten) Faktor. Diese Frequenzskalierung entspricht bei Sprache oder Gesang nicht exakt einer

6.1 Pitch- und Zeitskalierung mit der DFT-Filterbank

175

Pitch-Skalierung, da neben den Stimmbandschwingungen auch noch die Resonanzen des Vokaltrakts ver¨ andert werden. Man erh¨ alt daher bei starker Dehnung der Frequenzachse nicht unbedingt eine attraktive weibliche Stimme aus einer m¨annlichen Stimme. Die Frequenzskalierung, wie sie hier verwendet werden soll, kann z.B. nicht durch Abspielen einer Tonbandaufzeichnung mit gr¨ oßerer oder kleinerer Geschwindigkeit erzielt werden, da dabei auch die Zeitachse skaliert wird. Will man nur die Zeitachse skalieren (Schnell- oder Langsamsprechen), so kann das bei gespeicherten Signalen ebenfalls sehr einfach mit einer FFT-Filterbank realisiert werden (siehe Abschnitt 6.1.2). Sollen bei der Frequenzskalierung alle Frequenzen mit einem konstanten Faktor im sinnvollen Bereich [0.5, 2] multipliziert werden, dann ist bei der FFT-Filterbank zu beachten, daß die neuen Frequenzen nicht mehr auf dem Frequenzraster der FFT liegen, also an Vielfachen von fs /N (Abtastfrequenz fs , FFT-L¨ange N ) auftreten. Um Frequenzen um beliebige Faktoren im Intervall [0.5, 2] zu modifizieren, bedarf es der Darstellung der Spektralkomponenten Xk (m) am Ausgang der Analysefilterbank nach Betrag und Phase in der Form Xk (m) = |Xk (m)| ejϕk (m) ,

(6.1)

mit dem Frequenzindex k = 0, 1, . . . , N − 1 (bzw. N/2 bei reellwertigen Signalen) und dem Frame-Zeitindex m. ϕk (m) wird auch als Augenblicksphase oder Momentanphase (Instantaneous Phase) der k-ten Frequenzkomponente bezeichnet. Der Vorteil dieser Darstellung ist, daß bei kurzzeitstation¨aren Signalen die Phasen¨anderung von Frame zu Frame f¨ ur den Fall, daß der Abstand M der Frames klein ist (große Block¨ uberlappung), linearisiert werden kann: ϕk (m) = ϕk (m − 1) + ωk (m)M + 2πl,

(6.2)

mit der sogenannten Momentanfrequenz (Instantaneous Frequency) ωk (m) und einem (zun¨achst unbekannten) Vielfachen von 2π. Zur Bestimmung der Momentanfrequenz wird angenommen, daß sich im Filterbankkanal mit dem Index k eine Pitch-Harmonische befindet. Dann entspricht ωk (m) der Frequenz dieser ¨ Harmonischen. Andert sich die Pitch-Frequenz von Frame zu Frame nur langsam, dann wird auch die Momentanfrequenz im betreffenden Filterbankkanal nur eine ¨ geringe zeitliche Anderung aufweisen. Jeder Filterbankkanal stellt einen Bandpaßkanal dar, so daß die Abweichung der Momentanfrequenz von der Mittenfrequenz θk = 2πk/N des Kanals beschr¨ ankt ist: |ωk (m) − θk |
pi); diffph(ii) = diffph(ii) - 2*pi; ii = find(diffph < -pi); diffph(ii) = diffph(ii) + 2*pi; % compute instantaneous frequencies ana_freq = freq + c1*diffph; % pitch scaling by decimating/interpolating of frequency bins ana_mag = abs(X); syn_mag = ana_mag(ks); syn_freq = scale*ana_freq(ks); % synthesis step, and synthesis filter bank syn_phase = rem(syn_phase + M*syn_freq,2*pi);

6.1 Pitch- und Zeitskalierung mit der DFT-Filterbank

179

X = syn_mag .* exp(j*syn_phase); X = [X ; Zpad]; X = [X ; conj(X(Nh-1:-1:2))]; y1 = real(ifft(X,Nf)); y(m:m+N-1) = y(m:m+N-1) + y1(1:N).*h; end

6.1.2

Zeitskalierung

Bei der Zeitskalierung wird die Zeitachse gedehnt oder komprimiert, so daß sich die Signall¨ange ¨andert. Im Gegensatz zur Pitch-Skalierung ist diese Modifikation daher nur bei gespeicherten Signalen m¨ oglich. Die naheliegende Modifikation der Zeitachse w¨are eine Ver¨ anderung der Abtastrate. Dieser Schritt entspricht der Wiedergabe einer Tonbandaufzeichnung mit einer Geschwindigkeit, die von der Aufnahmegeschwindigkeit abweicht. Der bekannte Effekt dabei ist jedoch die gleichzeitige Ver¨anderung der Frequenzlage.2 Bei der DFT-Filterbank l¨ aßt sich diese Frequenz¨ anderung (¨ahnlich wie die ge¨ wollte Anderung bei der Pitch-Skalierung) sehr einfach kompensieren. Die Frage ist nur, wie man bei der DFT-Filterbank die Zeitachse ver¨andert. Die Antwort ¨ ist einfach: Die Zeitskala wird durch die Uberlappung der Bl¨ocke bestimmt (siehe dazu Abb. 5.6 auf Seite 145 bzw. Abb. 5.7 auf Seite 146). Wird nun eine unterschiedliche Block¨ uberlappung f¨ ur Analyse- und Synthesefilterbank gew¨ahlt, dann kann die Signaldauer entsprechend dem Zeitskalierungsfaktor ver¨andert werden. Die Eingriffe in das bereits vorgestellte Programm zur Pitch-Skalierung sind gering und im nachfolgenden Programmausdruck angegeben. Damit auch bei einer Zeitdehnung um den Faktor 2 noch eine gen¨ ugende Block¨ uberlappung in der Syntheseseite vorhanden ist, wird die DFT-Filterbank um den Faktor 8 u ¨berabge¨ tastet. Bei der Zeitkompression k¨ onnte man die Uberabtastung auf den Faktor 4 reduzieren und damit die Rechenzeit verk¨ urzen. function y = time_scale(x,scale,N) % function y = time_scale(x,scale,N) % % time scaling of audio signals using an FFT filter bank % % x real-valued input signal (row, or column vector) % scale pitch scale factor in [0.5,2] % N time window length % y output signal 2 Wenn Ihr MATLABr -Rechner eine Audioausgabe unterst¨ utzt, dann k¨ onnen Sie sich mit der Funktion sound(x,Fs) ein Signal x mit verschiedenen Abtastraten Fs anh¨ oren.

180

6 Anwendungen aus dem Bereich der Audiotechnik

% % G. Doblinger, TU-Wien, 02-2001 M = round(N/8); Ms = round(scale*M);

% decimation factor (frame hop size) % synthesis stage decimation factor

disp(sprintf(’actual scaling factor = %d/%d = %f’, Ms, M, Ms/M)); h = hanning(N); h = 2*sqrt(sqrt(M*Ms)/N)*h(:);

% time window function

Nf = 2^ceil(log2(N)); Nh = Nf/2+1;

% FFT length (power of 2 >= N)

x = [x(:) ; zeros(N-length(x),1)]; nsig = length(x);

% append zeros, if necessary

% initialize variables ana_phase = zeros(Nh,1); syn_phase = zeros(Nh,1); freq = 2*pi/N*[0:Nh-1]’; c1 = 1/M; diffph0 = M*freq; Ny = N+ceil((nsig-N)/M*Ms); y = zeros(Ny,1); ms = 1;

% length of output signal % ms = synthesis stage frame index

for m = 1:M:nsig-N+1

% analysis frame index loop

% analysis filter bank X = fft(x(m:m+N-1).*h,Nf); X = X(1:Nh); % compute instantaneous phase ana_phase ph = atan2(imag(X),real(X)); diffph = ph - ana_phase - diffph0; ana_phase = ph; % limit differential phase to [-pi,pi] diffph = rem(diffph,2*pi); ii = find(diffph > pi);

% MATLAB modulo operation

6.1 Pitch- und Zeitskalierung mit der DFT-Filterbank diffph(ii) = diffph(ii) - 2*pi; ii = find(diffph < -pi); diffph(ii) = diffph(ii) + 2*pi; % compute instantaneous frequencies inst_freq = freq + c1*diffph; % compute synthesis phase and modified spectrum syn_phase = rem(syn_phase + Ms*inst_freq,2*pi); X = abs(X) .* exp(j*syn_phase); X = [X ; conj(X(Nh-1:-1:2))]; % synthesis filter bank y1 = real(ifft(X,Nf)); y(ms:ms+N-1) = y(ms:ms+N-1) + y1(1:N).*h; ms = ms + Ms; % update synthesis stage frame index end

Aufgabe 6.1 Die vorgestellten Algorithmen bieten ein weites Feld f¨ ur Experimente und Verbesserungen. Bei den Tests mit Sprachsignalen werden Sie feststellen, daß neben der Zeit- oder Frequenzskalierung auch ein geringer Nachhall zu h¨oren ist. Bei Musiksignalen f¨ allt dieser Effekt nicht so stark auf. Der Effekt wird deutlicher, wenn die L¨ange des Zeitfensters erh¨ oht wird. Um die Ursachen dieser Beobachtung aufzusp¨ uren, bestimmen Sie die Impulsantworten der Systeme. Da die Systeme zeitvariant sind, m¨ ussen dabei die Antworten auf δ(n − k)-Impulsen mit verschiedenen Verz¨ogerungszeiten k gemessen werden, um die zweidimensionale Impulsantwort h(n, k) zu erhalten (siehe Gl. 2.4 auf Seite 28). Testen Sie die Systeme mit Sinussignalen und pr¨ ufen Sie, ob die Amplituden der Ausgangssignale konstant sind oder eine Modulation aufweisen. Wiederholen Sie dieses Experiment mit Chirp-Signalen und versuchen Sie eine optimale Zeitfensterl¨ ange zu bestimmen. Versuchen Sie die Ergebnisse der Experimente zu interpretieren.

181

182

6.2

6 Anwendungen aus dem Bereich der Audiotechnik

Entst¨ orung verrauschter Audiosignale

ˆ k (m) X

Xk (m)

gk (m)

IDFT (Synthese)

s(n) + w(n)

DFT (Analyse)

Ein vielfacher Wunsch von Liebhabern alter Tonaufzeichnungen ist die Unterdr¨ uckung von St¨orungen, die der Musikaufnahme zwar eine gewisse “Patina” geben, das Abh¨oren aber doch mehr oder weniger stark beeintr¨achtigen. Vereinzelte impulsf¨ ormige St¨orungen (Knacklaute) kann ein Signalverarbeiter auch manuell mit einem guten Signaleditor entfernen.3 Bei rauschartigen St¨orungen geht die St¨ orungsunterdr¨ uckung nur mehr mit ausgefeilten Algorithmen der digitalen Signalverarbeitung. Im folgenden Abschnitt wird daher ein Verfahren behandelt, das besonders bei Musiksignalen, die mit m¨ aßig starkem Platten- oder Tonbandrauschen gest¨ort sind, sehr gute Ergebnisse liefert. Diese Ergebnisse lassen sich jedoch nur dann erzielen, wenn die St¨ orung einigermaßen station¨ar ist und man die St¨orsignalparameter (Leistungsdichtespektrum) z.B. in einem Pausenintervall sch¨atzen kann. Dieser Fall ist bei alten Tonaufzeichnungen h¨ aufig gegeben, da Platten- oder Tonbandrauschen ziemlich konstant ist und f¨ ur die Messung des Rauschspektrums einige 100 ms am Beginn der Aufzeichnung ausreichen. Das Verfahren ist mit weniger guten Ergebnissen auch f¨ ur Sprache geeignet. Allerdings sind Sprachsignale meistens durch Umgebungsger¨ ausche gest¨ ort, die stark nichtstation¨ar sind. Die Messung der St¨orspektren ist daher nur mit relativ großen Fehlern m¨oglich und beeintr¨ achtigt daher die Qualit¨ at der Entst¨ orung. Das hier behandelte Verfahren beruht wieder auch der STFT, die effizient mit der DFT-Filterbank realisiert wird. Zur Unterdr¨ uckung von St¨orungen wird die STFT XST (k, m) = Xk (m) des verrauschten Signals mit reellwertigen, positiven Faktoren gk (m) multipliziert. Mit diesen modifizierten spektralen Komponenten wird danach das Zeitsignal rekonstruiert (siehe Abb. 6.2).

sˆ(n)

k = 0, 1, . . . , N − 1

Abbildung 6.2: Blockschaltbild der N -Kanal DFT-Analyse- und Synthesefilterbank zur Signalentst¨orung Die Faktoren gk (m) werden f¨ ur jeden Block (Frame) m und Kanal k berechnet und nehmen dort Werte nahe 1 an, wo das Nutzsignal s(n) stark vertreten ist. In 3 Eine sehr gute Darstellung verschiedener automatischer Verfahren zur Unterdr¨ uckung von Impulsst¨ orungen (und anderer unerw¨ unschter Einfl¨ usse) findet man in [43].

6.2 Entst¨orung verrauschter Audiosignale

183

Bereichen der Zeit-Frequenzebene mit starken St¨ oranteilen wird gk (m) hingegen ¨ kleine Werte aufweisen. Dabei wird der Ubergang von gk (m) ≈ 1 auf gk (m) ≈ 0 nicht abrupt, sondern graduell nach einer bestimmten Abschw¨achungscharakteristik erfolgen. Diese plausiblen Vermutungen werden durch eine eingehende Analyse mit Methoden der Parametersch¨ atzung best¨ atigt, die hier in den Grundz¨ ugen erl¨ autert werden sollen. Die Aufgabe besteht in einer m¨ oglichst guten Sch¨atzung des Betrags (Amplitude) Ak (m) der STFT des Nutzsignals s(n) anhand der STFT des gest¨orten Signals Xk (m) = Ak (m)ejϕk (m) + Wk (m), k = 0, 1, . . . , N − 1. (6.10)

(Wk (m) ist die STFT des additiven St¨ orsignals). Bei diesem Ansatz wird nur die Amplitude Ak (m) der STFT modifiziert und die Phase ϕk (m) bleibt unver¨andert, da bei der geh¨orm¨aßigen Wahrnehmung in erster Linie die Amplitudeninformation maßgebend ist. F¨ ur die Sch¨ atzung Aˆk (m) der STFT-Amplitude kann eine Reihe statistischer Verfahren angewendet werden, von denen sich Bayes-Sch¨ atzer besonders hervorheben [44]. Bayes-Sch¨ atzer (MMSE-Sch¨ atzer) minimieren den mittleren quadratischen Fehler  2  E Ak (m) − Aˆk (m) (6.11)

f¨ ur jeden Frame m und Kanal k unter Verwendung von Vorausinformation in Form von Wahrscheinlichkeitsdichtefunktionen. Diese Vorausinformation (a priori Wissen) kann in der Praxis nur in wenigen F¨ allen bestimmt werden, so daß man gerne auf ein statistisches Modell mit unabh¨ angigen, gaußschen Zufallsvariablen zur¨ uckgreift. In diesem Fall kann der MMSE-Sch¨atzer Aˆk (m) auch analytisch berechnet werden. Die Ergebnisse der Herleitung, die in [45] durchgef¨ uhrt ist, sollen hier kurz angegeben werden. Sie bilden die Grundlage des verwendeten Entst¨orungsverfahrens. In den folgenden Beziehungen wird aus Gr¨ unden der ¨ Ubersichtlichkeit die Zeitabh¨ angigkeit (Frame-Index m) der Variablen weggelasatzer sen. Nach [45] ist der optimale Amplitudensch¨ Z ∞ Z 2π ak p(Xk |ak , ϕk )p(ak , ϕk )dϕk dak 0 0 Aˆk = E {Ak |Xk } = Z (6.12) Z ∞ 2π p(Xk |ak , ϕk )p(ak , ϕk )dϕk dak 0

0

mit den bedingten Wahrscheinlichkeitsdichtefunktionen p(Xk |ak , ϕk ) =

1 πPw (k)

und p(ak , ϕk ) = p(ak ) =

e−

|Xk −ak ejϕk |2 Pw (k)

a2 k ak e− Ps (k) πPs (k)

(6.13)

(6.14)

184

6 Anwendungen aus dem Bereich der Audiotechnik

Pw (k) bzw. Ps (k) sind die Leistungen (Varianzen) der spektralen Rausch- bzw. Nutzsignalkomponenten in den einzelnen Kan¨ alen. Eine geduldige Auswertung der Integrale liefert nach l¨angeren Manipulationen die gesuchten Gewichtungsfaktoren gk (m) der Filterbank in Abb. 6.2:  gk (m) = f Rpost k (m), Rprio k (m) √ s Rprio k (m) π 1 = G (vk (m)) , 2 1 + Rpost k (m) 1 + Rprio k (m)

(6.15)

mit −

G (vk (m)) = e

vk (m) 2



(1 + vk (m))I0



vk (m) 2



+ vk (m)I1



vk (m) 2



(6.16)

und

Rprio k (m) . (6.17) 1 + Rprio k (m) I0 bzw. I1 sind die modifizierten Besselfunktionen nullter und erster Ordnung. Die Variablen Rprio = PPws bzw. Rpost = PPwx − 1 werden nach [45] als a prior SNR bzw. a posteriori SNR bezeichnet. Die Bezeichnungen f¨ ur diese Gr¨oßen und deren Interpretation in [45] sind etwas verwirrend. Mehr Durchblick verschafft die Analyse der Bedeutung dieser Variablen in [46]. In Abb. 6.3 sind die Kurvenscharen von gk (m) nach Gl. 6.15 dargestellt. Alle Parameter sind im logarithmischen Maßstab (dB) aufgetragen. Der Kurvenparameter Rpost umfaßt 18 Werte, die im linearen Maßstab die Werte vk (m) = 1 + Rpost k (m)



Rpost ∈ {0.1, 0.3, 0.7, 1, 1.5, 2, 2.5, 3, 4, 5, 6, 8, 10, 12, 14, 16, 20, 30} (6.18) annehmen. Diese Skala u ur die Praxis relevanten Wertebereich. Die ¨berdeckt den f¨ dominante Variable f¨ ur den Faktor gk ist nach Abb. 6.3 Rprio = PPws . Wird die Nutzsignalleistung Ps im Kanal kleiner, dann wird auch gk reduziert. Die Feinabstimmung erfolgt durch den Parameter Rpost = PPwx − 1, der ein zu Rprio umgekehrtes Verhalten aufweist: Bei kleineren Nutzsignalleistungen wird eine flachere Abschw¨ achungscharakteristik ausgew¨ ahlt. Die Bedeutung dieses ungew¨ohnlichen Verhaltens ist in [46] genau analysiert. Wesentlich dabei ist der Unterschied zwischen Rprio und Rpost , die ja beide das SNR in jedem Kanal messen. In Rprio wird die unbekannte Leistung Ps der Nutzsignalkomponente verwendet, die im praktischen Einsatz anhand der Daten des vorhergegangenen Frames (Index m − 1) gesch¨ atzt wird. Hingegen wird Rpost mit der aktuellen Leistung Px der gest¨orten STFT-Komponente im aktuellen Frame (Index m) bestimmt. In [45] werden beide Parameter folgendermaßen gesch¨ atzt: ( 2 |Xk (m)|2 − 1 |Xk (m)| > Pw (k, m) ˆ Rpost (k, m) = Pw (k,m) (6.19) 0 sonst

6.2 Entst¨orung verrauschter Audiosignale

185

Kurvenparameter Rpost = Px / Pw − 1 in dB 10 0

gk in dB

−10 −20

−10

−30 −40 −50 −30

14.7712

−20

−10

0

R

prio

10

=P /P s

w

20

30

in dB

Abbildung 6.3: Beispiel der Abschw¨ achungscharakteristik f¨ ur die Faktoren gk (m) bei der Signalentst¨orung mit der DFT-Filterbank (Kurvenparameter 10 log10 Rpost mit Rpost aus Gl. 6.18)

und 2

ˆ prio (k, m) = (1 − α)R ˆ post (k, m) + α gk (m − 1) |Xk (m − 1)| . R Pw (k, m − 1)

(6.20)

usse des SNR-Sch¨atzwerDer Faktor α ≈ 0.97 . . . 0.99 in Gl. 6.20 gewichtet die Einfl¨ tes im vorangegangenen Frame und im aktuellen Frame. Durch die Ber¨ ucksichtiˆ prio (k, m) eine zeitliche Mittelung und gung aufeinanderfolgender Frames erf¨ ahrt R ˆ post (k, m) weniger stark schwanken. wird im Gegensatz zu R In Tabelle 6.2 sind die Gleichungen des Algorithmus zur Berechnung der Faktoren gk (m) zusammengestellt. Der Algorithmus muß in jedem Frame m f¨ ur die Frequenzindizes k = 0, 1, . . . , N2 ausgef¨ uhrt werden. Dabei ist der gr¨oßte Rechenaufwand nat¨ urlich die Berechnung der Abschw¨ achungskurven. F¨ ur den praktischen Einsatz ist es jedoch vollkommend ausreichend, diese Kurven als Tabellen vorauszuberechnen. Die Funktion f (·) (siehe auch Gl. 6.15) wird daher als Tabelle gespeichert, mit typisch 128 Werten f¨ ur rk und 18 Werten von Rpost (k) (siehe Gl. 6.18). Dabei wird abweichend zu Abb. 6.3 rk anstelle von Rprio (k) als Variable verwendet, da rk stets zwischen 0 und 1 liegt. Zur Steuerung der Rauschunterdr¨ uckung wird in Tabelle 6.2 rk (m) nach unten auf ρ ≈ 0.01 . . . 0.05 begrenzt. Damit wird erreicht, daß ein geringf¨ ugiges Restrauschen am Systemausgang vorhanden ist, das

186

6 Anwendungen aus dem Bereich der Audiotechnik

Tabelle 6.2: Algorithmus zur Berechnung der Gewichtungsfaktoren gk (m) N = |Xk (m)|2 k = 0, 1, . . . , 2   P (k, m) x ˆ post (k, m) = max 0, R −1 Pw (k, m) ˆ prio (k, m) = (1 − α)R ˆ post (k, m) + α gk (m − 1)Px (k, m − 1) R Pw (k, m − 1) ! ˆ prio (k, m) R rk (m) = max ρ, ˆ prio (k, m) 1+R   ˆ post (k, m), rk (m) gk (m) = f R Px (k, m)

einerseits Artefakte (“Musical Tones”) im entst¨ orten Signal verdeckt. Andererseits wird durch die Begrenzung von rk (m) (und damit auch von gk (m)) das Nutzsignal nicht zu stark beeintr¨achtigt. Das folgende Programm zeigt die Implementierung des Signalentst¨orungssystems mit MATLABr . Nach der Berechnung der Tabelle (Matrix G) f¨ ur die Abschw¨ achungskurven wird die spektrale Rauschleistung Pw (k) f¨ ur jeden Frequenzpunkt durch Mittelung der STFT-Betragsquadrate u ¨ber alle Frames bestimmt. Dazu muß mit w ein St¨ uck Rauschsignal zur Verf¨ ugung stehen, das z.B. einer Pause entnommen werden kann. F¨ ur den Entst¨ orungsalgorithmus wird als Rauschinformation nur mehr Pw (k) (evt. geringf¨ ugig verst¨ arkt mit A2w ) weiterverwendet, d.h. das Rauschen wird als station¨ ar angenommen. Das Rauschspektrum kann weißes oder gef¨arbtes Rauschen (Rosarauschen, z.B. 1/f -Rauschen) umfassen. In der Filterbankroutine des Programms, die in der Grundstruktur jener der Programme f¨ ur die Pitch- und Zeitskalierung entspricht, erfolgt die Modifikation der spektralen Amplituden nach Tabelle 6.2. F¨ ur die Berechnung der Faktoren gk (m) werden zun¨achst mit r (rk (m)) die Spaltenindizes von G ermittelt, da die Abschw¨ achungskurven als Zeilen von G gespeichert sind. Im Anschluß daran wird ˆ post (k, m)) der Index des am n¨achsten liegenden anhand des gemessenen SNR (R Wertes zum Vektor Rpost (Rpost nach Gl. 6.18) berechnet. Dieser Index selektiert die entsprechende Zeile in G und w¨ ahlt damit die passende Abschw¨achungscharakteristik aus der gespeicherten Kurvenschar aus.

6.2 Entst¨orung verrauschter Audiosignale

187

function y = enhance(x,w,N,alpha,rho,Aw) % function y = enhance(x,w,N,alpha,rho,Aw) % % signal enhancement using an FFT-filter bank and Ephraim-Malah gain curves % (assuming stationary, additive noise) % % x noisy, real-valued input signal % w noise sequence used to estimate noise spectral power density % N time window length % alpha parameter in [0,1] for a priori SNR estimate (typ. 0.985) % rho minimum of a priori parameter r = SNR/(1+SNR) (typ. 0.015) % Aw gain for noise spectral power density (typ. 1...1.2) % y de-noised signal % % G. Doblinger, TU-Wien, 12-1994 if nargin == 0 help enhance return end if alpha < 0 | alpha > 1 error(’alpha must be in [0,1]’); end alpha1 = 1-alpha; M = round(N/4); % decimation factor (frame hop size) h = hanning(N); % time window function h = 2*sqrt(M/N)*h(:); Nf = 2^ceil(log2(N)); % FFT length (power of 2 >= N) Nh = Nf/2+1; x = [x(:) ; zeros(N-length(x),1)]; % append zeros, if necessary Nx = length(x); w = [w(:) ; zeros(N-length(w),1)]; Nw = length(w); % compute gain factor matrix G of Ephraim-Malah gain curves Nrp = 18; % number of gain curves Nr = 128; % number of points per gain curve Nr1 = Nr-1; Rprio_min_dB = -30; % min, max dB-values for Rprio Rprio_max_dB = 30; Rprio_min = 10^(Rprio_min_dB/10); Rprio_max = 10^(Rprio_max_dB/10); Rpost = [0.1;0.3;0.7;1;1.5;2;2.5;3;4;5;6;8;10;12;14;16;20;30]; r = linspace(Rprio_min/(1+Rprio_min),Rprio_max/(1+Rprio_max),Nr); % r = Rprio/(1+Rprio)

188

6 Anwendungen aus dem Bereich der Audiotechnik

V = (1+Rpost)*r; G = 0.5*sqrt(pi*(1./(1+Rpost))*r).*exp(-0.5*V).*... real((1+V).*besseli(0,0.5*V) + V.*besseli(1,0.5*V)); G = G/max(max(G’)); % compute estimate of noise spectral power density Pw = zeros(Nh,1); for m = 1:M:Nw-N+1 X = fft(w(m:m+N-1).*h,Nf); Pw = Pw + abs(X(1:Nh)).^2; end Nfr = ceil(Nw/M); Pw = Aw^2/Nfr*Pw + eps; y = zeros(Nx,1); gain = zeros(Nh,1); Px = zeros(Nh,1);

% frame index loop % sum of squared magnitudes

% apply gain and number of frames

% enhancement of signal frames for m = 1:M:Nx-N+1 % analysis filter bank X = fft(x(m:m+N-1).*h,Nf); % compute gain factor, modify STFT Pprio = alpha*Px.*gain.^2; Px = abs(X(1:Nh)).^2; Ppost = max(0,Px - Pw); Pprio = Pprio + alpha1*Ppost; r = max(rho,Pprio./(Pprio+Pw)); ic = 1 + round(Nr1*r); SNR = Ppost ./ Pw;

% new STFT squared magnitude % estimated power for a priori SNR % column index for gain matrix % estimated a posteriori SNR

for k=1:Nh % gain factor table look-up [dum,ir] = min(abs(SNR(k)-Rpost)); % find index of nearest Rpost % (row index of gain matrix) gain(k) = G(ir,ic(k)); end X = X .* [gain ; gain(Nh-1:-1:2)]; % apply gain factor y1 = real(ifft(X,Nf)); % DFT synthesis filter bank y(m:m+N-1) = y(m:m+N-1) + y1(1:N).*h; end

6.2 Entst¨orung verrauschter Audiosignale

189

Das Testen des Programms kann beispielsweise mit den folgenden MATLABr Befehlen durchgef¨ uhrt werden: [x,Fs] = wavread(’quanto_e_bella.wav’); % load a piece of music N = 1024; % FFT window size (suitable for % sampling freq. Fs = 16 kHz) SNR = 20; % SNR in dB of noisy signal w = randn(size(x)); w = (norm(x)/norm(w)) *10^(-SNR/20) * w; xn = x + w; % add noise y = enhance(xn,w,N,0.985,0.015,1); sound(xn,Fs) % play noisy signal sound(y,Fs) % play enhanced signal

Aufgabe 6.2 Mit dem angegebenen Signalentst¨ orungsverfahren k¨onnen eine Reihe von Experimenten ausgef¨ uhrt werden. Speziell die richtige Wahl der Parameter hat einen starken Einfluß auf die Qualit¨ at des entst¨orten Signals. Die Parameterwahl sollte mit einer Auswahl einiger Musik- oder Sprachsignalproben vorgenommen werden. Abtastfrequenzen von 11.025 kHz, 16 kHz oder maximal 22.05 kHz sind gegen¨ uber 44.1 kHz zu bevorzugen, um die Signall¨angen (und damit die Rechenzeit) relativ kurz zu halten. Bei Musiksignalen wird man ein Zeitfenster im Bereich von 40 ms bis 60 ms w¨ahlen, w¨ahrend bei Sprachsignalen die Dauer des Zeitfensters um 20 ms liegt. Dementsprechend sind die Fensterl¨ angen N an das Testmaterial anzupassen. Folgende Untersuchungen k¨ onnen als Anregung dienen: a) Bei welchem SNR am Eingang des Systems verschlechtert sich das Systemverhalten drastisch? b) Berechnen Sie mit der MATLABr -Funktion specgram() die Spektrogramme des verrauschten Eingangssignals und des entst¨orten Signals. Beobachten Sie dabei die zeitvariante Filterfunktion des Systems. c) Wie ist das Systemverhalten, wenn Sie ¨ ahnlich wie mit der WaveletTransformation auf Seite 169 ein verrauschtes Chirp-Signal verarbeiten?

190

6 Anwendungen aus dem Bereich der Audiotechnik Aufgabe 6.3 In dieser Aufgabe sollen drei Experimente zur Bestimmung der Verformung des entst¨orten Signals durch den Rauschunterdr¨ uckungsalgorithmus durchgef¨ uhrt werden. Diese Untersuchungen sind insbesondere bei der Restaurierung gest¨ orter Musikaufnahmen von Bedeutung. Die Ergebnisse sollen in erster Linie der richtigen Wahl der Parameter N , α und ρ des Algorithmus von Tabelle 6.2 dienen. Eine analytische Behandlung zu dieser Problematik kann in [47] nachgelesen werden. a) Verwenden Sie verrauschte Sinussignale mit konstanter Amplitude und Frequenzen von 400 Hz, 1 kHz und 3 kHz zur Bestimmung der jeweiligen Grenze, ab der das System diese T¨one unterdr¨ uckt, obwohl sie im verrauschten Signal noch h¨ orbar sind. Versuchen Sie eine optimale Wahl der Parameter zu finden und testen Sie das Ergebnis mit leiser Musik (z.B. zarte Geigen- oder langgezogene Fl¨otent¨one). b) Mit diesem Experiment soll das Einschwingverhalten des Entst¨orverfahrens analysiert werden. Dazu werden eingeschaltete, verrauschte Sinussignale mit den Frequenzen aus der vorhergehenden Teilaufgabe eingesetzt. Messen Sie das Ein- und Ausschwingverhalten (Dauer) des Systems in Abh¨ angigkeit von der Amplitude des Sinussignals und der Fensterdauer N . Testen Sie die H¨orbarkeit der transienten Verzerrungen mit hart angeschlagenen Klavieroder Gitarrenkl¨ angen. c) Untersuchen Sie die Modulation von Sinussignalen mit dem im betreffenden Filterbankkanal liegenden Rauschen. Ab welchem SNR am Systemeingang wird eine Klang¨ anderung durch das Restrauschen h¨orbar?

A Kurzbeschreibung der MATLAB Syntax r

In diesem Abschnitt werden die wesentlichen Merkmale der MATLABr -Syntax erl¨ autert, um f¨ ur Anf¨anger das Verst¨ andnis der Programmbeispiele dieses Bu¨ ches in einem raschen ersten Uberblick zu f¨ ordern. F¨ ur eine ausf¨ uhrliche Beschreibung und f¨ ur die Referenz der einzelnen Befehle ist nat¨ urlich die MATLABr Dokumentation vorzuziehen. Die Kurzfassung ist auf den MATLABr -Kern beschr¨ ankt, also auf jenen Teil der Programmiersprache, der f¨ ur die Umsetzung von Algorithmen in die MATLABr -Sprache erforderlich ist. Die Ein- und Ausgabe von Daten mit Files entspricht sehr gut der C-Syntax und wird hier nicht behandelt. Ebenso wird nicht auf die umfangreichen M¨ oglichkeiten zur graphischen Darstellung von Daten und auf die Programmierung graphischer Benutzeroberfl¨ achen eingegangen. Hier muß auf die umfangreiche MATLABr -Dokumentation verwiesen werden. Ferner muß auch auf die Darstellung der Beschleunigung von MATLABr -Programmen durch Anwendung von MEX-Files und MATLABr -Compiler zur Generierung eigenst¨ andiger Programme verzichtet werden. Diese Erweiterungen von MATLABr sollten erst mit ausreichenden MATLABr -Kenntnissen eingesetzt werden. Außerdem m¨ ussen diese Programme an die jeweils eingesetzte Rechnerarchitektur angepaßt werden, so daß der große Vorteil von MATLABr , n¨ amlich die unmittelbare Ausf¨ uhrbarkeit von M-Files auf allen unterst¨ utzten Rechnern, verloren geht.

A Kurzbeschreibung der MATLABr Syntax

192

A.1

Vektoren und Matrizen

In MATLABr sind die grundlegenden Datentypen (Objekte) im allgemeinen Fall zweidimensionale, komplexwertige Matrizen. Dar¨ uber hinaus gibt es wie in der Programmiersprache C auch mehrdimensionale Arrays und Strukturen. Die Rechenregeln sind automatisch auf diese Objekte zugeschnitten und entsprechen den in der Mathematik gewohnten Operationen. Objekte unterschiedlicher Dimension k¨ onnen verkn¨ upft werden (z.B. Skalare mit Vektoren etc.), sofern die Operation arithmetisch sinnvoll ist. Bei nichterlaubten Verkn¨ upfungen antwortet MATLABr mit Fehlermeldungen. Meistens gen¨ ugt dann die Kontrolle der Dimensionen mit size(), um z.B. festzustellen, daß irrt¨ umlich eine 2 × 2 Matrix zu einer 3 × 3 Matrix addiert werden soll. Die Eingabe einer Matrix erfolgt beispielsweise in der Form A = [1 2 3; 4 5 6; 7 8 9] Wird die Eingabezeile nicht mit einem Strichpunkt abgeschlossen, dann erscheint die Matrix am Bildschirm: A = 1 4 7

2 5 8

3 6 9

Mit einem Strichpunkt am Ende der Eingabezeile wird die Matrix erzeugt, jedoch nicht ausgegeben. Es gibt einige spezielle Matrizen, die h¨aufig in den Beispielen vorkommen: A = eye(3); A = zeros(2,4); A = ones(5,1); A = ones(1,3); A = [];

3 × 3 Einheitsmatrix

2 × 4 Matrix aus Nullen

5 × 1 Matrix (Spaltenvektor) aus Einsen

1 × 3 Matrix (Zeilenvektor) aus Einsen

leere Matrix

Die Dimension einer Matrix wird mit size(A) festgestellt, wobei der erste ausgegebene Wert die Anzahl der Zeilen und der zweite Wert jene der Spalten ist. Bei Vektoren kann deren L¨ ange auch mit length(x) bestimmt werden. Die Selektion einzelner Matrixelemente erfolgt z.B. mit A(2,3). Wichtig ist dabei, daß Indizes nicht negativ oder null sind, d.h. die Z¨ahlung beginnt in MATLABr stets mit eins! Bei nichtganzzahligen Indizes wird gerundet und eine Warnung am Bildschirm ausgegeben. Im Fall komplexwertiger Indizes wird nur der Realteil verwendet und ebenfalls eine Warnung angezeigt. Indizes k¨onnen auch Vektoren sein, um Gruppen von Matrixelementen auszuw¨ahlen:

A.1 Vektoren und Matrizen

193

i1 = [1 3 2]; x = A(i1,1); Mit dem Indexvektor i1 werden aus A die Elemente A(1,1), A(3,1) und A(2,1) entnommen und in dieser Reihenfolge im Spaltenvektor x gespeichert. Man kann auch ganze Spalten oder Zeilen mit dem : Operator ausw¨ahlen, z.B. ergibt x = A(:,1) die erste Spalte von A, oder x = A(3,:) liefert die dritte Zeile von A. Der : Operator kann aber auch zum Inkrementieren eingesetzt werden, um in einfacher Weise Vektoren mit Zahlenwerten zu belegen. So erzeugt x = 1:10 einen Zeilenvektor mit den Zahlen 1 bis 10 als Elemente. Die Anweisung x = 0:2:10 liefert die geraden Zahlen von 0 bis einschließlich 10. Hingegen ergibt x = -1:0.1:1 die Zahlenfolge −1 − 0.9 − 0.8 . . . 1, gespeichert im Zeilenvektor x. Selbstverst¨andlich kann das Inkrement auch negativ sein. F¨ ur die Initialisierung von Vektoren mit einer vorgegebenen Anzahl von Werten ist die Funktion x = linspace(0,1,50) (50 ¨ aquidistante Werte von 0 . . . 1) oder x = logspace(0,5,50) (50 Werte in logarithmischer Unterteilung von 100 . . . 105 ) vorgesehen. Der : Operator hat schließlich noch eine weitere Aufgabe, n¨amlich das Aneinanderf¨ ugen aller Spalten einer Matrix zu einem langen Spaltenvektor. So kann mit x = A(:) der Spaltenvektor x erzeugt werden, indem an die erste Spalte von A die zweite angef¨ ugt wird usw. und das Ergebnis im Spaltenvektor x gespeichert wird. Ist y ein beliebiger Vektor, dann ist x = y(:) zwingend ein Spaltenvektor. Durch Verwendung von eckigen Klammern k¨onnen Matrizen zu gr¨oßeren Matrizen kombiniert werden, also Blockmatrizen erzeugt werden. So wird mit A = eye(10) B = zeros(5,10) und der Anweisung A = [A ; B] an die 10 × 10 dimensionale Einheitsmatrix A die 5 × 10 dimensionale Nullmatrix B angef¨ ugt (A ist dann eine 15 × 10 Matrix). Bei der Matrizenmultiplikation muß die innere Dimension u ¨bereinstimmen, d.h. die Anzahl der Spalten der ersten Matrix muß gleich der Anzahl der Zeilen der zweiten Matrix sein. Die Addition und Subtraktion erfordert f¨ ur beide Matrizen die gleichen Dimensionen, mit der Ausnahme, daß skalare Gr¨oßen mit jeder Matrix verkn¨ upft werden k¨ onnen (und zwar elementweise). Auch f¨ ur Multiplikation, Division (/) und Potenzoperation (^) gibt es in MATLABr die elementweise Verkn¨ upfung. So bedeutet z.B. C = A .* B, daß jeweils Elemente mit gleichen Indizes miteinander multipliziert werden. Im Gegensatz dazu wird mit C = A * B die u ur jedes ¨bliche Matrizenmultiplikation (Zeilenvektor mal Spaltenvektor f¨ Element) ausgef¨ uhrt. Die Potenzoperation kann z.B. mit x = 10.^[0:6] oder A = [1 2 3;4 5 6].^ [1 2 3;4 5 6] ebenfalls elementweise ausgef¨ uhrt werden. Ganzzahlige Potenzen von Matrizen werden in MATLABr durch wiederholte Multiplikation berechnet. F¨ ur andere Potenzen erfolgt die Berechnung u ¨ber die Eigenwertzerlegung der Matrix. Die Vergleichsoperationen < ≤ > ≥ ≡ 6≡ (< >= == ~=) wirken elementweise auf Matrizen. Das Ergebnis ist eine Matrix gleicher Dimension mit

A Kurzbeschreibung der MATLABr Syntax

194

Einselementen dort, wo die Bedingung erf¨ ullt ist und null sonst. In ¨ahnlicher Weise arbeiten die Logikoperationen UND ODER NICHT (& | ~) von MATLABr . Ferner gibt es auch Funktionen wie find(), any(), all(), mit denen Matrizen nach bestimmten Elementeigenschaften durchsucht werden k¨onnen: A = [1 2 3;4 5 6]; [i,j] = find(A >= 2 & A 1 |z| < 1 |z| > 1 |z| > 1 |z| > ρ |z| > ρ |z| > 1 |z| > 1 |z| > 1, α > 0 |z| > cos α α>0

B.5 Systeme mit Mehrfachtaktverarbeitung

B.5

211

Systeme mit Mehrfachtaktverarbeitung

¨ In den angegebenen Formeln sind der Unterabtastfaktor M und der Uberabtastfaktor L ganzzahlig.

⇐⇒

x(n)

X(ejθ ) X(z)

y(m) = x(M m)

y(m) =

(

x 0

m L

⇐⇒



m = 0, ±L, ±2L . . .

⇐⇒

sonst

M −1 1 X  j(θ′ −2πk)/M  X e M k=0 M −1   1 X Y (z) = X e−j2πk/M z 1/M M k=0  ′  ′ Y (ejθ ) = X ejθ L   Y (z) = X z L ′

Y (ejθ ) =

Polyphasenzerlegung: X(z) =

∞ X

x(n)z −n =

n=−∞

M −1 X

z −k Xk z M

k=0



mit Xk (z) =

∞ X

m=−∞

xk (m)z −m =

∞ X

x(M m + k)z −m ,

m=−∞

Fall M = 2:   X(z) = X0 z 2 + z −1 X1 z 2 X0 (z) =

∞ X

x(2m)z −m

m=−∞

X1 (z) =

∞ X

m=−∞

x(2m + 1)z −m

k = 0, 1, . . . , M − 1

212

B Formeln f¨ ur Fourier- und Z-Transformation

Elementare Vertauschungsoperationen

↓M

z −1



z −M

↓M

z −1

↓M



↓M

z− M

↑L

z −1



z− L

↑L

z −1

↑L



↑L

z −L

↑L

↓L



↓M

↑M



1

1

p(n) =

∞ X

k=−∞

δ(n − kM )

Literaturverzeichnis [1] A. V. Oppenheim, R. W. Schafer, Digital Signal Processing, Prentice-Hall, Inc., 1975. [2] G. H. Golub, C. F. Van Loan, Matrix Computations, The Johns Hopkins University Press, 1984. [3] A. V. Oppenheim and R. W. Schafer, Prentice-Hall, Inc., 1989.

Discrete-Time Signal Processing,

[4] H. W. Sch¨ ußler, Digitale Signalverarbeitung, Band I: Analyse diskreter Signale und Systeme, Springer-Verlag Berlin Heidelberg, 1994. [5] G. W. Stewart, Introduction to Matrix Computations, Academic Press, Inc., 1973. [6] B. P. Lathi, Linear Systems and Signals, Berkeley-Cambridge Press, 1992. [7] R. A. Roberts, C. T. Mullis, Digital Signal Processing, Addison-Wesley Publishing Company, 1987. [8] S. L. Marple Jr., Digital Spectral Analysis, Prentice-Hall, Inc., 1987. [9] K. D. Kammeyer, K. Kroschel, Digitale Signalverarbeitung: Filterung und ¨ Spektralanalyse mit MATLAB-Ubungen, Teubner Verlag Stuttgart, 1998. [10] L. R. Rabiner, B. Gold, Theory and Application of Digital Signal Processing, Prentice-Hall, Inc., 1975. [11] L. B. Jackson, Digital Filters and Signal Processing, Kluwer Academic Publishers, 1989. ußler, Digitale Signalverarbeitung, Band II, Buch in Vorbereitung, [12] H. W. Sch¨ 2001. [13] S. K. Mitra, Digital Signal Processing, A Computer-Based Approach, The McGraw-Hill Companies, Inc., 1998.

214

Literaturverzeichnis

[14] Mathias Lang, Algorithms for the Constrained Design of Digital Filters with Arbitrary Magnitude and Phase Responses, Ph.D. thesis, Vienna University of Technology, 1999. [15] W. F. G. Mecklenbr¨ auker, “Remarks on and correction to the impulse invariant method for the design of iir digital filters,” Signal Processing, vol. 80, pp. 1687–1690, 2000. [16] R. M. Lerner, “Band-pass filters with linear phase,” Proc. IEEE, vol. 52, pp. 249–268, March 1964. [17] C. M. Rader, B. Gold, “Digital filter design techniques in the frequency domain,” Proc. IEEE, vol. 55, pp. 149–171, Feb. 1967. [18] G. Doblinger, “An efficient algorithm for uniform and nonuniform digital filter banks,” in Proceedings of the 1991 IEEE International Symposium on Circuits and Systems (ISCAS’91), Singapore, June 1991, vol. 1, pp. 646–649. [19] A. G. Constantinides, “Spectral transformations for digital filters,” Proc. Inst. Elec. Eng., vol. 117, pp. 1585–1590, Aug. 1970. [20] L. R. Rabiner, R. W. Schafer, Digital Processing of Speech Signals, PrenticeHall, Inc., 1978. [21] P. Vary, U. Heute, W. Hess, Digitale Sprachsignalverarbeitung, Teubner Verlag Stuttgart, 1998. [22] P. P. Vaidyanathan, Multirate Systems and Filter Banks, Prentice-Hall, Inc., 1993. [23] J. H. Rothweiler, “Polyphase quadrature filters – a new subband coding technique,” in Proc. 1983 IEEE Int. Conf. ASSP, Boston, MA, March 1983, pp. 1280–1283. [24] P. L. Chu, “Quadrature mirror filter design for an arbitrary number of equal bandwidth channels,” IEEE Trans. Acoust., Speech, Signal Processing, vol. ASSP-33, pp. 203–218, Feb. 1985. [25] J. Masson, Z. Picel, “Flexible design of computationally efficient nearly perfect QMF filter banks,” in Proc. 1985 IEEE Int. Conf. ASSP, Tampa, FL, March 1985, pp. 541–544. [26] V. K. Jain, R. E. Crochiere, “Quadrature mirror filter design in the time domain,” IEEE Trans. Acoust., Speech, Signal Processing, vol. ASSP-32, pp. 353–361, April 1984.

Literaturverzeichnis

215

[27] C.-K. Chen, J.-H. Lee, “Design of quadrature mirror filters with linear phase in the frequency domain,” IEEE Trans. Circuits and Systems – II, vol. 39, pp. 593–605, Sept. 1992. [28] H. Xu, W. S. Lu, A. Antoniou, “Efficient iterative design method for cosinemodulated QMF banks,” IEEE Trans. Signal Processing, vol. 44, pp. 1657– 1668, July 1996. [29] G. Doblinger, Th. Zeitlhofer, “Improved design of uniform and nonuniform modulated filter banks,” in Proc. 1996 IEEE Nordic Signal Proc. Symp., NORSIG’96, Sept. 1996, pp. 327–330. [30] J. Princen, “The design of nonuniform modulated filterbanks,” Trans. Signal Processing, vol. 43, pp. 2550–2560, Nov. 1995.

IEEE

[31] E. Zwicker, R. Feldtkeller, Das Ohr als Nachrichtenempf¨anger, S. Hirzel Verlag Stuttgart, 1967. [32] R. E. Crochiere, L. R. Rabiner, Multirate Digital Signal Processing, PrenticeHall, Inc., 1983. [33] D. W. Griffin, J. S. Lim, “Signal estimation from the modified short-time fourier transform,” IEEE Trans. Acoust., Speech, Signal Processing, vol. ASSP32, pp. 236–243, April 1984. [34] U. Z¨olzer, Digitale Audiosignalverarbeitung, Teubner Verlag Stuttgart, 1997. [35] C. S. Burrus, R. A. Gopinath, H. Guo, Introduction to Wavelets and Wavelet Transforms, A Primer, Prentice-Hall, Inc., 1998. [36] St. Mallat, A Wavelet Tour of Signal Processing, Academic Press, 1998. [37] G. Strang, T. Nguyen, Wavelets and Filter Banks, Wellesley-Cambridge Press, 1996. [38] N. Fliege, Multiraten-Signalverarbeitung, Teubner Verlag Stuttgart, 1993. [39] P. P. Vaidyanathan, P. Hoang, “Lattice structures for optimal design and robust implementation of two-channel perfect-reconstruction QMF banks,” IEEE Trans. Acoust., Speech, Signal Processing, vol. ASSP-36, pp. 81–94, Jan. 1988. [40] D. J. Donoho, I. M. Johnstone, “Wavelet shrinkage: asymptopia,” Stanford Statistics Dept. Report TR-419, March 1993. [41] D. L. Donoho, “De-noising by soft thresholding,” IEEE Transactions on Information Theory, vol. 41, pp. 613–627, May 1995.

216

Literaturverzeichnis

[42] E. Moulines, J. Laroche, “Non-parametric techniques for pitch-scale and timescale modifications of speech,” Speech Communication, vol. 16, pp. 175–205, 1995. [43] S. J. Godsill, P. J. W. Rayner, Digital Audio Restoration, A Statistical Model Based Approach, Springer-Verlag London, 1998. [44] S. M. Kay, Fundamentals of Statistical Signal Processing: Estimation Theory, Prentice-Hall, Inc., 1993. [45] Y. Ephraim, D. Malah, “Speech enhancement using a minimum meansquare error short-time spectral amplitude estimator,” IEEE Trans. Acoustics, Speech, Signal Processing, vol. ASSP-32, pp. 1109–1121, Dec. 1984. [46] O. Capp´e, “Elimination of the musical noise phenomenon with the Ephraim and Malah noise suppressor,” IEEE Trans. Speech and Audio Processing, vol. 2, pp. 345–349, April 1994. [47] O. Capp´e, J. Laroche, “Evaluation of short-time spectral attenuation techniques for the restoration of musical recordings,” IEEE Trans. Speech and Audio Processing, vol. 3, pp. 84–93, Jan. 1995.

Glossar 1/f -Rauschen

Rauschprozeß mit 1/f -f¨ ormigem Frequenzverlauf des Leistungsdichtespektrums

AKF

Autokorrelationsfunktion

Array

mehrdimensionale Anordnung von Daten

Chirp

speziell frequenzmoduliertes Signal (z.B. Sinussignal mit ansteigender Frequenz)

DFT

Diskrete Fouriertransformation

DTWT

Discrete-Time Wavelet-Transform

DWT

Diskrete Wavelet-Transformation

FFT

Fast Fourier Transform

FIR

Finite Impulse Response

Frame

Signalausschnitt bei der Blockverarbeitung

HTML-File

Hypertextdatei

IDFT

Inverse Diskrete Fouriertransformation

IDTWT

Inverse Discrete-Time Wavelet-Transform

IFFT

Inverse Fast Fourier Transform

IIR

Infinite Impulse Response

LS

Least-Squares

M-File

Textdatei zum Speichern von MATLABr -Funktionen oder Scripts

218

Glossar

MAT-File

bin¨are Datei zum Speichern von MATLABr -Variablen

MEX-File

bin¨are Datei f¨ ur compilierte MATLABr -Funktionen

MMSE

Minimum Mean-Square Error

MPEG

Moving Picture Expert Group

MPEG-Verfahren

Datenkompressionsverfahren f¨ ur Audio- und Videosignale

NPR

Near Perfect Reconstruction

PDF-File

Datei im Adobe Portable Document Format

PR

Perfect Reconstruction

RAW-Datei

bin¨are Datei zum Speichern von digitalen Audiosignalen ohne Header (Vorspann mit Signalparametern)

Rosarauschen

Rauschprozeß mit nichtkonstantem Leistungsdichtespektrum

SNR

Signal-to-Noise Ratio

STFT

Short-Time Fourier Transform

WAV-Format

Dateiformat zum Speichern von Audiosignalen

WT

Wavelet-Transformation

Index Abtastratenumsetzung, 11, 13, 19, 128, 144, 155, 160, 164 Abtastung, 35, 108, 152 kritische, 155 Aliasing, 11, 113, 128, 136 im Frequenzbereich, 108 Allpaßtransformation, 121 Alternantensatz, 96 Autokorrelation, siehe Korrelation Bayes-Sch¨atzer, 183 Besselfunktion modifizierte, 184 bilineare Z-Transformation, 114 Blockverarbeitung, 2, 19, 43, 57, 75, 150 Blockzustandsraumdarstellung, 59 Butterworth-Filter, 114 Cauer-Filter, siehe Filter, elliptisches Chirp sinusf¨ormiger, 24, 169, 181 Chirp-DFT, 78 Critical Bands, siehe Frequenzgruppen Datenreduktion, 12, 152, 168 Dezimation, siehe Abtastratenumsetzung im Frequenzbereich, 69

Differenzengleichung, 41 Anfangswerte, 41, 44 Eigenwertzerlegung, 59 Einh¨ ullende, 12 Einseitenbandmodulation, 174 Entzerrung, 31, 150 Equi-Ripple Design, 95, 104, 119 Exponentialschwingung, 5, 34, 45, 63, 71 Faltungsmatrix, 18, 24, 32, 112 zyklische, 22 Faltungsoperation, 16, 29, 84 lineare, 16, 74 zyklische, 20, 72 Fensterfunktion, 71, 92, 144 FFT, Fast Fourier Transform, 23, 40, 66, 80, 84, 144, 154, 175 Filter analoges, 114 Bandpaß, 121 Bandsperre, 122 digitales Transversalfilter, 84 elliptisches, 51, 119 Hochpaß, 121 idealer Bandpaß, 38 Kaskadenform, 49 Ordnung, 42n Parallelform, 51, 108 Polstelle, 45, 115, 117

220 Sperrstelle, 45, 115, 117 Filter Bank Overlap Addition Method, 148 Filterbank aquidistante, 127, 132 ¨ u ¨berabgetastete, 147, 174 baumf¨ormige Anordnung, 155 nahezu perfekte Rekonstruktion, 129 nicht¨aquidistante, 127, 136, 143, 151, 154, 156 nichtperfekte Rekonstruktion, 160 perfekte Rekonstruktion, 129, 158 Rekonstruktionsfehler, 150 Filterung inverse, 19 FIR-Filter, 29, 67, 83, 84, 129, 160 linearphasige, 84 Fouriertransformation, 34 diskrete (DFT), 66, 87, 144 inverse, 39 Frequenzgang ¨ Ubertragungsfunktion, 34, 38, 45 dreidimensionale Darstellung, 45 FIR-Filter, 84 IIR-Filter, 45 Frequenzgruppen des menschlichen Geh¨ ors, 143 Frequenzskalierung, 151, 174 Gibbsches Ph¨anomen, 92 Halbbandfilter, 155 IIR-Filter, 29, 83, 107, 123 Impulsantwort, 28, 35, 40, 84, 107, 112, 130 Impulsinvarianztransformation, 107 Impulskompression, 24

INDEX Interpolation, siehe Abtastratenumsetzung im Frequenzbereich, 67 Kaiser-Fenster, siehe Fensterfunktion Kaskadenform, siehe Filter, Kaskadenform Korrelation, 23, 123 Kurzzeit-Fouriertransformation, 144, 152, 154, 174, 182 Filterbankdarstellung, 147 Lattice-Filter, siehe Leiterstrukturen Lawson-Algorithmus, 104 Leakage-Effect, 67, 71 Least-Squares, 32, 89, 100, 104, 112, 123, 144 Leiterstrukturen, 164 Lerner-Filter, 108 Levinson-Algorithmus, 101 Low-Delay FIR Filter, 102, 105 Methode der kleinsten Quadrate, siehe Least-Squares MMSE-Sch¨atzer, siehe Bayes-Sch¨atzer Momentanfrequenz, 175 Momentanphase, 175 Moving Averager, 36 Multibandfilter, 97 Nullenanf¨ ugen, 68 Nullphasenkomponente, 85, 130 Nullstelle, siehe Filter, Sperrstelle Nullstelleninversion, 88 Oktavbandanalyse, 152 Overlap-Add Methode, 75 Overlap-Save Methode, 76 Parallelform, siehe Filter, Parallelform

INDEX Pitch-Skalierung, 174 Polstelle, siehe Filter, Polstelle Polyphasenfilter, 159, 164 Polyphasenzerlegung, siehe Polyphasenfilter Prototypfilter, 129, 130, 151 Quadrature Mirror Filterbank (QMF), 158 Reihe endliche geometrische, 37 unendliche geometrische, 35 Remez-Algorithmus, 86 Short-Time Fourier Transform, siehe Kurzzeit-Fouriertransformation Signal komplexwertiges, 6 periodisches, 9, 20, 64 zeitdiskretes, 1 Sperrfrequenz, 37 Sperrstelle, siehe Filter, Sperrstelle System inverses, 31, 48 kausales, 27, 30, 48 lineares, 27, 28 linearphasiges, 48, 88 minimalphasiges, 32, 48, 88 nichtrekursives, 41 rekursives, 41, 112 stabiles, 27, 29, 48

221 Vertauschbarkeit, 31 zeitinvariantes, 27, 28 zeitvariantes, 27, 181 Systeminvertierung, siehe System, inverses T¨ oplitz-Matrix, 18, 100, 112 Transversalfilter, siehe Filter Tschebyscheff-Approximation, 95 Tschebyscheff-Filter, 117 ¨ Ubertragungsfunktion, siehe Frequenzgang Wavelet Shrinkage, 168 Wavelet-Transformation, 127, 151 diskrete, 152 inverse, diskrete, 153 inverse, zeitdiskrete, 158, 168 zeitdiskrete, 154, 168 Wavelets orthonormierte, 153, 164, 169 Zeitinversion, 7 Zeitskalierung, 179 Zeitverschiebung, 7 zyklische, 9, 72 Zufallsvariable gaußsche, 183 Zustandsgleichungen, 54 Zustandsvektor, 55 Zweikanalfilterbank, 155, 159, 164