Martin Werner Digitale Signalverarbeitung mit MATLAB®
Aus dem Programm
Nachrichtentechnik
Information und Kommunika...
137 downloads
2088 Views
4MB Size
Report
This content was uploaded by our users and we assume good faith they have the permission to share this book. If you own the copyright to this book and it is wrongfully on our website, we offer a simple DMCA procedure to remove your content from our site. Start by pressing the button below!
Report copyright / DMCA form
Martin Werner Digitale Signalverarbeitung mit MATLAB®
Aus dem Programm
Nachrichtentechnik
Information und Kommunikation von M. Hufschmid Nachrichtenübertragung von K. D. Kammeyer Digitale Signalverarbeitung von K. D. Kammeyer und K. Kroschel Grundlagen der Informationstechnik von M. Meyer Kommunikationstechnik von M. Meyer Signalverarbeitung von M. Meyer Digitale Kommunikationssysteme 1 und 2 von R. Nocker Signale und Systeme von R. Scheithauer Digitale Sprachsignalverarbeitung von P. Vary, U. Heute und W. Hess Mobilfunknetze und ihre Protokolle 1 und 2 von B. Walke Grundlagen der Kommunikationstechnik von H. Weidenfeller Information und Codierung von M. Werner Digitale Signalverarbeitung mit MATLAB®-Praktikum von M. Werner Nachrichten-Übertragungstechnik von M. Werner Signale und Systeme von M. Werner Digitale Audiosignalverarbeitung von U. Zölzer
www.viewegteubner.de
Martin Werner
Digitale Signalverarbeitung mit MATLAB® Grundkurs mit 16 ausführlichen Versuchen 4., durchgesehene und ergänzte Auflage Mit 180 Abbildungen und 76 Tabellen STUDIUM
Bibliografische Information der Deutschen Nationalbibliothek Die Deutsche Nationalbibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detaillierte bibliografische Daten sind im Internet über abrufbar.
1. Auflage 2001 2., verbesserte und erweiterte Auflage 2003 3., vollständig überarbeitete und erweiterte Auflage 2006 4., durchgesehene und ergänzte Auflage 2009 Alle Rechte vorbehalten © Vieweg +Teubner | GWV Fachverlage GmbH, Wiesbaden 2009 Lektorat: Reinhard Dapper | Andrea Broßler Vieweg+Teubner ist Teil der Fachverlagsgruppe Springer Science+Business Media. www.viewegteubner.de Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Jede Verwertung außerhalb der engen Grenzen des Urheberrechtsgesetzes ist ohne Zustimmung des Verlags unzulässig und strafbar. Das gilt insbesondere für Vervielfältigungen, Übersetzungen, Mikroverfilmungen und die Einspeicherung und Verarbeitung in elektronischen Systemen. Die Wiedergabe von Gebrauchsnamen, Handelsnamen, Warenbezeichnungen usw. in diesem Werk berechtigt auch ohne besondere Kennzeichnung nicht zu der Annahme, dass solche Namen im Sinne der Warenzeichen- und Markenschutz-Gesetzgebung als frei zu betrachten wären und daher von jedermann benutzt werden dürften. Umschlaggestaltung: KünkelLopka Medienentwicklung, Heidelberg Druck und buchbinderische Verarbeitung: MercedesDruck, Berlin Gedruckt auf säurefreiem und chlorfrei gebleichtem Papier. Printed in Germany ISBN 978-3-8348-0457-0
V
Vorwort Die digitale Signalverarbeitung ist eine der Schlüsseltechnologien des Informationszeitalters: in Mobiltelefonen ist sie unser Begleiter, in Anti-Blockiersystemen vermeidet sie Unfälle, in der Computertomographie verschafft sie Einblicke ohne operativen Eingriff. Die digitale Signalverarbeitung macht unser Leben bequemer, sicherer und produktiver. Kenntnisse in der digitalen Signalverarbeitung sind deshalb zu einem wichtigen Bestandteil naturwissenschaftlich-technischer Studiengänge und entsprechender beruflicher Praxis geworden. Das Buch „Digitale Signalverarbeitung mit MATLAB“ stallt anhand von 16 ausführlichen Versuchen eine Auswahl wichtiger Grundlagen und Anwendungen vor: Zeitdiskrete Signale (2 Versuche) Signalverarbeitung im Frequenzbereich / FFT (4 Versuche) Signalverarbeitung im Zeitbereich / LTI-Systeme (3 Versuche) Filterentwurf (2 Versuche) Stochastische Signale (2 Versuche) Reale Systeme, A/D-Umsetzung, Wortlängeneffekte (3 Versuche) Zu jedem Versuch gibt es Lernziele und eine kompakte Einführung. Die Versuchsvorbereitung ist wichtiges Element des Praktikums und baut idealer Weise auf erste Erfahrungen einer einführenden Lehrveranstaltung in Signale und Systeme auf. Die Versuche sind so angelegt, dass sie bei guter Vorbereitung in etwa 3 bis 4 Stunden am PC bearbeitet werden können. Viele Aufgaben sind mit Lösungshinweisen versehen. Zahlreiche Programmbeispiele und grafische Darstellungen unterstützen die Durchführung der Versuche. Am Ende des Buches findet sich ein ausführlicher Lösungsteil. In der 4. Auflage wurden der Lösungsteil nochmals erweitert und Lernkontrollfragen aufgenommen, die zu einer versuchsübergreifenden Rückschau anregen. Die Versuche werden mit der Simulationssprache MATLAB®1 durchgeführt: MATLAB ist ein häufig benutztes Werkzeug für die digitale Signalverarbeitung und wird weltweit auf PC und Arbeitsplatzrechnern mit unterschiedlichen Betriebssystemen eingesetzt. Wegen der einfache Bedienung sowie der guten grafischen Eigenschaften von MATLAB kann sofort mit der digitalen Signalverarbeitung begonnen werden. Die Kombination aus PC und MATLAB ermöglicht es auf einfache Weise reale Audiosignale zu verwenden. MATLAB ist auch als preiswerte Studentenversion erhältlich.
1
MATLAB® ist ein eingetragenes Warenzeichen der Firma The MathWorks, Inc., U.S.A., www.mathworks.com
VI
Vorwort
Alle für das Praktikum erstellten MATLAB-Programme können abgeändert und erweitert werden. Die Experimente lassen sich nach persönlichen Bedürfnissen und Interessen modifizieren. Zum Buch sind über 90 Programme und Datensätze entstanden, die auf der Web-Seite des Vieweg+Teubner Verlages, www.viewegteubner.de, kostenlos erhältlich sind. MATLAB verfügt über eine umfassende und gut organisierte Online-Hilfe, die Handbücher vollwertig ersetzt. Aus diesem Grund ist der Einführungsteil des Buches „Erste Schritte in MATLAB“ kurz gehalten. Technische Hinweise und Softwarekompatibilität Alle Programme wurden mit MATLAB Version 7.3 (R2006b) getestet. Da aus didaktischen Gründen nur einfache Befehle verwendet wurden, sollten die Programme auch mit der MATLAB Version 6 oder neueren Versionen laufen. Für das Praktikum ist die MATLAB Signal Processing Toolbox erforderlich. Weitere Informationen zu MATLAB sind auf der Homepage der Firma The MathWorks, U.S.A., www.mathworks.com, oder bei der deutschen Niederlassung The MathWorks GmbH, www.mathworks.de, zu finden. Danksagung Gerne bedanke ich mich bei den vielen Studierenden am Fachbereich Elektrotechnik und Informationstechnik der Hochschule Fulda, die dieses Praktikum seit Jahren mit viel Engagement, hilfreichen Anregungen und konstruktiver Kritik bereichern. Mein besonderer Dank gehört Herrn Dipl.-Ing. (FH) Bernd Heil, ohne dessen tatkräftige Unterstützung und musikalischen Einsatz (guitar.wav) im Nachrichtentechnik-Labor dieses Buch so nicht hätte entstehen können. Für die freundliche Unterstützung bedanke ich mich herzlich bei der Firma The MathWorks und besonders den Mitarbeiterinnen und Mitarbeitern des Vieweg+Teubner Verlags für die gute Zusammenarbeit.
Fulda, im August 2008
Martin Werner
VII
Inhaltsverzeichnis 1
Erste Schritte in MATLAB .............................................................................................. 1 1.1 Einführung ............................................................................................................... 1 1.2 Programmstart und einfache Befehle....................................................................... 1 1.2.1 MATLAB-Bedienoberfläche ..................................................................... 1 1.2.2 Einfache arithmetische Operationen.......................................................... 1 1.2.3 Konstanten und Variablen ......................................................................... 3 1.2.4 MATLAB help-Kommando.................................................................... 3 1.2.5 Vektoren und Matrizen .............................................................................. 4 1.2.6 Vordefinierte MATLAB-Funktionen und einfache Grafiken .................... 7 1.2.7 Schreiben eines MATLAB-Programms im Editor/DebuggerWindow..................................................................................................... 9 1.2.8 Verkettete Programme und Unterprogramme.......................................... 11 1.2.9 MATLAB HELP und MATLAB DEMO................................................... 14
2
Zeitdiskrete Signale ........................................................................................................ 16 2.1 Einführung ............................................................................................................. 16 2.2 Elementare zeitdiskrete Signale............................................................................. 16 2.2.1 Einführung............................................................................................... 16 2.2.2 Vorbereitende Aufgaben.......................................................................... 19 2.2.3 Versuchsdurchführung............................................................................. 20 2.3 Audiosignale.......................................................................................................... 20 2.3.1 Einführung............................................................................................... 20 2.3.2 Beispiel: Synthese eines Audiosignals .................................................... 21 2.3.3 Vorbereitende Aufgaben.......................................................................... 23 2.3.4 Versuchsdurchführung............................................................................. 23
3
Diskrete Fourier-Transformation (DFT) ...................................................................... 26 3.1 Einführung ............................................................................................................. 26 3.2 Grundlagen ............................................................................................................ 26 3.2.1 Diskrete Fourier-Transformation............................................................. 26 3.2.2 Eigenschaften der diskreten Fourier-Transformation .............................. 31 3.3 Vorbereitende Aufgaben........................................................................................ 31 3.4 Versuchsdurchführung........................................................................................... 33
4
Schnelle Fourier-Transformation (FFT)....................................................................... 36 4.1 Einführung ............................................................................................................. 36 4.2 Komplexität ........................................................................................................... 36 4.3 Radix-2-FFT-Algorithmus..................................................................................... 37 4.4 Programmierung der DIT-Radix-2-FFT ................................................................ 41 4.4.1 Ordnen der Eingangsfolge ....................................................................... 41 4.4.2 Signalverarbeitung im Signalflussgrafen................................................. 44 4.5 Vorbereitende Aufgaben........................................................................................ 47 4.6 Versuchsdurchführung........................................................................................... 48
VIII
Inhaltsverzeichnis
5
Kurzzeit-Spektralanalyse: Grundlagen ........................................................................ 50 5.1 Einführung ............................................................................................................. 50 5.2 Grundlagen ............................................................................................................ 50 5.2.1 Abtastung................................................................................................. 51 5.2.2 Spektrum des zeitdiskreten Signals ......................................................... 52 5.2.3 Fensterung ............................................................................................... 53 5.2.4 Diskrete Fourier-Transformation ............................................................. 55 5.2.5 Zero-padding............................................................................................ 58 5.2.6 Leakage-Effekt ........................................................................................ 59 5.2.7 Fensterfolgen ........................................................................................... 60 5.3 Vorbereitende Aufgaben........................................................................................ 62 5.4 Versuchsdurchführung........................................................................................... 63
6
Kurzzeit-Spektralanalyse: Beispiele .............................................................................. 66 6.1 Einführung ............................................................................................................. 66 6.2 Mehrtonsignal ........................................................................................................ 66 6.2.1 Mehrfrequenzwahlverfahren.................................................................... 66 6.2.2 Vorbereitende Aufgaben ......................................................................... 67 6.2.3 Versuchsdurchführung............................................................................. 68 6.3 Audiosignal............................................................................................................ 69 6.3.1 Einführung ............................................................................................... 69 6.3.2 Vorbereitende Aufgaben.......................................................................... 71 6.3.3 Versuchsdurchführung............................................................................. 72
7
Lernkontrollfragen zur DFT, FFT und Kurzzeitspektralanalyse ............................. 75 7.1 Aufgabenkatalog A ................................................................................................ 75 7.2 Aufgabenkatalog B ................................................................................................ 77
8
Faltung, Differenzengleichung und LTI-Systeme ........................................................ 81 8.1 Einführung ............................................................................................................. 81 8.2 Faltung ................................................................................................................... 81 8.2.1 Grundlagen .............................................................................................. 81 8.2.2 Vorbereitende Aufgaben.......................................................................... 83 8.2.3 Versuchsdurchführung............................................................................. 84 8.3 Differenzengleichung 1. Ordnung.......................................................................... 85 8.3.1 Goertzel-Algorithmus 1. Ordnung ........................................................... 85 8.3.2 Versuchsdurchführung............................................................................. 87 8.4 Lineare zeitinvariante Systeme .............................................................................. 88 8.4.1 Impulsantwort und Frequenzgang von LTI-Systemen............................. 88 8.4.2 Lineare Differenzengleichung und z-Transformation .............................. 90 8.4.3 Goertzel-Algorithmus 2. Ordnung ........................................................... 93 8.4.4 Vorbereitende Aufgaben.......................................................................... 94 8.4.5 Versuchsdurchführung............................................................................. 94
9
Finite-Impulse-Response-Systeme ................................................................................. 95 9.1 Einführung ............................................................................................................. 95 9.2 Eigenschaften von FIR-Systemen.......................................................................... 95 9.3 Vorbereitende Aufgaben........................................................................................ 98 9.4 Versuchsdurchführung......................................................................................... 103
Inhaltsverzeichnis
IX
10
Infinite-Impulse-Response-Systeme ............................................................................ 105 10.1 Einführung ........................................................................................................... 105 10.2 Einfluss der Pole auf den Frequenzgang.............................................................. 105 10.3 Blockdiagramm ................................................................................................... 106 10.4 Impulsantwort...................................................................................................... 107 10.5 Partialbruchzerlegung mit MATLAB .................................................................. 108 10.6 Vorbereitende Aufgaben...................................................................................... 110 10.7 Versuchsdurchführung......................................................................................... 113
11
Entwurf digitaler FIR-Filter ........................................................................................ 116 11.1 Einführung ........................................................................................................... 116 11.2 FIR-Filterstruktur................................................................................................. 116 11.3 Toleranzschema ................................................................................................... 117 11.3.1 Entwurfsvorschrift im Frequenzbereich ................................................ 117 11.3.2 Vorbereitende Aufgaben........................................................................ 119 11.4 Fourier-Approximation........................................................................................ 120 11.4.1 Fourier-Reihe des Frequenzganges........................................................ 120 11.4.2 Vorbereitende Aufgaben........................................................................ 120 11.4.3 Versuchsdurchführung........................................................................... 121 11.5 Fourier-Approximation mit Fensterung............................................................... 121 11.5.1 Einführung............................................................................................. 121 11.5.2 Vorbereitende Aufgaben........................................................................ 122 11.5.3 Versuchsdurchführung........................................................................... 122 11.6 Chebyshev-Approximation.................................................................................. 123 11.6.1 Equiripple-Methode............................................................................... 123 11.6.2 Versuchsdurchführung........................................................................... 124
12
Entwurf digitaler IIR-Filter......................................................................................... 127 12.1 Einführung ........................................................................................................... 127 12.2 IIR-Filter.............................................................................................................. 127 12.3 Entwurf eines Butterworth-Tiefpasses................................................................. 130 12.3.1 Toleranzschema und Filtertyp ............................................................... 130 12.3.2 Zeitkontinuierlicher Butterworth-Tiefpass ............................................ 130 12.3.3 Dimensionierung des zeitkontinuierlichen Butterworth-Tiefpasses ...... 131 12.3.4 Vorbereitende Aufgaben Butterworth-Tiefpass.................................. 132 12.3.5 Bilineare Transformation....................................................................... 134 12.3.6 Frequenz-Transformation ...................................................................... 135 12.3.7 Vorbereitende Aufgaben Transformation........................................... 137 12.3.8 Versuchsdurchführung........................................................................... 138 12.4 Entwurf digitaler Tiefpässe nach Standardapproximationen analoger Tiefpässe ............................................................................................... 139 12.4.1 Einführung............................................................................................. 139 12.4.2 Versuchsdurchführung........................................................................... 139
13
Lernkontrollfragen zu FIR- und IIR-Systemen ......................................................... 142 13.1 Aufgabenkatalog A.............................................................................................. 142 13.2 Aufgabenkatalog B .............................................................................................. 146
X
Inhaltsverzeichnis
14
Kenngrößen stochastischer Signale ............................................................................. 148 14.1 Einführung ........................................................................................................... 148 14.2 Grundlagen .......................................................................................................... 148 14.2.1 Experiment und stochastischer Prozess ................................................. 148 14.2.2 Zufallszahlen am Digitalrechner............................................................ 151 14.3 Stochastische Signale........................................................................................... 151 14.3.1 Vorbereitende Aufgaben........................................................................ 151 14.3.2 Versuchsdurchführung........................................................................... 153 14.4 Korrelation stochastischer Prozesse..................................................................... 154 14.4.1 Korrelation, Korrelationsfunktion und Leistungsdichtespektrum.......... 154 14.4.2 Weißes Rauschen................................................................................... 155 14.4.3 Schätzung der Autokorrelationsfunktion ............................................... 156 14.4.4 Schätzung des Leistungsdichtespektrums.............................................. 157 14.4.5 Vorbereitende Aufgaben........................................................................ 158 14.4.6 Versuchsdurchführung........................................................................... 159
15
Stochastische Signale und LTI-Systeme...................................................................... 163 15.1 Einführung ........................................................................................................... 163 15.2 Lineare Abbildung stochastischer Signale ........................................................... 163 15.2.1 Grundlagen ............................................................................................ 164 15.2.2 Vorbereitende Aufgaben........................................................................ 165 15.2.3 Versuchsdurchführung........................................................................... 165 15.3 Abbildung stochastischer Signale an LTI-Systemen ........................................... 166 15.3.1 Grundlagen ............................................................................................ 166 15.3.2 Vorbereitende Aufgaben........................................................................ 166 15.3.3 Versuchsdurchführung........................................................................... 170
16
Analog-Digital-Umsetzung ........................................................................................... 172 16.1 Einführung ........................................................................................................... 172 16.2 Digitalisierung ..................................................................................................... 172 16.3 Abtastung............................................................................................................. 173 16.3.1 Abtasttheorem........................................................................................ 173 16.3.2 Vorbereitende Aufgaben........................................................................ 174 16.3.3 Versuchsdurchführung........................................................................... 174 16.4 Quantisierung....................................................................................................... 175 16.4.1 Quantisierungskennlinie ........................................................................ 175 16.4.3 Maschinenzahlen ................................................................................... 175 16.4.3 Quantisierungsfehler.............................................................................. 179 16.4.4 Vorbereitende Aufgaben........................................................................ 181 16.4.5 Versuchsdurchführung........................................................................... 184
17
Reale digitale Filter: Koeffizientenquantisierung ...................................................... 186 17.1 Einführung ........................................................................................................... 186 17.2 Wortlängeneffekte ............................................................................................... 186 17.3 FIR-Filter mit quantisierten Koeffizienten .......................................................... 187 17.3.1 Fehlermodell und Fehlerfrequenzgang .................................................. 187 17.3.2 Vorbereitende Aufgaben........................................................................ 188 17.3.3 Versuchsdurchführung........................................................................... 189 17.4 IIR-Filter mit quantisierte Koeffizienten ............................................................. 190 17.4.1 Kaskadenform........................................................................................ 190
Inhaltsverzeichnis
XI
17.4.2 17.4.3 17.4.4
Koeffizientenquantisierung und Polausdünnung ................................... 192 Vorbereitende Aufgaben........................................................................ 194 Versuchsdurchführung........................................................................... 198
18
Reale digitale Filter: Quantisierte Arithmetik ........................................................... 199 18.1 Einführung ........................................................................................................... 199 18.2 Quantisierte Arithmetik ....................................................................................... 199 18.2.1 Addition Überlauf und große Grenzzyklen ........................................ 199 18.2.2 Multiplikation Inneres Rauschen und kleine Grenzzyklen................. 200 18.2.3 Ersatzschaltbild für einen Block 2.Ordnung.......................................... 204 18.3 Vorbereitende Aufgaben...................................................................................... 205 18.4 Versuchsdurchführung......................................................................................... 208
19
Lernkontrollfragen zu stochastischen Signalen und realen Systemen ..................... 216 19.1 Aufgabenkatalog A.............................................................................................. 216 19.2 Aufgabenkatalog B .............................................................................................. 218
20
Lösungen zu den Versuchen......................................................................................... 220 20.1 Hinweise .............................................................................................................. 220 20.2 Lösungen: Zeitdiskrete Signale ........................................................................... 220 20.3 Lösungen: Diskrete Fourier-Transformation ....................................................... 221 20.4 Lösungen: Schnelle Fourier-Transformation ....................................................... 225 20.5 Lösungen: Kurzzeit-Spektralanalyse: Grundlagen .............................................. 228 20.6 Lösungen: Kurzzeit-Spektralanalyse: Beispiele .................................................. 230 20.7 Lösungen: Lernkontrollfragen zur DFT, FFT und Kurzzeit-Spektralanalyse...... 234 20.7.1 Aufgabenkatalog A................................................................................ 234 20.7.2 Aufgabenkatalog B ................................................................................ 235 20.8 Lösungen: Faltung, Differenzengleichung und LTI-Systeme.............................. 237 20.9 Lösungen: Finite-Impulse-Response-Systeme..................................................... 239 20.10 Lösungen: Infinite-Impulse-Response-Systeme .................................................. 242 20.11 Lösungen: Entwurf digitaler FIR-Filter ............................................................... 246 20.12 Lösungen: Entwurf digitaler IIR-Filter................................................................ 251 20.13 Lösungen: Lernkontrollfragen zu FIR- und IIR-Systemen .................................. 256 20.13.1 Aufgabenkatalog A................................................................................ 256 20.13.2 Aufgabenkatalog B ................................................................................ 257 20.14 Lösungen: Kenngrößen stochastischer Signale.................................................... 258 20.15 Lösungen: Stochastische Signale und LTI-Systeme ............................................ 265 20.16 Lösungen: Analog-Digital-Umsetzung................................................................ 272 20.17 Lösungen: Reale digitale Filter: Koeffizientenquantisierung .............................. 274 20.18 Lösungen: Reale digitale Filter: Quantisierte Arithmetik .................................... 278 20.19 Lösungen: Lernkontrollfragen zu stochastischen Signalen und realen Systemen ............................................................................................ 282 20.19.1 Aufgabenkatalog A................................................................................ 282 20.19.2 Aufgabenkatalog B ................................................................................ 283
Formelzeichen und Abkürzungen........................................................................................ 285 Literaturverzeichnis.............................................................................................................. 288 Sachwortverzeichnis.............................................................................................................. 291
1
1
Erste Schritte in MATLAB
1.1
Einführung
Es liegt in der Natur der Sache, dass ein mächtiges Werkzeug wie MATLAB weder auf wenigen Seiten beschrieben noch in den wichtigsten Funktionen schnell beherrscht werden kann. Dieser Abschnitt soll Sie deshalb bei den ersten Schritten in MATLAB unterstützen. Anhand einfacher Beispiele wird gezeigt, wie Sie arithmetische Ausdrücke verarbeiten, einfache Grafiken erzeugen, eigene Programme mit Unterprogrammen und Funktionen erstellen und benützen können. Im Laufe des Praktikums werden sich Ihnen mit zunehmender Übung die Möglichkeiten von MATLAB erschließen. Die kommentierten Programmbeispiele zu den einzelnen Versuchen und die ausführliche Dokumentation von MATLAB werden Ihnen dabei helfen. Anmerkungen: (i) Einführungen in MATLAB bieten z. B. [ABRW07], [GrGr06] und [Pra02]. (ii) Über Bücher zur Signalverarbeitung mit MATLAB informiert die Webseite von The MathWorks mathworks.com/support/books/index.html. Eine Aufstellung mit ca. 50 deutschsprachigen Büchern kann ausgewählt werden. (iii) Im Folgenden wird MATLAB 7.3 (R2006b) unter Windows XP® verwendet.
1.2
Programmstart und einfache Befehle
1.2.1
MATLAB-Entwicklungsumgebung
Nach dem Start von MATLAB erscheint wie in Bild 1-1 die voreingestellte MATLAB-Bedienoberfläche MATLAB Desktop mit Menüleiste, Schaltknöpfen und drei geöffneten Fenstern: Current Directory c, Command History d und Command Window e. Das Fenster Workspace f verbirgt sich unter dem Fenster Current Directory. Abhängig von Ihrer Installation (Versionsnummer, Studentenversion und Zusatzpakete wie SIMULINK) können Ihre Bildschirmanzeigen von den Beispielen abweichen. Vom MATLAB Desktop aus haben sie Zugriff auf die Entwicklungsumgebung von MATALB. Anmerkungen: (i) Die Voreinstellung des MATLAB Desktop erreichen sie über die Menüleiste mit Desktop ) Desktop Layout ) Default. (ii) Das Arbeiten mit den Fenstern, den Menüleisten und Schaltelemente, geschieht in der PC-üblichen Art.
1.2.2
Einfache arithmetische Operationen
Wir beginnen mit der Voreinstellung in Bild 1-1. Für die ersten Schritte im interaktiven Modus benötigen wir nur das Command Window. Der Übersichtlichkeit halber schließen Sie die anderen Fenster links durch klicken mit der Maus auf das Symbol u am jeweiligen oberen Fensterrahmen rechts. Im Command Window erscheint der MATLAB Prompt >>. Dort können Befehle direkt eingegeben werden. Im interaktiven Modus fasst MATLAB alle Eingaben als Befehle auf und führt sie nach Möglichkeit direkt aus.
2
1 Erste Schritte in MATLAB
c e
f d
Bild 1-1 MATLAB-Bedienoberfläche (MATLAB Desktop)
Tippen Sie einfach 2+3 ein und drücken Sie dann die Eingabetaste zur Übernahme des Befehls durch den Rechner. >> 2+3 Sie erhalten als Ergebnis die Antwort (answer) ans = 5 MATLAB verfügt über die üblichen arithmetischen Operatoren und darüber hinaus über weitere arithmetische und logische Operatoren, Vergleichsoperatoren und spezielle Zeichen, die den Umgang mit Vektoren und Matrizen erleichtern. Ein Beispiel ist der Potenzoperator ^. Geben Sie ein >> 3^3 und Sie erhalten ans = 27 Kompliziertere arithmetische Ausdrücke können mit Hilfe von Klammern definiert werden. Auf die Eingabe >> 4*(4-3+2/4) antwortet MATLAB mit ans = 6 Zum Ändern einer Eingabe stehen Ihnen die Cursor-Tasten zur Verfügung. Mit n können Sie frühere Eingaben wieder in die Kommandozeile laden und danach bearbeiten. Schließen Sie eine Kommandozeile mit dem Semikolon ; ab, so wird die Anzeige des Ergebnisses unterdrückt. MATLAB antwortet nur mit dem Prompt. Als Beispiel betrachten wir die letzte Eingabe. Mit der Pfeiltaste n holen Sie sie wieder hervor. Nun schließen Sie das Kommando mit einem Semikolon ab. >> 4*(4-3+2/4);
1.2 Programmstart und einfache Befehle
1.2.3
3
Konstanten und Variablen
Namen von Konstanten und Variablen beginnen in MATLAB stets mit einem Buchstaben. Sie können bis zu 63 Zeichen (Buchstaben, Ziffern, Unterstrich) enthalten. MATLAB unterscheidet zwischen Groß- und Kleinschreibung. Anmerkung: Ältere Versionen von MATLAB unterscheiden nur die ersten 31 Zeichen, siehe Getting Started with MATLAB, Version 7, 2004.
Das nachfolgende Beispiel verdeutlicht die Anwendung von Variablen >> A = 2; >> a = 4; >> B = A/a; Der Wert einer Variablen wird durch Eingabe des Namens am Bildschirm angezeigt. >> B B = 0.5 MATLAB verfügt über einige vordefinierte Konstanten. Von besonderer Bedeutung ist die (Kreis-) Zahl S und die imaginäre Einheit i bzw. j. So lassen sich komplexe Zahlen einfach eingeben. >> z = 1+2j z = 1.0000 + 2.0000i und >> z = 2+3i z = 2.0000 + 3.0000i Die Zahl S, genauer die in MATLAB verwendete Näherung, erhält man mit >> pi ans = 3.1416 Die Anzeige am Bildschirm hängt von der Einstellung des Ausgabeformates ab. Der tatsächlich intern verwendete Wert ist davon unabhängig. Das jeweils letzte Ergebnis wird in der Variablen ans gespeichert. Beachten Sie auch, dass die vordefinierten Konstanten durch Befehlseingabe überschrieben werden können. Anmerkungen: (i) MATLAB benutzt das Zahlenformat des IEEE-Standards für Gleitkommaarithmetik (IEEE standard for floating point arithmetic, ANSI/IEEE 754-1985) mit der Genauigkeit von ca. 16 Dezimalstellen und einem Wertebereich von etwa 10-308 bis 10+308. (ii) Fragen der numerischen (Un-) Genauigkeit sind wichtiger Gegenstand der digitalen Signalverarbeitung und werden in den Abschnitten 16 bis 18 behandelt.
1.2.4
MATLAB help-Kommando
Tippen Sie einfach help pi ein und drücken Sie dann die Eingabetaste zur Übernahme des Befehls durch den Rechner. >> help pi Sie erhalten die kurze Erklärung
4
1 Erste Schritte in MATLAB PI
3.1415926535897....
PI = 4*atan(1) = imag(log(-1)) = 3.1415926535897.... In der zweiten Zeile ist der Zusammenhang zwischen der Zahl S und der ArkustangensFunktion atan und dem Imaginärteil imag der natürlichen Logarithmus-Funktion log angegeben. Funktionen in MATLAB werden später bei Bedarf noch genauer vorgestellt. Wenn Sie mehr über die Formateinstellung wissen wollen, so können Sie sich die Optionen des Befehls format durch Eingabe von help format anzeigen lassen. Dort erhalten Sie in der Regel auch eine Verknüpfung mit dem Help Browser, wo Sie weitere Informationen und Beispiele finden können.
1.2.5
Vektoren und Matrizen
Vektoren und Matrizen sind als geordnete Abfolgen von Zahlen in natürlicher Weise als zeitdiskrete Signale aufzufassen und spielen in der digitalen Signalverarbeitung eine herausragende Rolle. MATLAB erleichtert den Umgang mit Vektoren und Matrizen durch spezielle Befehle zu ihrer Erzeugung und Verknüpfung. Vektoren lassen sich mit eckigen Klammern „[ ]“ und dem Semikolon „;“ durch Angabe der Zahlenwerte einfach erzeugen. Geben Sie dazu folgendes Beispiel ein >> x = [1 2 3] Sie erhalten von MATLAB den Zeilenvektor x = 1 2 3 Mit Semikolon zwischen den Zahlen ergibt sich der Spaltenvektor >> y = [1; 2; 3] y =
1 2 3
Mit den letzten beiden Befehlen haben Sie in MATLAB Datenfelder erzeugt, sogenannte Arrays, deren Elemente im MATLAB Arbeitsspeicher, dem Workspace, abgelegt sind. Über den Inhalt und die Organisation des Workspace informieren Sie sich im Command Window durch Eingabe des Befehls whos. >> whos Name
Size
Bytes
Class
A
1x1
8
double
B
1x1
8
double
a
1x1
8
double
x
1x3
24
double
y
3x1
24
double
z
1x1
16
double
Attributes
complex
Der Befehl whos listet alle im Speicher abgelegten Variablen mit ihren Dimensionen (size) in der Form „Zahl der Zeilen u Zahl der Spalten“ auf.
1.2 Programmstart und einfache Befehle
5
Anmerkungen: (i) Die Form der Anzeige kann im Fenster Workspace im Menü View eingestellt werden. (ii) Falls die Variable ans verwendet wurde, taucht sie ebenfalls hier auf.
Alternativ können Sie in der Menüleiste unter Desktop die Option Workspace auswählen. Dann erhalten sie das Fenster Workspace mit der Übersicht und zusätzliche Bearbeitungsmöglichkeiten, s. Bild 1-2. Die Anzeige können sie beispielsweise mit dem Menü-Punkt View und dann Choose Columns anpassen.
Bild 1-2 Fenster Workspace
Mit dem Befehl clear wird der gesamte Workspace gelöscht. >> clear Wiederholen Sie die Eingaben zweier Vektoren x und y mit >> x = [1 2 3]; >> y = [4; 5; 6]; Die Dimension der Vektoren kann auch mit dem Befehl size bestimmt werden. >> size(x) ans = 1
3
Die Angabe ist wieder im Format Zahl der Zeilen u Zahl der Spalten. Für eindimensionale Arrays, ob Zeile oder Spalte, kann auch der Befehl length verwendet werden. Da MATLAB eine aufwendige Speicherverwaltung durchführt, können bei kompatiblen Dimensionen viele Befehle direkt auf Vektoren oder Matrizen angewandt werden. Wir betrachten einige Beispiele. Zunächst beginnen wir mit einem einzelnen Element eines Vektors. Durch >> x(2) ans = 2 erhalten Sie den aktuellen Wert des zweiten Elements des Vektors x. Mit >> x(2) = 7
6
1 Erste Schritte in MATLAB ans = 1
7
3
wird der zweiten Komponente der Wert 7 zugewiesen. Beachten Sie, dass MATLAB die Komponenten eines Vektors mit dem Index 1 beginnend adressiert! >> x(0) ??? Subscript indices must either be real positive integers or logicals. Mit MATLAB können auch Vektoren miteinander verknüpft werden. Die Addition der beiden Vektoren >> x+y liefert eine Fehlermeldung, da die Dimensionen bzgl. der Addition inkompatibel sind. Der Zeilenvektor x kann nicht mit dem Spaltenvektor y addiert werden. ??? Error using ==> plus Matrix dimensions must agree. Ein häufiger Programmierfehler ist die Verknüpfung von Datenfeldern mit inkompatiblen Dimensionen MATLAB wird Sie durch Fehlermeldungen darauf hinweisen. Durch den Operator ´ kann eine Transposition (Zeilen- und Spaltenvertauschung) eines Vektors oder einer Matrix vorgenommen werden. Mit >> z = y´ z = 4
5
6
erhält man einen Zeilenvektor der nun elementweise zu x addiert werden kann. >> x + z ans = 5
12
9
Die Addition von zwei Spaltenvektoren ist ebenso möglich. Anmerkung: Mit ´ werden Vektoren und Matrizen mit komplexen Zahlen zusätzlich konjugiert.
Analog kann eine elementweise Multiplikation durchgeführt werden. Dazu wird der Multiplikationsoperator mit einem vorangestellten Punkt erweitert .* >> x.*z ans = 4
35
18
Werden hingegen die beiden Vektoren nur mit dem Multiplikationszeichen * verknüpft, so wird bei kompatiblen Dimensionen das Skalarprodukt (14 + 75 + 36) ausgeführt. >> x*y ans = 57 Die explizite Definition von Vektoren und Matrizen durch Eingabe der Elemente kann beschwerlich sein. Um dem abzuhelfen, bietet MATLAB spezielle Befehle an. Mit den folgenden Befehlen werden häufig benötigte Matrizen erzeugt. >> x = ones(2,3) x =
1
1
1
1
1
1
1.2 Programmstart und einfache Befehle
7
>> x = zeros(3,2) x =
0
0
0
0
0
0
>> x = repmat(7,2,3) x =
7
7
7
7
7
7
Eine weitere wichtige Möglichkeit Datenfelder zu erzeugen, ist die Anwendung des Doppelpunkt-Operators : . Er erzeugt Datenfelder mit Elementen gleichen Abstandes. Durch >> t = 0:10 wird ein eindimensionales Datenfeld (Zeilenvektor) mit der Bezeichnung t erstellt und angezeigt, das die Werte von 0 bis 10 in Einser-Schritten enthält. t = Columns 1 through 7 0
1
2
3
4
5
6
Columns 8 through 11 7
8
9
10
Die vorgestellten Beispiele geben erste Einblicke in die Möglichkeiten mit MATLAB Vektoren und Matrizen zu erzeugen und zu bearbeiten. Im Laufe der Versuche werden sich weitere dazugesellen.
1.2.6
Vordefinierte MATLAB-Funktionen und einfache Grafiken
Eine Stärke von MATLAB ist die umfangreiche Sammlung von vordefinierten Funktionen. Dies trifft sowohl auf die MATLAB-Grundausstattung als auch auf die Erweiterungspakete, Toolboxes genannt, zu. Die in den Versuchen benötigten Funktionen werden bei Bedarf eingeführt. Exemplarisch soll die Sinusfunktion grafisch dargestellt werden. Dazu wählen Sie zunächst eine Anzahl von äquidistanten Stützstellen. >> t = 0:.1:10; Mit >> y = sin(t); erstellen Sie ein Datenfeld, das die Ergebnisse der Sinusfunktion angewandt auf jedes Element von t enthält. Eine grafische Darstellung der Sinusfunktion in einem eigenen Fenster erzeugen Sie durch den Befehl >> plot(t,y)
8
1 Erste Schritte in MATLAB
Bild 1-3 Grafische Darstellung der Sinusfunktion mit MATLAB
Die grafische Darstellung kann mit weiteren Befehlen ergänzt werden, siehe Bild 1-3. >> grid >> xlabel(‘t \rightarrow’) >> ylabel(‘y(t) \rightarrow’) >> title(‘Sinus function’) Mit dem Befehl help plot erhalten Sie eine Zusammenfassung von Optionen und eine Liste von Befehlen, mit denen Sie später grafische Ausgaben ihren Bedürfnissen anpassen können. Darüber hinaus bietet Ihnen MATLAB im Grafikfenster nachträglich Optionen zur Bearbeitung von Grafiken an. Die Darstellung am Bildschirm geschieht in der Regel nach linearer Interpolation der Funktionswerte zwischen den Stützstellen. Für die digitale Signalverarbeitung – wenn nur wenige Funktionswerte dargestellt werden sollen – ist die Interpolation irreführend. Deshalb enthält MATLAB den Grafikbefehl stem. Machen Sie sich den Unterschied deutlich, indem Sie die grafische Darstellung für die Sinusfunktion bei einer geringen Stützstellenzahl pro Periode mit dem Plotbefehlen plot und stem wiederholen. >> t = 0:10; >> y = sin(t); >> plot(t,y), grid >> xlabel(‘t \rightarrow‘), ylabel(‘y(t) \rightarrow‘) >> title(‘Sinus function with few samples‘) Das resultierende Bild 1-4 lässt deutlich die interpolierten Geradenstücke zwischen den Stützwerten erkennen.
1.2 Programmstart und einfache Befehle
9
Bild 1-4 Sinusfunktion mit dem Grafikbefehl plot mit wenigen Stützstellen
Führen Sie nun die grafische Darstellung mit dem Befehl stem durch. >> stem(t,y,’full’), grid >> xlabel(‘t \rightarrow‘), ylabel(‘y(t) \rightarrow‘) >> title(‘Sampled sinus function in discrete-time representation‘) Das jetzt dargestellte Bild 1-5 hebt den diskreten Charakter der Stützstellen hervor. Die Formatangabe full ist optional und kann zur Hervorhebung des diskreten Charakters eingesetzt werden.
Bild 1-5 Sinusfunktion in diskreter Darstellung des Stabdiagramms mit dem Grafikbefehl stem
10
1.2.7
1 Erste Schritte in MATLAB
Schreiben eines MATLAB-Programms im Editor/ DebuggerWindow
Nachdem Sie das Command Window kennen gelernt haben, sollen Sie sich nun mit einfachen MATLAB-Programmen vertraut machen. Da MATLAB als Interpreter-Sprache die Befehlszeile sequentiell bearbeitet, liegt es nahe, mehrere Eingaben in einer Text-Datei, dem MATLAB Script File, zusammenzufassen. Damit MATLAB derartige Dateien als solche erkennen kann, sind sie mit der Endung .m zu versehen, wie beispielsweise sin.m, oder pi.m. Sie werden deshalb kurz als M-File bezeichnet. Um ein M-File zu erstellen, können Sie in der Menüleiste des MATLAB Desktop den Menüpunkt File ) New ) M-File anwählen. Danach erscheint das Editor/ Debugger-Window am Bildschirm. Sie können nun die in Bild 1-6 angegebenen Programmzeilen eingeben:
Bild 1-6 Programmerstellung im Editor/Debugger-Window
Zum Speichern des Programms gehen Sie nun zur Menüleiste, klicken dort File ) Save an und geben im File-Save-Fenster den Namen des Programms myprogram ein, der dann automatisch mit der Endung .m versehen wird. Günstigerweise legen Sie zum Speichern von MATLAB-Programmen, Daten usw. ein eigenes Verzeichnis an. Stellen Sie das Arbeitsverzeichnis Current Directory von MATLAB im Command Window auf Ihr Verzeichnis um. Über den Menü-Punkt Desktop ) Current Directory kann das Arbeitsverzeichnisfenster eingeblendet werden. Beachten Sie auch, mit dem Prozentzeichen % definieren Sie den Rest der Zeile als Kommentar. Nutzen Sie die Möglichkeit der Kommentierung ausgiebig, um Ihre Programme verständlich zu machen. Mit dem help-Kommando und dem Namen eines M-Files, z. B. help myprogram, werden alle dort direkt am Dateianfang stehenden Kommentarzeilen angezeigt. Damit lassen sich auf einfache Weise Hilfstexte zu Ihren Programmen erstellen. Das Programm kann nun über verschiedene Wege gestartet werden. Im Command Window müssen Sie dazu hinter dem MATLAB-Prompt den Namen des Programms eingeben aber
1.2 Programmstart und einfache Befehle
11
ohne die Endung .m. Nun wird das Programm abgearbeitet und die Sinusfunktion grafisch dargestellt. Im Editor/Debugger-Window wird das Programm über das Menü Debug ) Run (bzw. Save and Run), oder kurz mit der Steuertaste F5, zur Ausführung gebracht. Anmerkung: In MATLAB sind nützliche Debug-Werkzeuge eingebaut, mit denen Sie sich später vertraut machen können.
Eine weitere Möglichkeit ein M-File zu starten ist die Auswahl des Programms mit der rechten Maustaste im Fenster Current Directory und Wahl der Option Run. Bei der Interpretation der Befehle prüft MATLAB zunächst, ob die eingegebene Zeichenkette eine Größe im Workspace benennt. Ist das nicht der Fall, wird in den im MATLAB Path angegebenen Verzeichnissen nach einem M-File entsprechenden Namens gesucht. MATLAB beginnt dabei immer im aktuellen Arbeitsverzeichnis. Das erste vom Namen passende MFile wird ausgeführt.
1.2.8
Verkettete Programme und Unterprogramme
Das kleine Programmbeispiel in Bild 1-6 ist vom Prinzip her eine Verkettung von MATLABProgrammen. Taucht in einem M-File der Name eines weiteren M-File auf, so wird es geöffnet und sein Inhalt wie Tastatureingaben im Command Window interpretiert. Alle neu definierte Datenfelder werden im Workspace abgelegt und stehen auch nach der Bearbeitung des M-File als globale Variablen zur Verfügung. Dies ist für kleine Programmbeispiele sehr passend. Bei umfangreichen Projekten würden sich jedoch sehr schnell folgende Probleme einstellen: x Überlastung des Arbeitsspeichers x unstrukturierte Programme x unzumutbare Programmlaufzeiten x häufige Programmierfehler und unbeabsichtigtes Überschreiben von Daten MATLAB unterstützt deshalb MATLAB-eigene und anwenderdefinierte Funktionen. Bei den MATLAB-eigenen Funktionen handelt es sich um M-Files oder in sich geschlossene speicher- und laufzeitoptimierte Programm-Module. Anwenderdefinierte Funktionen werden zwar prinzipiell wie Tastatureingaben im Command Window interpretiert, besitzen aber eine definierte Schnittstelle zum aufrufenden Programm und verwalten ihre Daten lokal. Das folgende Beispiel soll Ihnen das Arbeiten mit selbstdefinierten Funktionen erläutern. Wir wählen ein etwas anspruchsvolleres Beispiel aus der Signalverarbeitung, die Approximation eines periodischen Rechteckimpulszuges durch den Gleichanteil und die Harmonischen der Fourier-Reihe. Bild 1-7 zeigt einen Ausschnitt aus einem periodischen Rechteckimpulszug in normierter Darstellung. Die Periode beträgt 1. Die Amplitude alterniert im Abstand der halben Periode zwischen +1 und 0.
12
1 Erste Schritte in MATLAB
x(t)
1 0
t 0
1/2
1
2
3
Bild 1-7 Periodischer Rechteckimpulszug in normierter Darstellung
Wir erstellen zunächst eine MATLAB-Funktion für die Funktionswerte des periodischen Rechteckimpulses. Bevor Sie beginnen löschen Sie zuerst den Workspace mit dem Kommando clear im Command Window. Dann öffnen Sie ein neues Editor/Debugger-Window und geben die folgenden Zeilen ein. Programmbeispiel 1-1 Rechteckimpulszug % y = rectangular(t,p,w) % t : time samples (t>=0) % p : period % w : impulse width % rectangular.m * mw * 03/30/2007 function y = rectangular(t,p,w) y = zeros(size(t)); % default amplitude = 0 for n=1:length(t) x = mod(t(n),p); % mapping of t into fundamental period if x>=0 && x<=w y(n) = 1; % set amplitude = 1 end end Anmerkung: Das Programm enthält bereits einige MATLAB-eigene Funktionen, Operatoren und Steuerelemente. Mit dem help-Kommando zu mod, >= , && und for haben Sie Zugriff auf die jeweilige MATLAB-Dokumentation.
Die Approximation des periodischen Rechteckimpulszuges geschieht mit der aus der Mathematik bekannten Fourier-Reihe x(t )
1 2 f 1 ¦ sin (2n 1) 2S t 2 S n 0 2n 1
Dazu erstellen Sie folgendes Programm: Programmbeispiel 1-2 Fourier-Reihe % y = fourier(t,N) % t : time samples % N : number of harmonics used (N>=1) % fourier.m * mw * 03/30/2007 function y = fourier(t,N) y = 0.5*ones(size(t)); % default amplitude = 0 for n=0:N-1 y = y + ((2/pi)/(2*n+1)) * sin((2*n+1)*2*pi*t); end
1.2 Programmstart und einfache Befehle
13
Speichern Sie die Funktion als M-File mit dem Namen fourier.m ab. Abschließend wird das Hauptprogramm mir der Festlegung der Parameter, dem Aufruf der Funktionen und der grafischen Ausgabe erstellt. Speichern Sie das folgende Hauptprogramm als M-File mit dem Namen fouriersyn.m ab. Programmbeispiel 1-3 Hauptprogramm % Fourier synthesis % fouriersyn.m * mw * 03/30/2007 t = 0:.01:3; % time samples y = rectangular(t,1,.5); % rectangular impulse train yF = fourier(t,10); % fourier synthesis with 10 harmonics plot(t,y,t,yF), grid % graphics axis([0 3 -0.2 1.2]) xlabel('t \rightarrow'), ylabel('y(t), y_{F}(t) \rightarrow') title('Fourier synthesis of rectangular impulse train')
Nach dem Aufruf des Programms fouriersyn sollten Sie die Grafik in Bild 1-8 erhalten. Sie zeigt das aus der Mathematik bekannte Ergebnis mit den Überschwingern der abgebrochenen Fourier-Reihe, dem gibbschen Phänomen. Letzteres spielt in der digitalen Signalverarbeitung eine große Rolle und wird in einem späteren Versuch noch genauer behandelt.
Bild 1-8
Periodischer Rechteckimpulszug in normierter Darstellung y(t) und seine Approximation yF(t) durch den Gleichanteil und die ersten zehn Harmonischen
In der MATLAB-Dokumentation wird zwischen einem Script und einer Function unterschieden. Ersteres erzeugt als Folge von MATLAB-Befehlen globale Variable, während eine Funktion mit lokalen Variablen arbeitet und Daten über ihre Schnittstelle, dem Funktionsaufruf, austauscht. Mit dem Befehl whos oder im Fenster Workspace können Sie das an den Programmbeispielen überprüfen. Die in den Funktionen verwendeten Variablen x und n sind als lokale Variable nicht im Arbeitsspeicher enthalten.
14
1.2.9
1 Erste Schritte in MATLAB
MATLAB Help und MATLAB Demo
Eine wichtige Möglichkeit sich zunächst mit MATLAB etwas vertrauter zu machen bietet das MATLAB-Fenster Help, s. Bild 1-9. Dort finden Sie unter dem Link Getting Started with MATLAB eine Einführung in MATLAB. Das Fenster ist u. a. über das Menü Help, das Fragezeichen ? oder zu Beginn im Command Window durch anklicken von MATLAB help erreichbar. MATLAB bietet mit dem Kommando demo bzw. den Reiter Demos im Help Navigator eine Auswahl von animierten Einführungen und Anwendungsbeispielen an, siehe Bild 1-10. Als Vorbereitung auf die kommenden Versuche sollten Sie sich mit den einführenden VideoBeispielen zur Entwicklungsumgebung Desktop Tools and Development Environment vertraut machen. Für die effektive Entwicklung von MATLAB-Programmen ist die Anwendung des Cell Mode besonders hervorzuheben, siehe Video Rapid Code Iteration Using Cells.
Bild 1-9 MATLAB Help Window
1.2 Programmstart und einfache Befehle
15
Bild 1-10 MATLAB Demo Window mit animierten Einführungen zu Desktop Tools and Development Environment
Falls das für Sie der erste Kontakt mit MATLAB sein sollte, bedenken Sie, dass ein Programmsystem und Entwicklungsumgebung wie MATLAB nicht in einem Trockenkurs anhand einer Bedienungsanleitung erlernt werden kann. Hier ist „Lernen durch gezieltes Probieren“ der sinnvollste Weg. Die folgenden Versuche werden Ihnen dabei Schritt für Schritt helfen.
16
2
Zeitdiskrete Signale
2.1
Einführung
Dieser Versuch macht Sie mit zeitdiskreten Signalen vertraut. Dazu gehören in der Vorbereitung die Angabe von zeitdiskreten Signalen als mathematische Funktionen und ihre grafische Darstellung. In der Versuchsdurchführung überprüfen Sie Ihre Vorbereitung mit MATLAB. Sie erzeugen die Signale am PC und stellen sie grafisch dar. Im zweiten Schwerpunkt des Versuchs generieren Sie mit MATLAB beispielhaft Audio-Signale und machen sie hörbar. Eine Ausstattung Ihres PC mit einer Sound Card wird vorausgesetzt. Lernziele Nach Bearbeiten des Versuches können Sie x
die wichtigen Signale Impulsfolge, Sinus- und Kosinusfolge und Exponentielle analytisch und grafisch darstellen
x
einfache MATLAB-Befehle zur Erzeugung und bildlichen Darstellung von Signalen anwenden
x
mit MATLAB Audiosignale generieren und hörbar machen
x
die Bedeutung der Abtastfrequenz für Audiosignale erklären
x
einfache MATLAB-Programme verstehen
2.2
Elementare zeitdiskrete Signale
2.2.1
Einführung
Ein Signal ist eine mathematische Funktion von mindestens einer unabhängigen Variablen x(t), wobei im Folgenden falls nicht anders erwähnt t als die Zeit interpretiert wird. Ist die Variable t kontinuierlich, so liegt ein zeitkontinuierliches Signal vor. Ist t nur für diskrete Werte definiert, so spricht man von einem zeitdiskreten Signal oder einer Folge x[n]. Der Laufindex n heißt entsprechend normierte Zeitvariable. Häufig entsteht die Folge x[n] durch eine gleichförmige zeitliche Diskretisierung eines Signals x(t). Man spricht dann von der Abtastung und der Abtastfolge mit dem Abtastintervall Ts. x[n]
x(t
nTs )
( 2.1)
Anmerkungen: (i) Die Abtastung meint hier eine ideale Abtastung, da die Funktionswerte nicht verändert werden. Die reale Abtastung, z. B. durch Analog/Digital-Umsetzer, liefert zeit- und wertdiskrete Folgen. Man spricht dann von einer Digitalisierung. Sie wird in Abschnitt 16 noch ausführlich behandelt. (ii) Der Index s erinnert an die englische Bezeichnung Sampling Operation für die Abtastung. (iii) Wegen der großen Wortlänge der Zahlendarstellung in MATLAB wird im Weiteren, falls nicht ausdrücklich anders erwähnt, der diskrete Charakter der in MATLAB darstellbaren Maschinenzahlen vernachlässigt.
Viele Signale sind von Natur aus zeitdiskret, wie z. B. der tägliche Börsenschlusswert einer Aktie. Auch können, wie im zweiten Schwerpunkt dieses Versuchs gezeigt wird, digitale Signale zur Synthetisierung zeitkontinuierlicher Signale benutzt werden.
2.2 Elementare zeitdiskrete Signale
17
Kurze zeitdiskrete Signale werden einfach durch Angabe ihrer Werte charakterisiert, wie beispielsweise x[n] = {0, 1, 1, 4}
mit n {0,1,2,3} oder
x[n] = {1, 1/2, 1/3, 1/4, 1/5, ...}
mit n = 0,1,2,...
Der erste Wert gehört in der Regel zum Index n = 0, der zweite zu n = 1, usw. Falls nötig werden Folgen endlicher Länge durch führende bzw. nachfolgende Nullen ergänzt. Man spricht von einer rechtsseitigen Folge, wenn x[n] 0 für n < 0. Hinweis: Beachten Sie, dass in MATLAB die Elemente eines Vektors mit dem Index 1 beginnend adressiert werden. Beispiel Sinusfunktion und Sinusfolge Ein typisches Beispiel liefert die Sinusfunktion x(t )
sin(t )
(2.2)
mit der zugehörigen Abtastfolge x[n] sin(nTs )
(2.3)
Ts = S / 4
(2.4)
für das Abtastintervall
sinus function 1 0.5 x(t) o
Ein MATLAB-Programm zur grafischen Darstellung der beiden Signale ist im Programmbeispiel 2-1 angegeben. Es liefert die Grafiken in Bild 2-1 rechts. Im unteren Teil ist die Sinusfolge in einem Stabdiagramm dargestellt. Durch den Befehl stem wird der zeitdiskrete Charakter hervorgehoben.
-0.5 -1
0
5
10
15
10
15
t in s o sinus sequence
Anmerkungen: Man beachte, dass auch das obere Bild genau genommen auf einer Auswertung an diskreten Stützstellen beruht.
1 0.5 x[n] o
Manchmal werden zeitdiskrete Signale „kontinuierlich“ dargestellt, beispielsweise, weil die Grafikfunktion zwischen den Folgeelementen linear interpoliert. Derartige Darstellungen sollten vermieden werden. Unter Umständen sind jedoch so viele Folgenelemente in einem Bild unterzubringen, dass sich der Eindruck eines zeitkontinuierlichen Signals nicht vermeiden lässt.
0
0 -0.5 -1
0
5 no
Bild 2-1 Sinusfunktion x(t) und Sinusfolge x[n]
18
2 Zeitdiskrete Signale
Programmbeispiel 2-1 Sinusfunktion und Sinusfolge % sinus function and sinus sequence % dsplab2_1.m * mw * 03/16/2008 t = 0:.01:15; % time variable x_t = sin(t); % sinus function n = 0:15; % normalized time Ts = pi/4; % sampling interval x_n = sin(Ts*n); % sinus sequence % Graphics FIG1 = figure('Name','dsplab2_1','NumberTitle','off'); subplot(2,1,1), plot(t,x_t,'LineWidth',2) grid, xlabel('{\itt} in s \rightarrow'), ylabel('{\itx}({\itt}) \rightarrow') title('sinus function') subplot(2,1,2), stem(n,x_n,'full') grid, xlabel('{\itn} \rightarrow'), ylabel('{\itx}[{\itn}] \rightarrow') title('sinus sequence')
Im Folgenden werden einige für die digitale Signalverarbeitung typische Signale betrachtet. In den vorbereitenden Aufgaben sollen Sie diese skizzieren, um die Ergebnisse dann in der Versuchsdurchführung zu kontrollieren. Zunächst werden die mathematischen Definitionen vorgestellt: x Impulsfolge und Sprungfolge 1 für n ¯0 sonst
G [ n] ®
u[n]
0
1 für n t 0 ® ¯0 sonst
(2.5)
(2.6)
x Sinus- und Kosinusfolge mit der normierten Kreisfrequenz : und der eulerschen Zahl e = 2.7182... x[n] sin(:n) x[n] e j:n
x
cos(:n) j sin(:n)
(2.7) (2.8)
Exponentielle mit der komplexen Basis z x[n]
zn
(2.9)
2.2 Elementare zeitdiskrete Signale
19
2.2.2
Vorbereitende Aufgaben
A2.1
Skizzieren Sie in Bild 2-2 die Impulsfolgen x1[n] G [n] , x2 [n] G [n 3] und x3 [n] G [n 3] .
1
x1[n]
1
0 1 5
x2[n]
1
0
0
n
0
1 5
5
x3[n]
0
n
1 5
5
0
n
5
Bild 2-2 Impulsfolgen
Skizzieren Sie in Bild 2-3 die Sinus- und Kosinusfolgen x4 [n] sin(2S n 16) , x5 [n] cos(2S n 7) und x6 [n] cos(n 2) .
A2.2
1
x4[n] 0
1 16
0
1
16
1
x5[n]
x6[n]
0
1
n
0
0
5
n
10
1
0
Bild 2-3 Sinus- und Kosinusfolgen
5
n
10
20 A2.3
2 Zeitdiskrete Signale Skizzieren Sie in Bild 2-4 die Exponentielle x7 [n]
z n für z 1.1 e jS
4
.
Im
x7[n]
5
n=0
4 1
3 2
2
Re
1
Bild 2-4 Exponentielle, Bezifferung mit n = 5:10
A2.4
Sind die Folgen x4[n] bis x6[n] periodisch? Geben Sie gegebenenfalls die Perioden an. #
A2.5
Machen Sie sich mit dem Programmbeispiel 2-1 vertraut.
2.2.3
Versuchsdurchführung
M2.1
Erzeugen Sie mit MATLAB die Signale aus der Vorbereitung A2.1 bis 3 und vergleichen Sie die Bildschirmdarstellungen mit Ihren Skizzen. Hinweise: (i) Siehe Hilfe zum Befehl polar. (ii) Sie können den Befehl subplot benutzen, um mehrere Signale in einem Grafikfenster darzustellen. Das Überschreiben von Bildinhalten vermeiden Sie durch Öffnen eines neuen Fensters mit dem Befehl figure, wie im Programmbeispiel 2-1 gezeigt.
2.3
Audiosignale
Im zweiten Teil des Versuches soll die Verbindung zwischen den digitalen Signalen am PC und der sinnlich-realen Welt mit Hilfe von Audiosignalen hörbar gemacht werden. Dabei lernen Sie ein Beispiel für ein umfangreicheres MATLAB-Programm kennen. Hinweis: Für die folgenden Experimente ist eine Sound Card erforderlich.
2.3.1
Einführung
Analoge Signale, also wert- und zeitkontinuierliche (elektrische) Signale, können mit einem Analog-Digital(A/D)-Umsetzer durch Abtastung und Quantisierung in ein wert- und zeitdiskretes Signal, ein digitales Signal, überführt werden [TiSc99], [Wer06]. Umgekehrt lassen sich aus digitalen Signalen mit einem Digital-Analog(D/A)-Umsetzer analoge Signale erzeugen. Wichtige Parameter dabei sind die Abtastfrequenz fs, d. h. die Häufigkeit der Abtastungen pro Sekunde, und die Wortlänge w, also die Zahlendarstellung der Amplituden des digitalen Signals. Dies wird in Abschnitt 16, Analog-Digital-Umsetzung, noch genauer erläutert.
2.3 Audiosignale
21
Ein moderner PC besitzt A/D- und D/A-Umsetzer mit einer typischerweise von 5 bis 44,1 kHz einstellbaren Abtastfrequenz und einer Wortlänge von 8 oder 16 Bit. Er erreicht damit theoretisch eine Hörqualität vergleichbar zur Audio-CD. Am PC liegen Audiosignale oft als Dateien im Wave-Format wav vor. MATLAB kann derartige Dateien lesen und schreiben, sowie digitale Signale direkt an die Sound Card ausgeben. Die MATLAB Befehle hierzu sind wavread, wavwrite, sound und soundsc. Anmerkung: Für Testzwecke geeignet ist der Befehl beep, der eine einmalige Klangausgabe, den Beep Sound, erzeugt.
2.3.2
Beispiel: Synthese eines Audiosignals
Zunächst wird an die grundsätzlichen Zusammenhänge erinnert. Dazu wird beispielhaft ein Ton mit der Frequenz von 220 Hz und der Dauer von einer Sekunde zugrunde gelegt. Die Abtastfrequenz sei 8 kHz. Wie wird das Tonsignal mit MATLAB erzeugt und hörbar gemacht? Die Aufgabe wird durch ein sinusförmiges Signal mit entsprechender Frequenz und Dauer gelöst. Hierfür benötigt wird die Frequenz f in Hertz und den Vektor der Abtastzeitpunkte t in Sekunden. Die Abtastfrequenz fs in Hertz beträgt 8000. Es fallen in einer Sekunde 8000 Abtastwerte an. Wird beim Zeitindex 0 angefangen, werden tatsächlich 8001 Abtastwerte benutzt. Die Ausgabe durch die Sound Card erfolgt mit dem Befehl soundsc. Zusammengefasst werden die untenstehenden Programmzeilen benötigen fs = 8000;
% sampling frequency in Hertz
f = 440;
% pitch
t = 0:1/fs:1;
% sampling instances (normalized time)
s = sin(2*pi*f*t);
% sound
soundsc(s)
% play sound
Im Versuch soll ein Musikstück vertont werden. Grundlage ist die Zeit-Frequenz-Darstellung, die Notenschrift in Bild 2-5. Dort wird horizontal der zeitliche Verlauf und vertikal die Frequenzlage angegeben. Die daraus resultierende Abfolge der Töne ist in Tabelle 2-1 zusammengestellt. Die zugeordneten Zeitdauern beziehen sich auf ein wählbares Grundintervall.
Bild 2-5 Prélude von Marc-Antoine Charpentier, *1634,†1704
Tabelle 2-1 Noten und normierte Zeitintervalle zu Bild 2-5 Note
d1
g1
g1
a1
h1
g1
d2
h1
h1
c2
Dauer
1/4
1/4
1/8
1/8
1/4
1/4
1/2
3/8
1/8
1/4
Note
d2
c2
h1
c2
d2
a1
g1
a1
h1
a1
Dauer
1/8
1/8
1/8
1/8
1/4
1/8
1/8
1/8
1/8
1/4
22
2 Zeitdiskrete Signale
Der Zusammenhang zwischen den Noten und der physikalischen Signaldarstellung, d. h. die Frequenzlage, erschließt sich aus den in der Musik bekannten Beziehungen der Kammerton (Normalton, Stimmton) a1 entspricht einem Sinuston mit 440 Hz eine Oktave, z. B. der Übergang von a1 zu a2, umfasst eine Frequenzverdopplung, d. h. a2 entspricht 880 Hz in einer Oktave gibt es 12 Halbtonschritte Daraus folgt die Frequenzzuordnung der C-Dur-Tonleiter in Tabelle 2-2. Tabelle 2-2 Frequenzen der C-Dur-Tonleiter bezogen auf 440 Hz Note Frequenzfaktor rel. zu a1
c1
d1
e1
f1
g1
a1
h1
c2
29/12
27/12
25/12
24/12
22/12
1
2+2/12
2+3/12
Mit den Festlegungen kann nun, wie im Programmbeispiel 2-2, jeder Note ein Sinuston mit entsprechender Frequenz und Dauer zugeordnet werden. Hinweise: (i) Im Englischen wird für die deutsche Note h der Buchstabe b verwendet und die Tonhöhe pitch genannt. Durch das Vorzeichen # auf der 5. Linie von unten wird der Ton f um einen Halbton zum fis erhöht. (ii) Beispielsweise ergibt sich die Frequenz für den Ton d2 aus Tabelle 2-2 zu 4402+5/12 Hz. Das im Programmbeispiel 2-2 erzeugte Audiosignal klingt unnatürlich, da es nur aus jeweils ein- und ausgeschalteten Sinustönen besteht. Ein besserer Höreindruck lässt sich mit einer Hüllkurvenbewertung erzielen. In der Audiotechnik wird hierfür oft das ADSR-Profil in Bild 2-6 verwendet [StBr96]. Es besteht aus vier Geradenstücken, die die vier Phasen Attack (A), Delay (D), Sustain (S) und Release (R) repräsentieren.
E(t) EA = 1
Das Programmbeispiel 2-3 stellt eine mögliche Realisierung der ADSR-Hüllkurvenbewertung für jeweils einen Ton dar.
ED
A
D S
ES
R tA
tD
tS
t
tR
Bild 2-6 ADSR-Profil
Programmbeispiel 2-2 Audiosignal „Prélude“ % audio signal prelude by Marc-Antoine Charpentier (1634-1704) % dsplab2_3.m * mw * 03/16/2008 A = 440; % pitch in Hz Dh = A*2^(5/12); % high C = A*2^(3/12); B = A*2^(2/12); G = A*2^(-2/12); Fis = A*2^(-3/12); E = A*2^(-5/12); D = A*2^(-7/12); pitch = [D G G A B G Dh B B C Dh C B C Dh A G A B A]; duration = [2 2 1 1 2 2 4 3 1 2 1 1 1 1 2 1 1 1 1 2];
2.3 Audiosignale N = 1/4; fs = 8000; music = []; for k = 1:length(pitch) L = N*fs*duration(k); n = 0:L-1; w = (2*pi/fs)*pitch(k); s = sin(w*n); music = [music s]; end soundsc(music,fs,16);
23 % time scaling % sampling frequency % define variable for audio signal % for loop % number of samples per tone % normalized time % normalized radian frequency % sinusoidal tone % concatenate audio signal % sound card output
2.3.3
Vorbereitende Aufgaben
A2.6
Machen Sie sich mit den Programmbeispielen 2-2 und 2-3 vertraut. Hinweis: Die für die praktische Durchführung der Versuche benötigen Programmdateien können Sie auch über das Internet beim Vieweg+Teubner Verlag unter viewegteubner.de abrufen.
2.3.4
Versuchsdurchführung
M2.2
Starten Sie das Programmbeispiel 2-2 dsplab2_3.
M2.3
Zur Verbesserung des Höreindrucks können die Sinustöne mit ADSR-Hüllkurven bewertet werden. Überprüfen Sie die Klangqualität des so modifizierten Audiosignals. Hinweis: Verwenden Sie die MATLAB-Funktion aus Programmbeispiel 2-3 adsr_profile. Modifizieren sie das Programm dsplab2_3 z. B. mit sADSR = adsr_profile(0.15,0.25,0.9,0.9,0.7,s); music = [music sADSR];
Sie können nun auch verschiedene Einstellungen für die Abtastfrequenz fs und die Zeitskalierung N und weiterer Parameter des ADSR-Profils ausprobieren.
Programmbeispiel 2-3 ADSR-Profil % % % % % % % % % % %
dsp laboratory - assignment 2 shaping pure tones by ADSR profile y = adsr_profile(tA,tD,tS,ED,ES,x) tA : relative duration of attack phase tD : relative duration of delay phase = tD - tA tS : relative duration of sustain phase = tS - tD ED : relative amplitude of profile at time tD ES : relative amplitude of profile at time tS x : tone to be shaped y : shaped tone adsr_profile.m * mw * 03/16/2008
24
2 Zeitdiskrete Signale
function y = adsr_profile(tA,tD,tS,ED,ES,x) tR = length(x); y = zeros(1,tR); % Attack phase NA = floor(tA*tR)+1; A =1/(NA-1); E = 0; for k=2:NA E = E+A; y(k) = E*x(k); end % Delay phase ND = floor((tD-tA)*tR); D = (1-ED)/ND; for k=NA+1:NA+ND E = E-D; y(k) = E*x(k); end % Sustain phase NS = floor((tS-tD)*tR); S = (ED-ES)/NS; for k=NA+ND+1:NA+ND+NS E = E-S; y(k) = E*x(k); end % Release phase NR = tR-k; R = E/NR; for k=NA+ND+NS+1:tR E = E-R; y(k) = E*x(k); end return
M2.4
% number of samples (tone duration) % allocate memory for output signal % number of samples in attack phase % envelope increment % envelope
% number of samples in delay phase % envelope decrement
% number of samples in sustain phase % envelope decrement
% number of samples in release phase % envelope decrement
Stellen Sie das Audiosignal nach der Hüllkurvenbewertung grafisch dar. Hinweis: Ergänzen Sie dazu das Programm beispielsweise mit den Grafikbefehlen % graphics t=0:length(music)-1; t=t/fs; % time scale FIG1 = figure('Name','dsplab2_3 : Audio signal with ADSR', 'NumberTitle', 'off'); plot(t,music) grid, xlabel('t in s \rightarrow'), ylabel('x(t) \rightarrow')
M2.5
Suchen Sie sich eine WAVE-Datei auf Ihrem PC und laden Sie sie mit dem MATLAB-Befehl wavread. Bestimmen Sie die Abtastfrequenz und die Wortlänge und geben Sie das Signal grafisch aus. Beschriften Sie dabei die Zeitachse richtig. Hinweise: (i) MATLAB liefert als Beispiel die Datei handel mit, siehe help sound. Diese finden Sie auch auf der Webseite zum Buch als handel.wav. (ii) Zum Import von Daten in stellt MATLAB den Import Wizard zur Verfügung. Gestartet wird er beispielsweise durch Anklicken (Doppelklick) einer WAV-Datei
2.3 Audiosignale
25
im Fenster Current Directory. Die Abtastfrequenz (fs) wird ebenfalls angegeben. M2.6
Mit MATLAB lassen sich ohne große Vorbereitung Audioeffekte modellieren. Ein Beispiel ist der Echoeffekt. Machen Sie das Audiosignal aus Beispiel 2-2 mit einem Echo mit 300 ms Verzögerung hörbar. Dämpfen Sie das Echo mit den Faktor 0.4. Variieren Sie die Verzögerung und Gewichtung des Echos nach belieben. Welchen Einfluss haben die beiden Parameter auf den Höreindruck?
Hinweise zu MATLAB-Funktionen und M-Files In Tabelle 2-3 werden für den Versuch einige nützliche MATLAB-Befehle und -Funktionen aufgelistet, zu denen Sie sich mit der Help-Funktion Erläuterungen und Beispiele anzeigen lassen können. Tabelle 2-3 MATLAB-Befehle benutzte Programme und Dateien Befehle zur Programmablaufsteuerung
for, end
Operatoren und spezielle Zeichen
+ , - , * , / , ^ , : , [ ]
Elementare Matrizen und Matrixmanipulationen
length, ones, zeros
Elementare mathematische Funktionen und Konstanten
cos, exp, floor, pi, sin
2-dim. Grafik-Befehle
axis, figure, grid, plot, polar, stem, subplot, title, xlabel, ylabel, \rightarrow
Sound-Befehle
beep, sound, soundsc, wavread, wavwrite
Þ Online-Ressourcen
dsplab2_1.m, dsplab2_2.m, dsplab2_3.m, adsr_profile.m, handel.wav, dsplab2_3b.m, dsplab2_3b.m, dsplab2_3c.m, dsplab2_3d.m
26
3
Diskrete Fourier-Transformation
3.1
Einführung
Dieser Versuch ist der erste von vier zum Thema Frequenzbereichsdarstellung mit der diskreten Fourier-Transformation (DFT). Er führt Sie in die Grundlagen einer der häufigsten Anwendungen der digitalen Signalverarbeitung ein, die Kurzzeit-Spektralanalyse. Wichtige mathematische Zusammenhänge werden in der Versuchsvorbereitung vorgestellt und an Beispielen erläutert. In der Versuchsdurchführung werden die Ergebnisse mit MATLAB überprüft und die DFT zur Kurzzeit-Spektralanalyse angewendet. Anmerkung: Die DFT gehört zur Familie der linearen Blocktransformationen, wie die eng mit ihr verwandte und in der Audio- und Videocodierung wichtige diskrete Kosinus-Transformation (DCT) [Wer08b]. Lernziele Nach Bearbeiten dieses Versuches können Sie x
die Definitionsgleichungen der DFT und IDFT angeben
x
die Begriffe harmonische Analyse, DFT-Spektrum und DFT-Koeffizient sowie die Zusammenhänge erläutern
x
den prinzipiellen Zusammenhang zwischen den DFT-Koeffizienten und den transformierten Zeitsignalen erklären
x
für Sinus- und Kosinussignale das DFT-Spektrum und umgekehrt berechnen
x
für eine periodische Kosinusfolge die DFT-Länge so bestimmen, dass das DFT-Spektrum genau zwei von null verschiedene DFT-Koeffizienten aufweist
x
den Leakage-Effekt erklären und seine Bedeutung für die Spektralanalyse einschätzen
3.2
Grundlagen
3.2.1
Diskrete Fourier-Transformation
Die Signaldarstellung im Frequenzbereich ist in vielen Anwendungsgebieten von großer Bedeutung. Die für zeitkontinuierliche Signale bekannten Methoden der Fourier-Analyse in Tabelle 3-1 sind auf zeitdiskrete Signale übertragbar [Wer08b]. Der harmonischen Analyse periodischer, zeitkontinuierlicher Signale mit der Fourier-Reihe entspricht die diskrete FourierTransformation (DFT) periodischer Folgen. Sie nimmt eine herausragende Rolle in der Signalverarbeitung ein. Ihre Bedeutung gründet sich auf vier Eigenschaften: Die DFT lieferte eine eineindeutige Abbildung zwischen der Zeitfolge x[n] und ihrem Spektrum X[k]. Die DFT steht in engem Zusammenhang mit der Fourier-Reihe und der Fourier-Transformation. Sie wird deshalb auch zur Analyse zeitkontinuierlicher Signale eingesetzt und auch vom Spektrum im Frequenzbereich gesprochen. Die DFT eignet sich besonders zur numerischen Berechnung auf Digitalrechnern, da sie sowohl im Zeit- als auch im Frequenzbereich diskret und von endlicher Länge ist.
3.2 Grundlagen
27
Die DFT kann mit der schnellen Fourier-Transformation effizient berechnet werden. Tabelle 3-1 Signaldarstellung im Zeit- und im Frequenzbereich Fourier-Analyse zeitkontinuierliche Funktionen
zeitdiskrete Funktionen
Fourier-Reihe
diskrete Fourier-Transformation (DFT)
aperiodische Zeitfunktion
periodische Zeitfunktion
f
¦
x(t )
k f
1 T0
ck
t0 T0
³
ck e jkZ0t
1 N
x[n]
N 1
¦ X [k ] e j 2S kn / N
k 0
N 1
x(t ) e jkZ0t dt
X [k ]
¦ x[n] e j 2S kn / N
n 0
t0
) Linienspektrum der DFT-Koeffizienten Xk ) Linienspektrum mit den Fourier-Koefmit der Periode N zu den normierten Kreisfizienten ck bei den Kreisfrequenzen kZ0 mit frequenzen k 2S / N, k = 0 : N1, mit der norder Grundkreisfrequenz Z0 = 2S/T0 und der mierter Grundkreisfrequenz 2S / N und der Periode T0 des Zeitsignals Periode N des Zeitsignals Fourier-Transformation
x(t )
1 2S
f
³
X ( jZ ) e jZ t dZ
1 2S
x[n]
f f
X ( jZ )
Fourier-Transformation (für Folgen)
³ x(t ) e
jZ t
j:
e j :n d :
f
¦ x[n] e j:n n f
X e j:
dt
f
) allgemeines Spektrum
³ 2S X e
) periodisches Spektrum mit Periode 2S
Wegen ihres engen Zusammenhangs mit der Fourier-Reihe wird die DFT auch als „diskrete Fourier-Reihe“ bezeichnet. Während die Fourier-Reihe mit k = 0, r1, r2, ... ein unendlich ausgedehntes Linienspektrum zu den Kreisfrequenzen kZ0 erzeugt, ordnet die DFT wegen der Periodizität der Exponentialfunktion exp(j2Sk/N) den N Elementen einer Periode der Folge genau N Spektrallinien für k = 0, 1, ..., N1 zu. Man spricht deshalb auch von einer BlockTransformation. Für das Verständnis der DFT und ihrer Anwendung ist weiter wichtig, dass sie für periodische Folgen definiert ist, siehe Bild 3-1, aber häufig auf Folgen endlicher Länge angewendet wird. Da jede Folge endlicher Länge L mit der Periode N t L eindeutig periodisch fortgesetzt werden kann, ist die DFT auf alle geordneten Zahlenfolgen endlicher Länge anwendbar. Grundperiode
8
1 0
78
Bild 3-1 Periodische Folge
n
28
3 Diskrete Fourier-Transformation
Man beachte in Tabelle 3-1, dass die DFT und ihr Inverses (IDFT) bis auf den Skalierungsfaktor 1/N symmetrisch sind. Damit kann jede geordnete Folge endlicher Länge prinzipiell sowohl als Zeitsignal als auch als Spektrum interpretiert werden. Und die Sätze der DFT für den Zeitbereich haben ihre Entsprechungen im Frequenzbereich. Die Überlegungen fassen die folgenden Definitionen zusammen: Die diskrete FourierTransformation (DFT) einer Folge x[n] der Länge N mit n = 0, 1, ..., N1 ist die Folge der DFT-Koeffizienten N 1
¦ x[n] wNkn
X [k ]
für k = 0, 1, 2, ..., N1
(3.1)
n 0
mit dem komplexen Faktor wN
e j 2S / N
(3.2)
Die inverse DFT (IDFT), liefert wieder die ursprüngliche Folge. x[n]
1 N 1 ¦ X [k ] wNkn Nk 0
1 N 1 ª § 2S kn · § 2S kn · º ¦ X [k ] «¬cos ¨© N ¸¹ j sin ¨© N ¸¹»¼ Nk 0
(3.3)
Die Folge x[n] und ihr DFT-Spektrum X[k] bilden ein DFT-Paar. DFT
(3.4)
x[n] l X [k ]
Beispiel DFT einer Kosinusfolge
Ein grundlegendes Beispiel liefert die DFT der Kosinusfolge §S · x[n] cos ¨ n ¸ ©8 ¹
(3.5)
Sie soll der DFT der Länge N = 32 unterworfen werden. 31
X [k ]
2S
§ S · j nk ¦ cos ¨© 8 n ¸¹ e 32 n 0
für k = 0:31
(3.6)
Für den weiteren Rechengang ist es vorteilhaft, die Kosinusfunktion mit der eulerschen Formel in komplex-exponentieller Form darzustellen. Nach kurzer Zwischenrechnung erhält man zwei geometrische Reihen X [k ]
S § S · 1 31 ¨ j 16 2 k n j 16 2 k n ¸ e e ¸ 2 n 0¨ © ¹
¦
die in dem Ausdruck resultieren
für k = 0:31
(3.7)
3.2 Grundlagen
29
X [k ]
§ · j 2S 2 k j 2S 2 k ¸ 1 ¨1 e 1 e ¨ ¸ S S 2¨ j 2 k j 2 k ¸ 16 16 1 e © 1 e ¹
für k = 0:31
(3.8)
Die Untersuchung der Brüche zeigt, dass die Zähler null sind, da in den Exponenten stets ein ganzzahliges Vielfaches von 2S auftritt. Man beachte, dass auch die Nenner für k = 2 und 30 Nullstellen aufweisen. Für k = 2 und 30 liegen somit unbestimmte Ausdrücke vor, die aus (3.8) mit der Regel von L’Hospital, oder einfacher direkt durch Einsetzen der beiden Werte für k aus (3.7) bestimmt werden können. Es resultiert die DFT der Kosinusfolge X [k ] 16 G [k 2] G [k 30]
für k = 0:31
(3.9)
Die Kosinusfolge und ihr DFT-Spektrum sind in Bild 3-2 dargestellt. Sie wurden mit dem Programmbeispiel 3-1 (Hauptprogramm mit Funktion) berechnet.
0
-1
0
5
10
15 no
20
25
10 0 -10 0
5
10
15 k o
20
25
30
0
-1
30
Im(X[k ]) o
Re(X[k ]) o
1 Im(x[n]} o
Re(x[n]) o
1
0
5
10
15 no
20
25
30
0
5
10
15 k o
20
25
30
10 0 -10
Bild 3-2 Kosinusfolge (oben) und ihr DFT-Spektrum (unten)
Wie in Bild 3-2 zu sehen ist, erfasst die DFT der Länge N = 32 genau zwei Perioden der Kosinusfolge. Die DFT liefert deshalb genau zwei von null verschiedene Koeffizienten, nämlich für k = 2 und k = N 2 = 30. Damit kann von den DFT-Koeffizienten eindeutig auf das Kosinussignal und seine Periode geschlossen werden. Die Betrachtung der DFT als harmonische Analyse macht dies nochmals deutlich, siehe (3.3). Die DFT stellt jede Folge als mit den DFT-Koeffizienten gewichtete Überlagerung von Kosinus- und Sinusfolgen dar
x[n]
1 N 1 X [k ] cos :k n j sin :k n Nk 0
¦
für n = 0:N1
(3.10)
mit den normierten Kreisfrequenzen :k
2S k N
für k = 0:N1
(3.11)
30
3 Diskrete Fourier-Transformation
Durch Koeffizientenvergleich ergibt sich der Zusammenhang § 2S K · DFT N cos ¨ n¸ l G [k K ] G [k ( N K )] 2 © N ¹
da cos x
cos( x)
für k = 0:N1
(3.12)
cos(2S x) .
Programmbeispiel 3-1 DFT der Kosinusfolge % dft spectrum of a cosine sequence % dsplab3_1.m * mw * 03/17/2008 N = 32; % length of sequences (period) n = 0:N-1; % normalized time Omega = pi/8; % normalized radian frequency x = cos(Omega*n); % cosine sequence X = dft(x); % computation of dft spectrum % Graphics FIG = figure('Name','dsplab3_1','NumberTitle','off',... 'Units','normal','Position',[.3 .5 .6 .4]); subplot(2,2,1), stem(0:N-1,real(x),'full') axis([0 N-1 -1 1]); grid, xlabel('{\itn} \rightarrow'), ylabel('Re({\itx}[{\itn}]) \rightarrow') subplot(2,2,2), stem(0:N-1,imag(x),'full') axis([0 N-1 -1 1]); grid, xlabel('{\itn} \rightarrow'), ylabel('Im({\itx}[{\itn}]\} \rightarrow') subplot(2,2,3), stem(0:N-1,real(X),'full') MAX = max(abs(X)); axis([0 N-1 -MAX MAX]); grid, xlabel('{\itk} \rightarrow'), ylabel('Re({\itX}[{\itk}]) \rightarrow') subplot(2,2,4), stem(0:N-1,imag(X),'full') axis([0 N-1 -MAX MAX]); grid, xlabel('{\itk} \rightarrow'), ylabel('Im({\itX}[{\itk}]) \rightarrow') % dft computation in the direct form % function X = dft(x) % x : time-domain signal % X : dft spectrum of x % dft.m * mw * 03/17/2008 function X = dft(x) N = length(x); % length of input signal and dft w = exp(-j*2*pi/N); % complex exponential X = zeros(1,N); % allocate memory for dft spectrum for k=0:N-1 % dft computation in direct form wk = w^k; for n = 0:N-1 X(k+1)= X(k+1) + x(n+1)*wk^n; end end
3.3 Vorbereitende Aufgaben
3.2.2
31
Eigenschaften der diskreten Fourier-Transformation
Die DFT besitzt ähnliche Eigenschaften wie die Fourier-Transformation für Folgen, wie z. B. die Symmetrie zwischen der Hin- und Rücktransformation. Wegen der periodisch zu denkenden Folgen ergeben sich die speziellen Eigenschaften zur zyklischen Verschiebung und zyklischen Faltung. In Tabelle 3-2 sind einige wichtige Eigenschaften im Sinne einer Formelsammlung zusammengestellt [Wer08b]. Einige davon werden später noch genauer erläutert und in der Versuchsdurchführung verwendet. Für eine Herleitung oder ausführliche Diskussion wird auf die Lehrbücher im Literaturverzeichnis verwiesen. Tabelle 3-2 Sätze der diskreten Fourier-Transformation für Folgen der Länge N DFT
¦ al xl [n]
Linearität
l
l
Zyklische Verschiebung Modulation ( wN
x[n]
Konjugiert komplexe Folge
x*[n] N
Zyklische Faltung
DFT
l
x1[n] x2 [n] N 1
Parsevalsche Gleichung
¦
x[n]
2
n 0
Zuordnungsschema e: gerade (even) o: ungerade (odd) r: reell (real) i: imaginär (imaginary)
l
DFT
l
DFT
l
mk wN X [k ]
(3.14)
X [k l ]
(3.15)
DFT
X [k ]
(3.16)
X *[k ]
(3.17)
X 1[ k ] X 2 [ k ]
(3.18)
DFT
N 1 X1[k ] * X 2 [k ] N
(3.19)
DFT
1 N
x1[n] * x2 [n]
Multiplikation
DFT
nl wN x[n]
Spiegelung
(3.13)
l
x[n m]
e j 2S / N )
¦ al X l [k ]
l
l
l
N 1
¦
X [k ]
2
(3.20)
k 0
x[n] = xer[n] + xor[n] + j( xei[n] + xoi[n]) DFT
(3.21)
X[k] = Xer[k] + Xor[k] + j ( Xei[k] + Xoi[k])
3.3
Vorbereitende Aufgaben
A3.1
Von zentraler Bedeutung für die Eigenschaften der DFT ist die Orthogonalität der komplexen Exponentiellen. 2S 1 N 1 j N kn e Nn 0
¦
1 für k ® ¯0 sonst
mN
und k, m ganze Zahlen
Verifizieren Sie die Gleichung mit der geometrischen Reihe.
(3.22) #
32 A3.2
3 Diskrete Fourier-Transformation Geben Sie für die nachfolgenden Signale, mit n = 0:N1 und 0 d n0 < N1 bzw. 0 d :0 S , jeweils das DFT-Spektrum der Länge N an. # Hinweis: Beispiel und A3.1. x1[n] G [n n0 ] DFT
x2 [n] cos(:0 n)
l
X 2 [k ]
2S k · 2S k · § § ª j ¨ :0 j ¨ :0 ¸N ¸N « N ¹ N ¹ © © 1 1 e 1 e « 2S k · 2S k · § § 2 « j ¨ :0 j ¨ :0 ¸ ¸ N ¹ N ¹ © « 1 e © 1 e ¬
º » » » » ¼
x3 [n] sin(:0 n) x4 [n] e j:0n x5 [n] 1
A3.3
Geben Sie für den Sonderfall :0 X2[k], X3[k] und X4[k] an.
O 2S N mit O {1, 2, ..., N1} die Spektren #
Hinweis: Orthogonalität der komplexen Exponentiellen. § 2SO n · x2 [n] cos ¨ ¸ © N ¹ x3[n] sin
2SO n N
DFT
l
X 3[ k ]
N G [k O ] G [k ( N O )] 2j
x4 [n] e j 2SO n / N
A3.4
In Tabelle 3-3 werden die Werte der Folge in Bild 3-1 und die zugehörigen DFTKoeffizienten angegeben. Zeichnen Sie das DFT-Spektrum in Bild 3-3. Hinweis: Wegen der Periodizität des komplexen Faktors wN in 2S, ist das DFTSpektrum bzgl. k periodisch in N. Welche besonderen Eigenschaften weist das DFT-Spektrum auf? Woran sind diese im Zeitsignal zu erkennen? Schreiben Sie Ihre Erklärung auf. Eine 1/4 Seite sollte genügen.
"
Hinweis: Siehe Tabelle 3-2. A3.5
Machen Sie sich mit dem Programmbeispiel 3-1 vertraut. Es stellt Ihnen für die Versuchsdurchführung Grafikbefehle bereit, die Sie in Ihre Programme übertragen können.
3.4 Versuchsdurchführung
33
Tabelle 3-3 Zeitsignal x[n] und DFT-Spektrum X[k] n, k
0
1
2
3
4
5
6
7
x[n]
1
1
0
1
1
1
0
0
Re(X[k])
1
2.707
0
1.293
1
1.293
0
2.707
Im(X[k])
0
2.121
1
2.121
0
2.121
1
2.121
Re( X[k] )
Im( X[k] )
2
2
k
k 8
4
0
4
8
8
2
4
0
4
8
2
Bild 3-3 DFT-Spektrum des Zeitsignals in Bild 3-1
3.4
Versuchsdurchführung
M3.1
Erzeugen Sie das Signal x1[n] aus A3.2 für N = 32 und n0 = 4. Führen Sie die DFT durch und vergleichen Sie die grafischen Darstellungen mit Ihren vorbereiteten Ergebnissen. Hinweis: Verwenden Sie das M-File dft.m.
M3.2
Erzeugen Sie die Signale x2[n] bis x5[n] für N = 32 und :0 = 4S / N aus A3.3-2. Führen Sie für die Signale die DFT durch. Vergleichen Sie die grafischen Darstellungen mit Ihren vorbereiteten Ergebnissen.
M3.3
Wiederholen Sie das letzte Experiment für das Signal x2[n] mit der geänderten normierter Kreisfrequenz :0 = 4.5S / N. Wenn :0 z O 2S N mit O {1, 2, ..., N1} gewählt wird, verändern sich die DFT-Spektren in A3.3-3 in charakteristischer Weise. Erklären Sie die Veränderung im Spektrum. Warum verwendet man hier den Begriff Leakage-Effekt? Hinweis: Leakage, engl. für Auslaufen, Lecken (Leck-Effekt).
M3.4
Machen Sie sich die Zerlegung eines Signals in Kosinus- und Sinusfunktionen durch die harmonische Analyse nochmals klar, indem Sie die Fourier-Reihe für den periodischen Rechteckimpulszug aus dem ersten Versuch verwenden: x(t )
1 2 f 1 ¦ sin (2m 1) 2S t 2 S m 0 2m 1
(3.23)
34
3 Diskrete Fourier-Transformation Aus der Fourier-Reihe folgen für die DFT-Koeffizienten X[k] die Berechnungen im Programmbeispiel 3-2. Machen Sie sich mit dem Programm vertraut und stellen Sie den Zusammenhang mit der Fourier-Reihe (3.23) her. Beachten Sie dabei das Zuordnungsschema in Tabelle 3-2. Überprüfen Sie das Programm dsplab3_2, indem Sie es für verschieden DFTLängen starten. Hinweis: Das bereitgestellte Programm erzeugt Grafiken für das Signal und sein DFT-Spektrum mit jeweils N Werten für eine Periode.
M3.5
Zum Abschluss wenden Sie die DFT auf ein Audiosignal an und überprüfen dabei gleichzeitig der Rechenzeitbedarf der DFT. Verwenden Sie dazu das Programmbeispiel 3-3 mit der Audiodatei handel.wav. Das Programm entnimmt der Audiodatei eine Probe mit 2048 Abtastwerten, die weiterverarbeitet werden. Zusätzlich liefert das Programm Werte der Systemzeit vor und nach Berechnung der DFT. Schätzen Sie, wie lange es dauern würde, ein entsprechendes Audiosignal der Dauer von einer Sekunde zu transformieren? Notieren Sie Ihre Antwort. Im nächsten # Versuch können Sie überprüfen, ob Ihre Schätzung richtig lag. Hinweis: Auf einem schnellen PC kann die Berechnung der DFT der Länge 2048 einige Sekunden dauern.
Programmbeispiel 3-2 Signalsynthese durch inverse DFT % fourier synthesis by idft % dsplab3_2.m * mw * 03/17/2008 N = 16; % length of sequences (period) % dft coefficients X = zeros(1,N); % allocate memory and set default values zero X(0+1)= N/2; % X[0]= N/2 cf = (N/2)*(2/pi); % common factor for k = 1:2:N/2 % for odd indices X[1],X[3],...,X[N/2] X(k+1) = -j*cf/k; end % Complete dft spectrum of real-valued signal by using even and odd symmetry % for real and imaginary parts respectively X(N:-1:N/2+1) = -X(2:N/2+1); x = idft(X); % computation of time-domain signal % Graphics % …
3.4 Versuchsdurchführung
35
Programmbeispiel 3-3 DFT eines Audiosignals mit Rechenzeitabschätzung % dft spectra of audio signals % dsplab3_3.m * mw * 03/17/2008 [y,fs] = wavread('handel'); % load audio data N = 2048; % dft length s = y(2000:2000+N-1); % audio clip with N samples soundsc(s,fs); % play audio clip CLOCK = clock; % challenge time fprintf('dft start: min:sec %g : %g\n',CLOCK(5),CLOCK(6)) S = dft(s); % DFT of audio clip CLOCK = clock; % challenge time fprintf('dft stop: min:sec %g : %g\n',CLOCK(5),CLOCK(6)) % Graphics FIG = figure('Name','dsplab3_3 : audio signal clip','NumberTitle','off'); t =(0:length(s)-1)/fs; % time subplot(3,1,1), plot(t,s), grid xlabel('{\itt} in s \rightarrow'), ylabel('{\its}({\itt}) \rightarrow') L = length(S)/2; % show section of length L f = 0:L-1; % frequency scale f = f*fs/length(S); % frequency in Hz subplot(3,1,2), bar(f(1:L),abs(S(1:L)/max(abs(S)))), grid axis([0 f(L) 0 1]); xlabel('{\itf} in Hz \rightarrow'), ylabel('|{\itS}({\itf})| \rightarrow') subplot(3,1,3), semilogy(f(1:L),abs(S(1:L)/max(abs(S)))), grid xlabel('{\itf} in Hz \rightarrow'), ylabel('|{\itS}({\itf})| \rightarrow') axis([0 f(L) 0 1]);
Hinweise zu MATLAB-Funktionen und M-Files Tabelle 3-4 MATLAB-Befehle benutzte Programme und Dateien, siehe auch vorhergehende Versuche Programmablaufsteuerung
pause
Spezielle Befehle
clock
Elementare mathematische Funktionen
abs, imag, max, min, real, conj
Textausgabe am Bildschirm
fprintf
2-dim. Grafik
semilogx, semilogy
Þ Online-Ressourcen
dsplab3_1.m, dsplab3_2.m, dsplab3_3.m, handel.wav, dsplab3_1b, idft.m
36
4
Schnelle Fourier-Transformation
4.1
Einführung
Ein wichtiges, manchmal sogar entscheidendes Kriterium für die Anwendung der digitalen Signalverarbeitung ist die Komplexität der eingesetzten Algorithmen. Sie wird meist durch die Zahl der erforderlichen Rechenoperationen und den Bedarf an Speicherplätzen abgeschätzt. Dies gilt besonders für die diskrete Fourier-Transformation (DFT). Für sie wird in diesem Versuch eine effiziente Implementierung vorgestellt: die schnelle Fourier-Transformation (FFT, Fast Fourier Transform). Die FFT und verwandte Algorithmen haben einen erheblichen Anteil daran, dass die digitale Signalverarbeitung in viele naturwissenschaftlich-technische Anwendungen vordringen konnte. Weil für den Versuch keine besonderen Vorkenntnisse vorausgesetzt werden, wird in der Vorbereitung zunächst der FFT-Algorithmus erarbeitet. Die Entwicklung des Algorithmus ist typisch für die digitale Signalverarbeitung und hat deshalb für sich selbst einen hohen Wert. Lernziele Nach Bearbeiten dieses Versuches können Sie x
den Begriff Komplexität und seine Bedeutung in der digitalen Signalverarbeitung am Beispiel der DFT und FFT erklären
x
den Radix-2-FFT-Algorithmus entwickeln und erläutern
x
den Radix-2-FFT-Algorithmus programmieren
4.2
Komplexität
Anfang der sechziger Jahre wurden, durch den Fortschritt der Digitaltechnik begünstigt, zunehmend Verfahren der digitalen Signalverarbeitung eingesetzt. Bei der Spektralanalyse mit der DFT zeigte sich jedoch, dass für eine gute Frequenzauflösung große Transformationslängen benötigt werden. In vielen Fällen war damit zunächst eine digitale Signalverarbeitung in Echtzeit nicht möglich, d. h. eine Signalverarbeitung, die Ausgangswerte mit mindestens der gleichen Rate erzeugt, wie Eingangswerte zugeführt werden. 1965 schlugen Cooley und Tukey ein Verfahren vor, das speziell für große Transformationslängen die Berechnung der DFT stark beschleunigte und ihr so ein breites Anwendungsfeld eröffnete [CoTu65]. Unter dem Begriff schnelle Fourier-Transformation (FFT, Fast Fourier Transform) werden heute verschiedene Verfahren zusammengefasst, deren Ansätze u. a. bis auf Gauß (1805) zurückreichen. Je nach Anwendung, wobei auch Überlegungen zur verwendeten Hardware (Prozessorarchitektur, Speicherausstattung, u. ä.) einfließen, werden verschiedene Algorithmen der FFT eingesetzt. In diesem Versuch wird der am häufigsten verwendete Algorithmus, die Radix-2-FFT behandelt. Anwendungen der FFT in der Kurzzeit-Spektralanalyse werden in den nächsten beiden Versuchen vorgestellt.
4.3 Radix-2-FFT-Algorithmus
37
Den Anfang macht die Abschätzung des Rechenaufwandes der DFT als einfaches Maß für die Komplexität des Algorithmus. Der Definitionsgleichung der DFT N 1
X [k ]
¦ x[n] wNnk
für k = 0:N1
(4.1)
n 0
mit den komplexen Faktoren nk wN
e
j
2S nk N
(4.2)
ist zu entnehmen, dass zur Berechnung der N DFT-Koeffizienten jeweils N Multiplikationen der komplexen Folgenelemente mit den komplexen Faktoren und N1 Additionen der Multiplikationsprodukte auszuführen sind. Mit 4 + 2 Gleitkomma-Operationen (FLOPs, Floating Point Operations) für jede komplexe Multiplikation und 2 FLOPs für jede komplexe Addition, erhält man die Abschätzung des Rechenaufwands der direkten Form der DFT.
RDFT ,direkt | 8 N 2 FLOPs
(4.3)
Die komplexen Faktoren werden dabei als gespeicherte Konstanten angesehen. Bei großen Transformationslängen ist ein dementsprechend großer Speicher vorzusehen. Handelt es sich um externen Speicher, so kann die Speicherzugriffszeit zu einer kritischen Größe werden. Verzichtet man auf die Speicherung und berechnet die komplexen Faktoren, entsteht ein zusätzlicher Rechenaufwand. Darüber hinaus kann die fortlaufende Berechnung wegen der Fehlerfortpflanzung zu nicht tolerierbaren numerischen Ungenauigkeiten führen.
4.3
Radix-2-FFT-Algorithmus
Der Rechenaufwand der direkten Form der DFT (4.3) steigt quadratisch mit der Transformationslänge. Die Radix-2-FFT setzt genau an dieser Stelle an, indem Sie die DFT sukzessive in je zwei DFT der halben Länge zerlegt, bis schließlich die Transformationslänge 2 erreicht ist. Dazu muss die DFT-Länge N eine Zweierpotenz sein, also N = 2P mit der natürlichen Zahl p. Zunächst kann die DFT (4.1) in zwei Teilsummen zerlegt werden für gerade und ungerade Indizes. X [k ]
N 1
N 2
n 0
n 0,2,!
¦ x[n] wNnk
¦
nk x[n] wN
N 1
¦
nk x[n] wN
(4.4)
n 1,3,!
Die Substitutionen n n
2m für n gerade 2m 1 für n ungerade
und M liefern dann
N 2
(4.5)
38
4 Schnelle Fourier-Transformation M 1
¦
X [k ]
2 mk x[2m] wN
m 0
M 1
¦ x[2m 1] wN(2m1)k
(4.6)
m 0
Berücksichtigt man noch die Umformungen für die komplexen Faktoren 2mk wN
mk wM
(4.7)
und (2 m 1) k wN
k mk wN wM
(4.8)
so resultieren zwei Transformationen der halben Länge des Signals. X [k ]
M 1
M 1
m 0
m 0
¦ x[2m] wMmk wNk ¦ x[2m 1] wMmk
(4.9)
Ist die ursprüngliche DFT-Länge N eine Zweierpotenz, kann die Zerlegung Schritt für Schritt weitergeführt werden, bis schließlich die DFT-Länge 2 erreicht ist. Das folgende Beispiel für die DFT-Länge N = 8 zeigt die Methode auf. Es wird der Signalflussgraf der Radix-2-FFT entwickeln. Die erste Zerlegung (4.9) führt mit den Substitutionen u[m]
x[2m] und v[m]
x[2m 1] für m = 0:M1
(4.10)
und M 1
X [k ]
¦ u[m] wMmk
k wN
m 0
M 1
¦ v[m] wMmk
m 0
U [k ]
(4.11)
V [k ]
auf den Signalflussgrafen in Bild 4-1. Beachten Sie auch, dass Pfadgewichte (Faktoren), falls nicht angegeben, zu 1 angenommen werden. Die Aufteilung der Eingangsfolge, englisch Decimation-in-time decomposition genannt, ergibt sich unmittelbar aus der Substitution (4.10). Es wird zweimal eine DFT der Länge M = N / 2 = 4 berechnet. Danach werden die DFT-Koeffizienten der Zwischenergebnisse entsprechend (4.11) zusammengefasst. Dabei kann vorteilhaft deren Periodizität bzgl. des DFT-Index k benutzt werden. Wegen m( k M ) wM
mk mM wM wM N 1
mk wM
(4.12)
gilt U[0] = U[4], U[1] = U[5], usw. Die von V[0], ..., V[3] ausgehenden Pfade werden entsprek gewichtet. chend (4.11) mit den Faktoren wN
Die beiden weiteren Zerlegungen ergeben schließlich den dreistufigen Signalflussgrafen in Bild 4-2. Er zeigt, dass in jeder Zerlegungsstufe jeweils N komplexe Multiplikationen und komplexe Additionen benötigt werden. Ist die Transformationslänge eine Zweierpotenz N = 2p, dann existieren genau p = log2(N) Zerlegungen. Der Rechenaufwand reduziert sich demzufolge
4.3 Radix-2-FFT-Algorithmus
39
auf etwa 8Nlog2(N) FLOPs. Das exponentielle Wachstum des Rechenaufwandes mit der DFTLänge ist nun durch ein, im Wesentlichen, lineares Wachstum ersetzt. Im Beispiel einer DFTLänge N = 1024 benötigt die Berechnung der DFT in der direkten Form (4.3) ca. 8,4 Millionen FLOPs und nach Radix-2-Zerlegung nur 0,082 Millionen FLOPs, und damit um zwei Größenordnungen weniger. u[0]
U[0]
x[2]
u[1]
U[1]
w80
x[4]
u[2]
U[2]
w81
U[3]
w82
x[0]
x[6]
DFT 4
u[3]
X[0] X[1] X[2] X[3] w83
x[1] x[3]
Bild 4-1
v[0]
V[0]
v[1]
V[1]
x[5]
v[2]
x[7]
v[3]
4
V[2] V[3]
X[4]
w85
X[5]
w86
X[6]
w87
X[7]
Signalflussgraf der Radix-2-FFT der Länge N = 8 mit Aufteilung im Zeitbereich nach erster Zerlegung mit den Zwischenergebnissen U[k] und V[k] x[0]
w20
x[4]
w42
w21
w43
x[1]
w20
w40
x[5]
w21
x[3] x[7] 1. Stufe
w80 X[1]
w41
w20
x[6]
X[0]
w40
w21
x[2]
Bild 4-2
DFT
w84
w81 X[2] w82
X[3]
w83 w84
X[4]
w41
w85
X[5]
w20
w42
w86
X[6]
w21
w43
w87
X[7]
2. Stufe
3. Stufe
Vorläufiger Signalflussgraf der Radix-2-FFT nach drei Zerlegungen mit Aufteilung im Zeitbereich (N = 8)
40
4 Schnelle Fourier-Transformation
Eine genaue Analyse des Signalflussgrafen zeigt, dass die Komplexität weiter reduziert werden kann. Man betrachte beispielsweise die Eingangswerte x[0] und x[4]. Aus ihnen werden ohne Verwendung weiterer Eingangswerte in der ersten Stufe genau zwei Zwischenwerte berechnet. Die Eingangswerte werden danach zur DFT nicht mehr benötigt, so dass ihr Speicherplatz mit den Zwischenwerten überschrieben werden kann. Man spricht von einem In-placeVerfahren. Die Verknüpfung über Kreuz stellt die Basisoperation der Radix-2-FFT dar. Sie tritt in allen Stufen auf. Bild 4-3 zeigt links die Basisoperation wie sie direkt aus dem Signalflussgrafen abgelesen werden kann. Im Aussehen ausgebreiteten Schmetterlingsflügeln ähnlich, hat sich für sie die englische Bezeichnung Butterfly durchgesetzt. Die zwei komplexen Multiplikationen in Bild 4-3 links lassen sich auf eine zurückführen, da in jeder Stufe s stets gilt wl s 2
s 1
s 1
w2s
2
2
wl s 2
1 wl s 2
für l = 0, 1, …, 2s11
(4.13)
Damit erhält man den Butterfly in Bild 4-3 rechts. Knoten
Knoten
Knoten
Knoten
m
m
m
m
m+2s1
m+2s1
m+2s1
wl s 2
wl s 2
s 1
wl s 2
1
m+2s1
2
Bild 4-3 Basisoperation (Butterfly) der Radix-2-FFT in der Stufe s mit zwei (links) bzw. einer (rechts) komplexen Multiplikation mit l {0, 1, ... , 2s1 1}
In Bild 4-4 sind die Überlegungen zum Signalflussgrafen der Decimation-in-time (DIT) Radix-2-FFT zusammengefasst. Näherungsweise sind pro Stufe N / 2 komplexe Multiplikation und N komplexe Additionen bzw. Subtraktionen erforderlich. Im Vergleich mit Bild 4-2 reduziert sich der Rechenaufwand auf RRadix 2 FFT | 5 N log 2 N FLOPs
(4.14)
Es ist offensichtlich, dass in den ersten beiden Stufen keine echten Multiplikationen erforderlich sind, so dass die Zahl der Multiplikationen noch etwas reduziert werden kann. Für die FFT werden in der Literatur verschiedene Modifikationen vorgeschlagen, die je nach Anwendung unterschiedlichen Zielvorstellungen gehorchen, wie kleiner Speicherplatzbedarf, kleine Rechenungenauigkeiten, kompaktes Programm, optimale Ausnutzung der Prozessorarchitektur, usw. Dabei werden auch unterschiedliche Voraussetzungen berücksichtigt, z. B. dass die DFT-Länge keine Zweierpotenz ist (Split-Radix-Algorithmus), dass die Eingangsfolgen rein reell sind oder nur einige wenige Werte des Spektrums gesucht werden (GoertzelAlgorithmus). Ihrer Bedeutung gemäß wird die FFT oft durch spezielle Hardware auf Signalprozessoren unterstützt, so dass sie besonders schnell ausgeführt werden kann. Beispielsweise warb eine Anzeige für einen bekannten Signalprozessor im Dezember 2003 mit dem Versprechen eine komplexe FFT der Länge 1024 in Gleitkomma-Arithmetik in ca. 17 Ps auszuführen, eine
4.4 Programmierung der DIT-Radix-2-FFT
41
Operation die beispielsweise bei der MPEG(Moving Pictures Experts Group)-AudioCodierung eingesetzt wird. Die FFT wird nicht nur zur Spektralanalyse verwendet, sondern findet beispielsweise auch zur Datenübertragung mit dem OFDM(Orthogonal Frequency Division Multiplex)-Verfahren Anwendung in drahtlosen lokalen Rechnernetzen (WLAN, Wireless Local Area Network) und dem terrestrischen digitalen Fernsehen (DVB-T, Digital Video Broadcasting Terrestrial). X[0]
x[0] 1
x[4]
X[1]
x[2] 1
x[6]
j
1
X[2]
1
X[3]
x[1]
1 w81
1
x[5] x[3]
1
x[7] Stufe 1
j Stufe 2
1
w82
1
w83
1 1 1
X[4] X[5] X[6] X[7]
Stufe 3
Bild 4-4 Signalflussgraf der DIT-Radix-2-FFT für die DFT-Länge N = 8
4.4
Programmierung der DIT-Radix-2-FFT
Die für die Realisierung der DIT-Radix-2-FFT sind zwei Verarbeitungsschritte wichtig. Sie lassen sich in Bild 4-4 erkennen: erstens das Ordnen der Eingangsfolge und zweitens die Verarbeitung im Signalflussgrafen. Nachfolgend werden beide Schritte genauer betrachtet. In der Versuchsvorbereitung sollen Sie selbst ein MATLAB-Programm zur Radix-2-FFT erstellen.
4.4.1
Ordnen der Eingangsfolge
Für die DFT-Länge N = 8 ist die Ordnung der Eingangsfolge Bild 4-4 zu entnehmen. Das allgemeine Schema wird der besseren Anschaulichkeit wegen nun am Beispiel der Transformationslänge N = 16 entwickelt. Den Ausgangspunkt bildet die Aufspaltung der DFT in zwei Teilsummen mit jeweils den geraden und den ungeraden Indizes in (4.4). Die Aufteilung wird für die DIT-Radix-2-FFT solange fortgesetzt, bis die Wertepaare für die Basisoperationen vorliegen, siehe Bild 4-5. Es ergeben sich in der letzten Spalte die Paarungen für die Butterfly-Operationen 0 und 8, 4 und 12, 2 und 10, usw. Der in Bild 4-5 entwickelte Zusammenhang lässt sich in einen effizient Algorithmus fassen. Dazu werden die Indizes I der Eingangsfolge als Dualzahlen
42
4 Schnelle Fourier-Transformation p 1
I
¦ bi 2i
mit bi ^0,1` und p
ld N
(4.15)
i 0
in Tabelle 4-1 dargestellt.
Anmerkungen: (i) Da die FFT einer der wichtigsten Algorithmen der digitalen Signalverarbeitung ist, besitzen manche Signalprozessoren ein Adressenrechenwerk mit Bit-reversal-Funktion. (ii) Eine bekannte Realisierungen der DIT-Radix-2-FFT in FORTRAN findet man z. B. in [OpSc95]. Sie dient als Grundlage für das hier erstellte MATLAB-Programm.
Das zu entwickelnde MATLAB-Programm benützt die Gesetzmäßigkeiten in Tabelle 4-1, die nun genauer diskutiert werden. Zunächst wird festgelegt, im Programm die Eingangsfolge x(I) für I von 0 bis N1 abzuarbeiten und entsprechend Tabelle 4-1 sequenziell die Plätze zu tauschen. Es resultiert die Struktur einer Laufanweisung, einer forSchleife, mit der temporären Hilfsvariablen T in Bild 4-6. Anmerkungen: (i) Beachten Sie, dass die Feldindizierung in MATLAB stets mit 1 beginnt. Um das Programm etwas zu beschleunigen, d. h. die Addition der Indizes mit 1 zu vermeiden, können Sie später auch die Schleifenanweisung anpassen. (ii) Durch das Tauschen der Plätze braucht kein neues Datenarray angelegt zu werden. Bei Eingangsfolgen der Länge 1024 und darüber ist die Speicherplatzersparnis in der Praxis oft ein wichtiger Vorteil.
Bild 4-5 Ordnen der Eingangsfolge (Indizes) für die DIT-Radix-2-FFT der Länge N = 16 in drei Zwischenschritten von links nach rechts
duale Darstellung 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111
I 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 2 4 6 8 10 12 14 1 3 5 7 9 11 13 15
Bit-reversalAnordnung 0000 1000 0100 1100 0010 1010 0110 1110 0001 1001 0101 1101 0011 1011 0111 1111
0 4 8 12
0 8 4 12 2 10 6 14 1 9 5 13 3 11 7 15
0 8 4 12
2 6 10 14
2 10
1 5 9 13
1 9
3 7 11 15
J
6 14
5 13 3 11 7 15
Indizierung der Eingangsfolge der 1. Stufe
Der Vergleich der Spalten für die Indizes I und J mit Bild 4-5 zeigt, dass der Index J die gewünschte Anordnung für die Eingangsfolge der 1. Stufe der DIT-Radix-2-FFT liefert. Der Zusammenhang gilt unabhängig von der Transformationslänge N.
Tabelle 4-1 Bit-reversal-Adressierung für die DIT-Radix-2-FFT
Indizierung der Eingangsfolge der FFT
Liest man jetzt den dualen Code in umgekehrter Reihenfolge resultiert z. B. aus 110 = 00012 nach dem Umsetzen 10002 = 810.
4.4 Programmierung der DIT-Radix-2-FFT Im Programmausschnitt fehlt die Zuordnung der jeweils richtigen Indizes I und J. Hier hilft ein Blick in Tabelle 4-1 einen inkrementellen Algorithmus zu entwickeln, der die Änderung des Index J widerspiegelt. Zunächst beginnt auch J mit dem Startwert 0. Es ist zu beobachten, dass bei den Übergängen von geraden Werten des Index I auf die nachfolgenden ungeraden, z. B. I = 0 auf 1, von 2 auf 3, von 4 auf 5 usw., der Index J stets einen Zuwachs von N / 2 erhält. Also im Beispiel von J = 0 auf 8, von 4 auf 12, von 2 auf 10 usw.
43 J = 0; for I=0:N-1
% exchange values
T = x(J+1); x(J+1) = x(I+1); x(I+1) = T; end Bild 4-6 Programmfragment A für die Bitreversal-Adressierung
Dieser Zuwachs spiegelt sich in der Bit-reversal-Adressierung wider. Beim Übergang von einem geraden Index I auf den folgenden ungeraden wird I um eins erhöht. Also das Bit mit der niedrigsten Wertigkeit, das Least-Significant-Bit (LSB) b0 = 1, gesetzt. Durch die Bit-reversalAdressierung wird daraus das Most-Significant-Bit (MSB) mit der Wertigkeit N / 2. Da die anderen Bits bei geradem I durch das Inkrementieren nicht betroffen sind, erwächst daraus genau ein Zuwachs um N / 2 für den neuen Wert J. Den neuen Wert für J beim Übergang von ungeraden auf gerade Werte des Index I zu finden, gestaltet sich aufwändiger, weil die Addition des LSB zu unterschiedlichen Bit-Überträgen führen kann. Die Beispiele in Bild 4-7, die Übergänge des Index I von 1 auf 2 und von 3 auf 4, veranschaulichen dies. Im ersten Fall gibt es einmal einen Übertrag im zweiten Fall zweimal. Die erforderliche Fallunterscheidung beim Inkrementieren eines ungeraden Indizes I wird im Programmausschnitt in Bild 4-8 vorgenommen.
b.-r.
110
00012 o 10002
210
00102 o 01002
310
00112 o 11002
410
b.-r. b.-r.
b.-r.
01002 o 00102
810 410 1210 210
Bild 4-7 Beispiele für die Bit-reversalAdressierung
Zunächst wird das Inkrement K für den Index J auf N /2 eingestellt. Dann wird in der Bedingung der while-Schleife geprüft, ob der Wert des Index J größer als N/2 ist. Ist das der Fall, so war der letzte Wert des Index I ungerade, siehe Tabelle 4-1. Ist das nicht der Fall, ist der aktuelle Wert des Index I ungerade und der neue Wert des Index J ergibt sich durch inkrementieren mit K = N / 2. Die while-Schleife wird abgewiesen. Im anderen Fall liegt ein Übergang von einem ungeraden Wert des Index I auf einen geraden vor. Damit sind Bitüberträge wie in Bild 4-7 möglich. Sie werden in der while-Schleife berücksichtigt. Ist J t N / 2 tritt in der dualen Darstellung im Übergang des alten Wertes von I auf den neuen ein Bit-Übertrag auf, d. h. für das LSB gilt nun b0 = 0. Weil das LSB von I zum MSB des Index J wird, muss letzteres auch 0 sein. Das Nullsetzen des MSB geschieht im Index J durch
% update index J K = N/2; % default increment while (K<=J) J = J - K; K = K/2; end J = J + K; Bild 4-8 Programmfragment B für den Bitreversal-Adressierung
44
4 Schnelle Fourier-Transformation
Subtraktion von N / 2. Nun kann, wie im Beispiel, ein Bit-Übertrag einen weiteren Bit-Übertrag nach sich ziehen. Es muss deswegen die Überlegung für Bit b0 mit Bit b1, b2, usw. wiederholt werden, bis kein BitÜbertrag mehr auftritt. Wegen der jeweils um den Faktor zwei abnehmenden Wertigkeiten der Bits in J, ist das geschilderte Verfahren mit der Subtraktion der Konstanten N / 4, N / 8, usw. entsprechend fortzusetzen. Tritt kein Bit-Übertrag mehr auf, so wird das Verfahren abgebrochen und das entsprechende Bit in J gesetzt. Die Überlegungen zur Bit-reversal-Adressierung sind im folgenden Programmbeispiel zusammengefasst. Man beachte, dass in MATLAB die Felderindizierung mit 1 beginnt. Weiter beachte man, der Austausch der Werte nur für I kleiner J vermeidet den Rücktausch. Programmbeispiel 4-1 Bit-reversal-Adressierung (Programmausschnitt) NV2 = N/2; NM1 = N-1; J = 1; for I=1:NM1 if (I<J) T = X(J); X(J) = X(I); X(I) = T; end K = N/2; while (K<J) J = J – K; K = K/2; end J = J + K; end
4.4.2
% exchange values
% update index
Signalverarbeitung im Signalflussgrafen
Nach dem Sortieren der Eingangsfolge kann die Signalverarbeitung entsprechend dem Signalflussgrafen in Bild 4-4 beginnen. Für die Programmierung der Radix-2-FFT ist es vorteilhaft, die jeweiligen Werte der Parameter im Signalflussgrafen Bild 4-4 bzw. in den Basisoperationen Bild 4-9 in allgemeiner Form anzugeben. Die Indizes I und J bezeichnen die Knoten im Signalflussgrafen von oben nach unten. Die Zählung beginnt mit dem Wert null. Anmerkung: Die Indizes I und J hier haben nichts mit der Bit-reversal-Adressierung zu tun. I
J = I + 2s1
I
w Ls 2
1
J
Bild 4-9 Basisoperation (Butterfly) der Radix-2-FFT in der Stufe s mit einer komplexen Multiplikation mit L {0, 1, ..., 2s1 1} und den Ein- bzw. Ausgangsknoten I und J
4.4 Programmierung der DIT-Radix-2-FFT
45
In der Stufe s werden in den Butterflies jeweils die Eingangs- bzw. Zwischenwerte der Knoten mit den Indizes I und J verknüpft. Dabei gilt aus Bild 4-4 für die Knoten der Zusammenhang I 2 s 1
J
(4.16)
Die Abhängigkeit des Index I von der Stufe s liefert der Ansatz I
I1 I 2
(4.17)
mit den Werten I1
0 2 s ,1 2 s , 2 2 s ,3 2s ,! N
I2
0,1, 2,! 2 s 1
(4.18)
Man beachte die oberen Schranken für die Indizes. Die Zuordnung der Indizes zu den Basisoperationen lässt sich für die DFT-Länge N = 8 anhand Tabelle 4-2 und Bild 4-4 anschaulich nachvollziehen. Ebenfalls in Tabelle 4-2 eingetragen sind die jeweils zugehörigen komplexen Faktoren W für die Basisoperationen. Der Vergleich mit der Zeile für I2 zeigt den Zusammenhang § 2S · exp ¨ j I2 ¸ s 2 © ¹
W
(4.19)
Damit sind zur Konstruktion des FFT-Programms alle notwendigen Bausteine bereitgelegt. Tabelle 4-2
Zuordnung der Indizes der Eingangs- bzw. Zwischenwerte zu den Basisoperationen in den Stufen s des Radix-2-FFT-Signalflussgraphen für die DFT-Länge N = 8 und die zugehörigen komplexen Faktoren W
s I1
2
1 0
2
I
0
J W
3
4
6 0
1
0
1
0
1
2
3
2
4
6
0
1
4
5
0
1
2
3
1
3
5
7
2
3
6
7
4
5
6
7
1
1
1
1
1
j
1
j
1
e jS
I2
0
0
4
0
4
e j 2S
4
e j 3S
4
Eine mögliche Implementierung stellt der folgende Programmausschnitt vor. Dort wird die Bearbeitung aller Basisoperationen durch die zwei ineinander geschachtelten while-Schleifen mit I2 und I1 für die äußere bzw. innere Schleife sichergestellt. Letzteres fasst die Basisoperationen mit gleichen komplexen Faktoren zusammen, was die Zahl der komplexen Multiplikationen etwas reduziert.
46
4 Schnelle Fourier-Transformation
Programmbeispiel 4-2 Signalflussgraf-Implementierung I (Programmausschnitt) % flow graph DIT-Radix-2-FFT for S=1:log2(N) L = 2^S; LV2 = L/2; I2 = 0; W1 = 1; W2 = exp(-j*pi/LV2); while (I2
% number of stages of flow graph
% +1 due to MATLAB indexing
FFT-Programme nach Cooley, Welch und Lewis, wie z. B. in [OpSc95], reduzieren die Komplexität und damit die Rechenzeit noch etwas, indem sie die Indexrechnung mit den whileSchleifen durch for-Schleifen vereinfachen. Programmbeispiel 4-3 zeigt die überarbeitete Version. Dabei ist berücksichtigt, dass die die MATLAB-Indizierung mit 1 beginnt. Zusammenfassend lässt sich der beschriebene Algorithmus zur FFT wie folgt charakterisieren: 1. Radix-2-FFT
)
wenn die Transformationslänge eine Zweierpotenz ist
2. Decimation-in- time (DIT)
)
wenn die Gruppierung im Zeitbereich erfolgt
3. In-place-Verfahren
)
wenn während der Berechnung frei werdender Speicherplatz überschrieben wird
Anmerkungen: (i) Ist die Transformationslänge keine Zweierpotenz, kann u. U. durch Anhängen von Nullen an das Signal, Zero-padding genannt, eine geeignete Länge eingestellt werden. (ii) Eine alternative Form des Signalflussgrafen erhält man mit einer Gruppierung im Frequenzbereich, der Decimation-infrequency (DIF) –Algorithmus.
4.5 Vorbereitende Aufgaben
47
Programmbeispiel 4-3 Signalflussgraf-Implementierung II (Programmausschnitt) % flow graph DIT-Radix-2-FFT [OpSc95] for S=1:log2(N) L = 2^S; LV2 = L/2; W1 = 1; W2 = exp(-j*pi/LV2); for J=1:LV2 for I=J:L:N IP = I + LV2 % butterfly T = X(IP)*W1; X(IP) = X(I) – T; X(I) = X(I) + T; end W1 = W1 * W2; end end
% number of stages of flow graph
4.5
Vorbereitende Aufgaben
A4.1
In der Versuchsdurchführung sollen Sie eine MATLAB-Funktion zur DIT-Radix-2FFT erstellen. Machen Sie sich mit den Programmbeispielen 4.1, 2 und 3 vertraut.
A4.2
In der Versuchsdurchführung sollen die Wachstumsgesetze des Rechenaufwands (Zahl der FLOPs) der DFT in direkter Form mit dem Programm dft und des von Ihnen erstellten FFT-Programms dit2fft verifiziert werden. MATLAB stellt Befehle zur Zeitmessung während eines Programmablaufs zur Verfügung. Überlegen Sie, wie Sie mit einer Zeitmessung die Wachstumsgesetze verifizieren können. Machen Sie sich mit dem Programmbeispiel 4-4 vertraut.
Programmbeispiel 4-4 Wachstumsgesetz der Komplexität der DFT % elapsed time for the dft and the dit2fft algorithm % dsplab4_1.m * mw * 04/02/2008 M1 = [256 512 1024 2048]; % signal length for dft M2 = [1024 2048 4096 8192 16384 32768]; % signal length for fft fprintf('compute dft\n') TIME1 = zeros(1,length(M1)); for k=1:length(M1) fprintf('length = %g\n',M1(k)) x = randn(1,M1(k)); % random signal in time domain t = cputime; % challenge Matlab cpu clock dft(x); % dft in direct form TIME1(k) = cputime-t; % elapsed Matlab cpu time end fprintf('compute dit2fft\n') TIME2 = zeros(1,length(M2));
48
4 Schnelle Fourier-Transformation
for k=1:length(M2) fprintf('length = %g\n',M2(k)) x = randn(1,M2(k)); % random signal in time domain t = cputime; % challenge Matlab cpu clock dit2fft(x); % dit2fft algorithm TIME2(k) = cputime-t; % elapsed Matlab cpu time end % Graphics TIMEref = 0.001; % normalize elapsed time TIME1 = TIME1/TIMEref; TIME2 = TIME2/TIMEref; P1 = log2(M1); P2 = log2(M2); TIMEmin = min([TIME1 TIME2]); tmin = 10^floor(log10(TIMEmin)); TIMEmax = max([TIME1 TIME2]); tmax = 10^ceil(log10(TIMEmax)); FIG1 = figure('Name','dsplab4_1 : estimates of elapsed cpu time for dft algorithms','NumberTitle','off',... 'Units','normal','Position',[.4 .4 .5 .5]); semilogy(P1,TIME1,'+',P2,TIME2,'*',P1,TIME1,':',P2,TIME2,':'), grid axis([min(P1) max(P2) tmin tmax]); xlabel('log_2(DFT length) \rightarrow') ylabel('elapsed cpu time [ms] \rightarrow') legend('dft','dit2fft')
4.6
Versuchsdurchführung
M4.1
Erstellen Sie eine MATLAB-Funktion zur DIT-Radix-2-FFT entsprechend Bild 4-4 für beliebige Zweierpotenzen als Transformationslänge. Verwenden Sie den Butterfly in Bild 4-3 rechts.
Hinweis: Verwenden Sie soweit möglich die Programmbeispiele 4-1, 4-2 und 4-3. Übernehmen Sie den Programmkopf in Programmbeispiel 4-4. Programmbeispiel 4-5 Radix-2-FFT mit DIT (Programmkopf) % decimation-in-time radix-2-fft % function y = dit2fft(x) % x : signal in time domain % X : dft spectrum % dit2fft.m * mw * 10/25/2005 function X = dit2fft(x)
M4.2
Testen Sie Ihr FFT-Programm dit2fft anhand von bekannten Beispielen, siehe Versuch 3. Verwenden Sie dazu auch die MATLAB-Built-in-Funktionen fft und ifft.
M4.3
Überprüfen Sie die Wachstumsgesetze für die Komplexität der DFT in direkter Form dft und Ihres DIT-Radix-2-Programmes dit2fft durch Messung der Rechenzeiten.
Hinweise: Benützen Sie das Programmbeispiel 4-4 dsplab4_1. Wenn Sie das Programm zweimal laufen lassen und die gemessenen Zeiten vergleichen, stellen Sie
4.6 Versuchsdurchführung
49
fest, dass die Zeitangaben nur Näherungswerte darstellen. Eventuell können an Ihrem Rechner durch weitere Prozesse im Hintergrund starke Schwankungen der Zeitangaben auftreten. M4.4
Überprüfen Sie Ihre Abschätzung im Versuch 3 für die Rechenzeit für die DFT eines Audiosignals der Dauer von 1 Sekunde bei einer Abtastfrequenz von 8 kHz.
Hinweis: Benutzen Sie die Beziehungen (4.3) und (4.14). Wie viel Rechenzeit wird für die DFT mit dem Programm dit2fft für das Audiosignal benötigt? M4.5
Messen Sie an Ihrem Computer die Rechenzeit für die MATLAB-Built-in-Funktion fft.
Hinweise: Ändern Sie dazu das Programm dsplab4_1.m entsprechend ab. Beachten Sie, dass die Funktion fft besonders laufzeiteffizient programmiert wurde.
Hinweise zu MATLAB-Funktionen und M-Files Im Folgenden werden für die Versuchsdurchführung nützliche MATLAB-Befehle und -Funktionen aufgelistet, zu denen Sie sich mit Hilfe der Help-Funktion Erläuterungen und Beispiele am Bildschirm anzeigen lassen können, siehe auch vorherige Versuche.
Tabelle 4-3 MATLAB-Befehle benutzte Programme und Dateien Spezielle Befehle
cputime
Elementare mathematische Funktionen
ceil, floor, log2, log10, max, min
Elementare Funktionen der Signalverarbeitung
fft, ifft
2-dim. Grafik
legend, text
Þ Online-Ressourcen
dft.m, idft.m, dsplab4_1.m, dsplab4_1b.m
50
5
Kurzzeit-Spektralanalyse: Grundlagen
5.1
Einführung
In diesem Versuch wird die Spektralanalyse analoger Signale durch die blockorientierte FFT vorgestellt. Da in der Regel nur ein kurzer Ausschnitt des Signals verarbeitet wird, spricht man von einer Kurzzeit-Spektralanalyse. Die Art und Weise wie die Blöcke aus dem Signal herausgeschnitten werden, Fensterung genannt, hat einen großen Einfluss auf das resultierende Spektrum. Nach einer Einführung in die Grundlagen werden in der Versuchsdurchführung häufig verwendete Fensterfunktionen genauer untersucht. Lernziele Nach Bearbeiten dieses Versuches können Sie x
die Verarbeitungsschritte der Kurzzeit-Spektralanalyse eines analogen Signals anhand eines Blockschaltbildes aufzeigen
x
in Abhängigkeit von der Abtastfrequenz die Abbildung der Frequenzkomponenten eines zeitkontinuierlichen Signals auf die Frequenzkomponenten der Abtastfolge angeben
x
für ein Kosinussignal die Abtastfrequenz und die FFT-Länge so bestimmen, dass im DFT-Spektrum genau zwei von null verschiedene Koeffizienten erscheinen
x
die spektrale Auflösung der DFT bestimmen
x
den Einfluss der Fensterung auf das gemessene Kurzzeit-Spektrum abschätzen und eine für die jeweilige Anwendung geeignete Fensterfolge auswählen
x
den Leakage-Effekt erklären und seine Wirkung auf das Kurzzeit-Spektrum abschätzen
x
die Zero-padding-Methode anwenden und ihre Auswirkung auf das gemessene Kurzzeit-Spektrum erklären
x
eine Klirrfaktormessung mit der DFT durchführen
x
das MATLAB Windows Design and Analysis Tool einsetzen
5.2
Grundlagen
Eine typische FFT-Anwendung zur Spektralanalyse zeigt Bild 5-1. Den Ausgangspunkt bildet das analoge Signal eines Sensors zur Drehzahlmessung einer Turbine. Es soll das Spektrum überwacht werden, um Störungen im gleichmäßigen Lauf der Turbine vor einem Bruch der Welle zu erkennen und rechtzeitig Reparaturmaßnahmen einzuleiten.
Analoge Signalquelle
x(t)
A/D
x[n]
xw[n]
Fensterung xw[n] = x[n]w[n]
FFT
Xw[k]
Darstellung / Auswertung
Bild 5-1 Blockschaltbild zur digitalen Spektralanalyse mit Fensterbewertung und FFT
5.2 Grundlagen
51
Über die Nenndrehzahl und der Messcharakteristik des Sensors kann der interessierende Frequenzbereich eingegrenzt werden. Ein Tiefpassfilter sorgt für die notwendige Bandbegrenzung vor der A/D-Umsetzung. Zur Spektralanalyse mit der FFT werden Ausschnitte xw[n] der laufend anfallenden Folge x[n] entnommen. Man spricht von einer Fensterung des Signals und beschreibt sie durch die Multiplikation der Folge mit der Fensterfolge (Window) w[n]. Die einfachste Fensterfolge ist ein Rechteckimpuls, der im Bereich des Fensters den Wert 1 hat und ansonsten 0 ist. In Bild 5-1 finden drei prinzipielle Verarbeitungsschritte statt: die Abtastung, die Fensterung und die FFT. Die einzelnen Schritte werden nachfolgend anhand eines Beispiels vorgestellt. Die dabei auftretenden Effekte können mit der Fourier-Transformation erklärt werden. Im Weiteren werden die Sätze der Fourier-Transformation für zeitkontinuierliche Funktionen bzw. für Folgen verwendet, wie sie in einführenden Lehrveranstaltungen zur Signal- und Systemtheorie zu finden sind, z. B. [Wer08b].
5.2.1
Abtastung
Wegen der einfachen grafischen Darstellung im Frequenzbereich, wird für das Beispiel das zeitkontinuierliche Kosinussignal gewählt x(t ) cos(Z0t )
(5.1)
mit dem impulsförmigen Spektrum, der Fourier-Transformierten, in Bild 5-2. X ( jZ ) S G (Z Z0 ) S G (Z Z0 ) T0
X( jZ)
1
x(t)
S
S
t
0 1 T
(5.2)
0
Z0
T
0
Z0
Z
Bild 5-2 Ausschnitt aus dem Kosinussignal und Spektrum des Kosinussignals (Z0 = 2S / T0 = 8S / T )
Die (ideale) Abtastung analoger Signale mit dem Abtastintervall (Sampling Interval) Ts kann durch die Multiplikation des Signals xs (t )
x(t ) p (t )
(5.3)
mit dem periodischen Impulskamm f
p(t )
¦ G (t nTs )
(5.4)
n f
beschrieben werden. Das jetzt nur zu diskreten Zeitpunkten von null verschiedene Abtastsignal wird im Zeitkontinuierlichen als Folge von Impulsfunktionen dargestellt, siehe Bild 5-3 oben. Die Multiplikation im Zeitbereich entspricht nach dem Modulationssatz der Fourier-Transformation einer Faltung der Spektren der Signale.
52
5 Kurzzeit-Spektralanalyse: Grundlagen 1 X ( jZ ) P ( jZ ) 2S
X s ( jZ )
(5.5)
Da das Spektrum des periodischen Impulskammes wieder ein periodischer Impulskamm ist P ( jZ )
2S Ts
f
¦ G Z 2S k Ts
(5.6)
k f
führt die Abtastung schließlich auf eine periodische Wiederholung des Signalspektrums. X s ( jZ )
1 Ts
f
¦ X j >Z 2S k Ts @
(5.7)
k f
Im Beispiel des zeitkontinuierlichen Kosinussignals ergibt sich der in Bild 5-3 oben gezeigte Ausschnitt des abgetasteten Signals. Das zugehörige Spektrum ist darunter dargestellt. Für die Zeichnung wurde das Abtastintervall Ts = T0 / 8 gewählt, womit das Abtasttheorem eingehalten wird. Anmerkung: Anhand des Beispiels wird auch die Aussage des Abtasttheorems deutlich. Wird die Abtastfrequenz fs = 1 / Ts etwas kleiner gewählt, rücken die Impulse im Spektrum im unteren Bild von den Kreisfrequenzen Z = r kZs weg. Das heißt, es nähern sich die periodischen Anteile im Spektrum an. Wird das Abtasttheorem verletzt, schieben sich die Anteile ineinander. Man spricht von einer spektralen Überfaltung, Bandüberlappung oder Aliasing. 1
x(t)
xs(t)
t
0 1 T
T/2
0
T/2
T
Xs( jZ) S / Ts k = 1
k=0
Zs
Z0
0
k=1
Z0
Z
Zs
Bild 5-3 Abgetastetes Kosinussignal und sein periodisches Spektrums (Zs = 8Z0)
5.2.2
Spektrum des zeitdiskreten Signals
Die Abtastung wurde im letzten Abschnitt aus der Sicht zeitkontinuierlicher Signale betrachtet. Wegen des engen Zusammenhangs zwischen dem Spektrum eines zeitkontinuierlichen Signals und seiner Abtastfolge, können die Ergebnisse unmittelbar ins Zeitdiskrete übertragen werden, siehe Bild 5-4. Mit der normierten Kreisfrequenz :0
Z0 Ts
(5.8)
5.2 Grundlagen
53
ergibt sich für das zeitdiskrete Signal x[n] cos(:0 n)
(5.9)
und sein Spektrum
X e j:
S
f
¦ >G (: :0 2S k ) G (: :0 2S k )@
(5.10)
k f
Da das Spektrum einer Folge stets periodisch in 2S ist, wird seine Darstellung in der Regel auf die Grundperiode [0, 2S] oder [S , S ] beschränkt. Wird das Abtasttheorem eingehalten, tritt kein Aliasing auf. Es ergibt sich der einfache Zusammenhang zwischen dem Spektrum der Abtastfolge und dem Spektrum des abgetasteten Signals.
X e j:
§ j: · 1 X¨ ¸ für : d S und kein Aliasing Ts © Ts ¹
(5.11)
x(t)
1
x[n] n
0 1 32
16
0
S k = 1
16
X(e j:)
k=1
k=0 S
2S
32
:0 0
:0
S
2S
:
Bild 5-4 Kosinusfolge und ihr Spektrum (Ausschnitt)
5.2.3
Fensterung
Zur Anwendung der DFT ist es oft erforderlich, die Eingangsfolge auf eine bestimmte Länge zu begrenzen. Dieser Vorgang lässt sich für die weitere Analyse vorteilhaft als Multiplikation mit einer Fensterfolge beschreiben. xw [ n ]
x[n] w[n]
(5.12)
Der einfachste Fall der Fensterung geschieht mit dem Rechteckfenster der Länge N. 1 für 0 d n d N 1 w[n] ® ¯0 sonst
(5.13)
54
5 Kurzzeit-Spektralanalyse: Grundlagen
Das Rechteckfenster und sein Spektrum N 1
¦ w[n] e j:n n 0
W e j:
e j: N
2
sin N : 2
(5.14)
sin : 2
sind in Bild 5-5 für N = 32 skizziert. Die Breite des Fensters, die Länge der Fensterfolge N, bestimmt die Breite der Hauptzipfel des Betragsspektrums. Aus (5.14) erhält man die erste Nullstelle für positive normierte Kreisfrequenzen bei 2S / N. N 1
w[n] n
0 20 40
10
10
0
32
|W(e j:)|
20
30
32
50
40
60
32
Hauptzipfel
20
1. Nebenzipfel
10 0
2S
0
S
2S / N
2S
S
:
Bild 5-5 Rechteckfenster der Breite N und zugehöriges Betragsspektrum
Die Multiplikation der Folgen (5.12) ist im Frequenzbereich äquivalent zur Faltung der Spektren.
1 X e j: W e j: 2S
X w e j:
(5.15)
Da die Spektren von Folgen periodisch sind, ergibt sich hier die periodische Faltung. Es tragen nur die Terme in der Grundperiode bei. Das Ergebnis wird periodisch fortgesetzt. Für das Kosinussignal mit Rechteckfensterung in Bild 5-6 erhält man aus (5.10)
X w e j:
1 1 W e j[::0 ] W e j[::0 ] 2 2
(5.16)
und mit (5.14) das Betragsspektrum in Bild 5-6 unten. Die Faltung reproduziert wegen der Ausblendeigenschaft der Impulsfunktionen das Spektrum der Fensterfolge an den normierten Kreisfrequenzen :0 und :0. Die Fensterung, und somit die Kurzzeit-Spektralanalyse, führt zum Verschmieren des zu messenden Spektrums. Zwei benachbarte Spektrallinien können unter Umständen im Messergebnis nicht mehr unterschieden werden. Als Gütekriterium führt man die spektrale Auflösung ein. Sie ist abhängig von der Wahl des Fensters. Als Maß für die
5.2 Grundlagen
55
spektrale Auflösung wird oft die halbe Breite des Hauptzipfels des Betragsspektrums der Fensterfolge genommen. Je kleiner der Zahlenwert, umso besser das Auflösungsvermögen. Im Falle des Rechteckfensters der Länge N ist die spektrale Auflösung minimal. Man erhält 2S N
': rec
(5.17)
Durch Verlängerung des Fensters wird die spektrale Auflösung verbessert. Im Zahlenwertbeispiel resultiert S / 16.
xw[n]
1
n
0 1
10
0
40
50
60
|Xw(ej:)| 32
S/2
S
:0
:0
0
S/2
:
S
Bild 5-6 Wirkung der Fensterung im Zeit- und im Frequenzbereich für zeitdiskrete Signale
5.2.4
Diskrete Fourier-Transformation
Im letzten Schritt der Überlegungen wird der Übergang vom kontinuierlichen FourierSpektrum für Folgen auf das DFT-Spektrum vollzogen. Der Vergleich der Fourier-Transformation und der DFT in Tabelle 3-1 zeigt, dass für Folgen endlicher Länge N das DFT-Spektrum einer Abtastung des Fourier-Spektrums an den Stellen :k
k 2S / N
k ': DFT
für k = 0 : N 1
(5.18)
entspricht. X w[k ]
X w e j 2S k
N
(5.19)
Man beachte, dass die Frequenzschrittweite des DFT-Spektrums, die spektrale Auflösung der DFT ':DFT gleich der spektralen Auflösung des Rechteckfensters ist.
56
5 Kurzzeit-Spektralanalyse: Grundlagen
Beispiel Klirrfaktormessung mit der DFT Der enge Zusammenhang zwischen der Fourier-Transformation und der DFT kann im Fall periodischer Signale dazu benutzt werden, mit der FFT die Koeffizienten der Fourier-Reihe effizient zu bestimmen. Für die Praxis ergeben sich daraus wichtige Anwendungen. So lassen sich mit kontinuierlicher Zustandserfassungen von Maschinen, z. B. von Antriebswellen und Lagern, der Abnutzungsvorrat ausschöpfen und Maschinenschäden in der Entstehungsphase erkennen. Ein anderes Anwendungsgebiet ergibt sich in Energieversorgungsunternehmen. Dort ist der Leistungsanteil der Oberwellen im Spannungsversorgungsnetz eine Kenngröße für die Versorgungsqualität. Gewisse Grenzwerte müssen überwacht und eventuell Gegenmaßnahmen ergriffen werden. Schließlich spielt der Klirrfaktor auch in der Nachrichtentechnik, insbesondere der Audiotechnik, eine große Rolle. Die Klirrfaktor-Messung stellt das Beispiel in Bild 5-7 vor. Als Signal wird die mit einem Einweggleichrichter gleichgerichtete sinusförmige Spannung in der normierten Form verwendet [BSMM99]. Die Frequenz f0 sei 50 Hz. u (t )
1
S
1 2 § cos(2S f 0t ) cos(4S f 0t ) cos(6S f 0t ) · sin 2S f0 t ¨ "¸ S © 2 1 3 35 57 ¹
Mit dem Klirrfaktor wird die Signalverzerrung beim Durchgang durch ein nichtlineares System abgeschätzt. Der Klirrfaktor ist für Eintonsignale definiert als das Verhältnis des Effektivwerts der Harmonischen höherer Ordnung (Oberschwingungsgehalt) zum Effektivwert des Signals ohne den Gleichanteil ((Gesamt-)Wechselanteil). Mit den Amplituden der k-ten Harmonischen uˆk gilt für den Klirrfaktor d
(5.20)
u(t) 1
0
10
20
30
t in ms
Bild 5-7 Sinussignal nach Einweggleichrichtung
uˆ22 uˆ32 uˆ42 " uˆ12 uˆ22 uˆ32 uˆ42 "
(5.21)
Anmerkungen: (i) Der Formelbuchstabe d steht für die englische Bezeichnung Distortion. (ii) Der Klirrfaktor ist ein relatives Maß. Skalierungsfaktoren kürzen sich. (iii) Manchmal sind Klirrfaktoren spezieller Ordnungen von Interesse. Dann wird nur der Effektivwert der k-ten Harmonischen im Zähler in (5.21) verwendet.
Der Klirrfaktor wird im Beispiel mit dem MATLAB-Programm im Programmbeispiel 5-1 bestimmt. Statt eines realen abgetasteten Signals werden zunächst die Abtastwerte einer Periode generiert. Es schließt sich die DFT und die Auswertung der DFT-Koeffizienten an. Das Programm erzeugt die Grafik in Bild 5-8 links. Um den Zusammenhang mit dem zugrunde gelegten analogen Signal hervorzuheben, wird die Abszissenskalierung in Millisekunden (ms) bzw. Hertz (Hz) vorgenommen. Die in Bild 5-8 rechts angezeigten Werte werden vom Programm berechnet. Der Näherungswert für den Klirrfaktor beträgt dDFT-MATLAB | 0.4101. Im Vergleich mit dem anhand der Fourier-Koeffizienten in (5.20) numerisch berechneten Wert 0.399076 zeigt sich ein relativer Fehler von ca. 2.8 %, siehe auch Aufgabe A5.2.
5.2 Grundlagen
57
Anmerkung: Der überwiegende Teil des Programms besteht aus Befehlen zur grafischen Darstellungen und Textausgabe am Bildschirm.
x(t) o
1
0.5
0
0
5
10 t in ms o
15
20
norm. |X(f)| o
1
0.5
0
0
50
100
150
200 250 f in Hz o
300
350
400
450
dsplab5_1 : distortion f0 = 50 Hz fs = 1000 Hz max|X(f)| = 0.315688 f in Hz |X(f)|/max|X(f)| 0 1.0000 50 0.7919 100 0.3446 150 0.0000 200 0.0762 250 0.0000 300 0.0388 350 0.0000 400 0.0278 450 0.0000 distortion d = 0.4101
Bild 5-8 Gleichgerichtetes Sinussignal (eine Periode) und normiertes DFT-Betragsspektrum (links) und Textanzeige (rechts) zu Programmbeispiel 5-1 Klirrfaktor-Messung (dsplab5_1)
Programmbeispiel 5-1 Klirrfaktormessung mit der DFT % Short-time spectral analysis with the fft % dsplab5_1.m * mw * 04/03/2008 f0 = 50; T0 = 1/f0; % fundamental frequency in Hz and signal period fs = 1e3; Ts = 1/fs; % sampling frequency and sampling period Ns = floor(T0/Ts); % number of samples per period n = 0:Ns-1; % normalized discrete time x = zeros(1,Ns); for k=1:Ns t = Ts*n(k); if t
58
5 Kurzzeit-Spektralanalyse: Grundlagen
f = (0:M)*fs/Ns; % frequency scale MAX = max(abs(X)); subplot(2,1,2), stem(f,abs(X(1:M+1))/MAX,'full'), grid axis([0 max(f) 0 1]); xlabel('{\itf} in Hz \rightarrow'), ylabel('norm. |{\itX}({\itf})| \rightarrow') fprintf('\n') % text output on screen fprintf('dsplab5_1 : distortion\n') fprintf('f0 = %5i Hz\n',f0) fprintf('fs = %5i Hz\n',fs) fprintf('max|X(f)| = %g\n',MAX) fprintf('f in Hz |X(f)|/max|X(f)|: \n') for k = 1:M+1 fprintf(' %5i %6.4f \n',f(k),abs(X(k)/MAX)) end % Distortion D1 = abs(X(2)).^2; % rms-value for fundamental frequency signal D = sum(abs(X(2:1:M+1)).^2); % rms-value for higher harmonics d = sqrt((D-D1)/D); % distortion fprintf('distortion d = %6.4f \n',d)
5.2.5
Zero-padding
Mit Zero-padding wird das Anhängen von Nullen an eine Signalfolge bezeichnet. Damit lässt sich ein Signal endlicher Länge, ohne Werte wegzulassen, auf eine Länge bringen, die die Anwendung der schnellen Radix-2-FFT erlaubt. Darüber hinaus kann mit dem Zero-padding auch die Darstellung des Spektrums unter Umständen günstig beeinflusst werden.
Als Beispiel dient der Rechteckimpuls der Länge Nr = 32 und sein Spektrum in (5.14). Die DFT der Länge Nr liefert das Spektrum in Bild 5-9 oben mit genau einem DFT-Koeffizienten ungleich null, dem bei k = 0.
|X32[k ]| o
30 20 10 0
0
5
10
15 k o
20
25
30
0
5
10
15 k o
20
25
30
30 |X128[k ]| o
Man beachte jedoch: Hinzufügen von Nullen liefert keine zusätzliche Information über das zu messende Signal und kann damit die Messunsicherheit aufgrund der Fensterung nicht aufheben. Das Zero-padding erlaubt jedoch, das Spektrum in kleineren Frequenzschritten darzustellen.
20 10 0
Verlängert man das Signal des Recht- Bild 5-9 DFT-Spektrum oben ohne und unten mit Zeroeckimpulses durch Zero-padding auf padding im Zeitbereich (dsplab5_2) die Länge N = 128 und berechnet das DFT-Spektrum über die Blocklänge 128, so resultieren die in Bild 5-9 unten gezeigten Beträge der ersten 32 DFT-Koeffizienten. Das DFT-Spektrum X[k] entspricht jetzt einer um den Faktor 4 dichteren Abtastung des kontinuierlichen Spektrums X(ej:) für : = k 2S / N. Ein weiteres wichtiges Beispiel ist der Sonderfall, einer Frequenzkomponente, deren normierte Frequenz genau in der Mitte zwischen den Stützstellen des DFT-Frequenzrasters liegt. Dann
5.2 Grundlagen
59
erhält man zwei etwa gleichstarke DFT-Koeffizienten an den benachbarten Stützstellen, siehe Bild 5-10 oben für ein entsprechendes Kosinussignal Nach Verdopplung der Länge der Folge durch Zero-padding, besitzt die DFT eine Stützstelle genau bei der betreffenden Frequenzkomponente. Letztere hebt sich nun in Bild 5-10 unten deutlich aus dem DFT-Spektrum hervor. Anmerkung: Die Kombination aus Zero-padding und FFT findet in der digitalen Signalverarbeitung an verschiedenen Stellen ihre Anwendung, wie z. B. bei der schnellen Faltung oder Interpolation. Zeropadding und FFT werden auch zur numerischen Fourier-Transformation eingesetzt.
|X64[k ]| o
30 20 10 0
0
5
10
15 k o
0
10
20
30 k o
20
25
30
|X128[k ]| o
30 20 10 0
40
50
60
Bild 5-10 DFT-Spektrum vor (oben) und nach Zero-padding (unten) der Signalfolge x[n] = cos(:0n) mit :0 = 12.5 2 S / N und N = 64 (dsplab5_2b)
5.2.6
Leakage-Effekt
Mit dem Leakage-Effekt (Leck-Effekt) wird das Auftreten von Spektralkomponenten im DFTSpektrum umschrieben, die von der Anwendung her kommend nicht vermutet werden. Bild 5-10 zeigt ein Beispiel. Die zeitlich unbegrenzte Kosinusfolge mit der normierten Kreisfrequenz :0 besitzt ein Spektrum mit nur zwei diskreten Anteilen bei r:0. Im KurzzeitSpektrum, dem DFT-Spektrum, erscheinen jedoch eine Vielzahl von Spektralkomponenten ungleich null. Dies obwohl oben die normierte Kreisfrequenz :0 genau zwischen das DFT-Frequenzraster fällt, also eigentlich keine Frequenzkomponenten sichtbar sein sollte. Das ist jedoch nicht möglich. Wegen der Energieerhaltung beim Wechsel zwischen Zeit- und Frequenzbereich kann das DFT-Spektrum hier nicht null sein, siehe parsevalsche Gleichung. Stattdessen verteilt sich die Energie des Signalblockes entsprechend dem verwendeten Fenster auf die DFT-Koeffizienten. In Bild 5-10 wird ein Rechteckfenster eingesetzt, weshalb im Bild – mathematisch korrekt – der Betrag der si-Funktion als Hüllkurve auftritt. Der Leakage-Effekt, das Ausfließen der Spektralkomponenten, führt allgemein zu betrags- und phasengewichteten Überlagerungen der Spektralkomponenten, die im Sinne der beabsichtigten Anwendung die Auswertung des DFT-Spektrums erschweren oder sogar unmöglich machen können.
60
5.2.7
5 Kurzzeit-Spektralanalyse: Grundlagen
Fensterfolgen
Die Qualität der Kurzzeit-Spektralanalyse wird durch die Fensterung des Zeitsignals wesentlich beeinflusst. Nicht nur die Fensterlänge sondern auch die Form spielt eine wichtige Rolle. Durch geeignete Wahl lassen sich die Frequenzauflösung und die Vertrauenswürdigkeit des Messergebnisses in gewissen Grenzen einstellen. Der Bedeutung der Fensterung entsprechend, werden in der digitalen Signalverarbeitung je nach Zielsetzung verschiedene Formen eingesetzt. MATLAB stellt im Erweiterungspaket Signal Processing Toolbox eine umfangreiche Auswahl zur Verfügung, siehe Tabelle 5-1. Über die help-Funktion ist eine Beschreibung der Fensterfolgen erhältlich. In der Versuchsdurchführung werden einige für die Spektralanalyse wichtigen Fenster untersucht. Tabelle 5-1 Fensterfunktion der MATLAB Signal Processing Toolbox MATLAB-Funktion bartlett barthannwin blackman blackmanharris bohmanwin chebwin flattopwin gausswin hamming hann kaiser nuttallwin parzenwin rectwin triang tukeywin
Name Bartlett window Modified Bartlett-Hanning window Blackman window Minimum 4-term Blackman-Harris window Bohman window Chebyshev window Flat Top window Gaussian window Hamming window Hann window Kaiser window Nuttall defined minimum 4-term Blackman-Harris window Parzen (de la Valle-Poussin) window Rectangular window Triangular window Tukey window
Am Beispiel der Bartlett- und Blackman-Fensterfolgen können grundsätzliche Zusammenhänge aufgezeigt werden. Die beiden Fensterfolgen werden im Programmbeispiel 5-2 durch die MATLAB-Funktionen bartlett und blackman erzeugt. Die Fensterfolgen und ihre Betragsspektren sind in Bild 5-11 dargestellt. Das Bartlett-Fenster ist eine Dreiecksfolge die mit 0 beginnt und endet. Das Blackman-Fenster ähnelt einer abrollenden Kosinusfolge. Anmerkung: Einige Fensterfolgen sind auf den ersten Blick schwer zu unterscheiden. Kleine Unterschiede in der Fensterfolge können deutlich sichtbare Auswirkungen im Spektrum im Bereich kleiner Werte (Sperrbereich) haben.
Aus dem Betrag des Spektrums werden zwei charakteristische Parameter zur Beurteilung der Fenster abgelesen: die Breite des Hauptzipfels ':m (mainlobe) und die Dämpfung des größten Nebenzipfels as,dB (sidelobe) bezogen auf den Maximalwert. Die Breite des Hauptzipfels ist für die Frequenzauflösung entscheidend. Die Dämpfung des größten Nebenzipfels beeinflusst die Stärke der Überlagerung von Spektrallinien in näherer
5.2 Grundlagen
61
Umgebung. Die Dämpfung der Nebenzipfel im gesamten Spektrum gibt einen Hinweis zur Störunterdrückung, wenn beispielsweise dem Wunschsignal ein Rauschsignal überlagert ist. Mit der Figure-toolbar-Option Data Coursor lassen sich im Bild Datenpunkte markieren und ihre Werte anzeigen. Alternativ kann auch mit der Vergrößerung durch die ZoomFunktion (Lupe) gearbeitet werden. Es ergeben sich aus Bild 5-11 die Zahlenwerte in Tabelle 5-2. Beim Vergleich der beiden Kennwerte erkennt man den allgemeinen gegenläufigen Zusammenhang: Ist die Hauptzipfelbreite relativ gering, so ist die Nebenzipfeldämpfung relativ groß und umgekehrt. Die Frequenzauflösung und die Unterdrückung von Störkomponenten stehen im umgekehrten Verhältnis. Das in der Versuchsdurchführung später zu verwendende MATLAB-Programm window aus der Signal Processing Toolbox liefert zur Nebenzipfeldämpfung als Kennwerte die 3dB-Hauptzipfelbreite und den Leakage-Faktor. Letzterer gibt das prozentuale Verhältnis der Leistung in den Nebenzipfeln wider. Hinweis: Man beachte die Definition der Dämpfung mit negativem Vorzeichen in Tabelle 5-2. Tabelle 5-2 Kennwerte von Fensterfolgen im Frequenzbereich
Hauptzipfelbreite1 ':m 3dB-Hauptzipfelbreite
Bartlett
Blackman
0.06445 2S | 8S / N
0.09998 2S | 12S / N
0.03906 2S
0.05078 2S
2
Nebenzipfeldämpfung as,dB
20lg(0.04727) dB | 26.5 dB
2
Leakage-Faktor 1
siehe erste Nullstelle im Spektrum
0.28 % 2
20lg(0.00122) dB | 58.3 dB |0%
Berechnung mit dem MATLAB-Programm window.
Programmbeispiel 5-2 Bartlett- und Blackman-Fenster % Bartlett and Blackman window % dsplab5_3.m * mw * 04/03/2008 N = 64; % length of windows M = 2048; % length of fft f = 0:M-1; f = f/(M/2); % normalized radian frequency w1 = bartlett(N); % Bartlett window and spectrum W1 = fft(w1,M); W1 = W1/abs(W1(1)); w2 = blackman(N); % Blackman window and spectrum W2 = fft(w2,M); W2 = W2/abs(W2(1)); % Graphics FIG1 = figure('Name','Bartlett and Blackman window',... 'NumberTitle','off'); % Bartlett window and spectrum subplot(2,2,1), stem(0:N-1,w1), grid axis([0 N-1 0 1]); title('Bartlett') xlabel('{\itn} \rightarrow'), ylabel('{\itw}[{\itn}] \rightarrow') subplot(2,2,3),semilogy(f,abs(W1),'LineWidth',2), grid axis([0 1 1e-6 1]); xlabel('\Omega / \pi \rightarrow') ylabel('|{\itW}(e^{j\Omega})| \rightarrow')
62
5 Kurzzeit-Spektralanalyse: Grundlagen
% Blackman window and spectrum subplot(2,2,2), stem(0:N-1,w2), grid axis([0 N-1 0 1]) title('Blackman') xlabel('{\itn} \rightarrow'), ylabel('{\itw}[{\itn}] \rightarrow') subplot(2,2,4),semilogy(f,abs(W2),'LineWidth',2), grid axis([0 1 1e-6 1]); xlabel('\Omega / \pi \rightarrow') ylabel('|W(e^{j\Omega})| \rightarrow')
Blackman 1
0.8
0.8
0.6
0.6
w[n] o
w[n] o
Bartlett 1
0.4 0.2 0
0.2
0
10
20
30 no
40
50
0
60
0
0
10
20
30 no
40
50
60
0
10
10
X: 0.09082 Y: 0.04727
-2
-2
10
|W(e j: )| o
|W(ej: )| o
0.4
-4
10
10
X: 0.1143 Y: 0.00122
-4
10
X: 0.09668 Y: 8.606e-006
X: 0.06445 Y: 2.968e-005 -6
10
-6
0
0.2
0.4
0.6
0.8
1
: / So
10
0
0.2
0.4
0.6
0.8
1
: / So
Bild 5-11 Bartlett- und Blackman-Fensterfolgen der Länge 64 und zugehörige Betragsspektren (dsplab5_3)
5.3
Vorbereitende Aufgaben
A5.1
Gegeben sei ein Kosinussignal x(t) = cos(Z0t). Geben Sie dazu den allgemeinen Zusammenhang zwischen der normierten Kreisfrequenz :0, der Signalfrequenz f0, der Abtastfrequenz fS, dem Index des DFT-Koeffizienten k0 und der Transformationslänge N so an, dass nur ein Spektrallinienpaar im Messergebnis beobachtet wird. " :0
2S
? fs
2S
? N
5.4 Versuchsdurchführung A5.2
63
Berechnen Sie den Klirrfaktor für eine Sägezahnschwingung ohne Gleichanteil mit " der Periode T0 = 100 ms. x(t )
2
t 1 für t [0, T0 ] T0
Hinweis: Skizzieren Sie das Signal. Geben Sie die Fourier-Reihe an, z. B. aus einer Tabelle wie in [BSMM99].
5.4
Versuchsdurchführung
M5.1
Gehen Sie von einem Kosinussignal x(t) = cos(Z0t) mit der Frequenz f0 = 50 Hz aus. Wählen Sie die Abtastfrequenz fs so, dass für eine FFT mit der Fensterlänge N = 64 nur die zu f0 gehörenden Spektrallinien für k = 4 und 60 bzw. 4 im Messergebnis auftreten. Setzen Sie nun die Signalfrequenz auf 60 Hz und wiederholen Sie die Messung mit ansonst unveränderten Parametern. Diskutieren Sie die beiden Ergebnisse. Hinweis: Siehe Vorbereitung A5.1.
M5.2
Es soll der Einfluss der Fenster auf die spektrale Auflösung veranschaulicht werden. Erzeugen Sie dazu ein Zweitonsignal der Länge N mit den normierten Kreisfrequenzen :1 = l 2S / N und :2 = :1 + m ':rec. Hinweis: Wählen Sie N = 128, l = 16 und m = 1, 2, 3 und 4. Vergleichen Sie die Ergebnisse der Kurzzeitspektralanalyse mit dem Rechteckfenster bzw. dem Blackman-Fenster grafisch anhand der Beträge der jeweiligen DFT-Spektren. Ist das Vorhandensein eines Frequenzpaares im Spektrum für das Auge stets einfach erkennbar? Was versteht man unter spektraler Auflösung und wie könnte man den Begriff konkret fassen? Wiederholen Sie die Untersuchungen mit Zero-padding indem Sie die Blocklänge für die Kurzzeitspektralanalyse durch Anhängen von Nullen an das Signal verlängern. Verbessert sich durch Zero-padding die spektrale Auflösung? Hinweis: Zum Beispiel DFT-Blocklänge 1024.
M5.3
Stellen Sie mit dem MATLAB-Programm window aus der Signal Processing Toolbox die Fensterfolgen in Tabelle 5-3 und ihre Betragsspektren für die Länge 64 grafisch dar, siehe auch Bild 5-12. Verifizieren bzw. ergänzen Sie die fehlenden Kennwerte in der Tabelle. Bewerten Sie die Fenster, siehe Kommentar. Hinweise: Geben Sie die Breite des Hauptzipfels näherungsweise als ganzzahliges Vielfaches von S / N an. Die Dämpfung der Nebenzipfel bezieht sich auf das jeweilige Maximum des Betragsfrequenzganges und wird im logarithmischen Maß (dB) angegeben. Beachten Sie auch, am Bildschirm werden negativen Werte für die Dämpfung angezeigt.
64
5 Kurzzeit-Spektralanalyse: Grundlagen
Tabelle 5-3 Kennwerte von Fensterfolgen mit Länge N ungefähre Breite des Hauptzipfels ':m
Dämpfung des größten Nebenzipfels as,dB
bartlett
8S/N
26.5 dB
dreieckförmiges Fenster mit effektiver Länge N2, vgl. triang
blackman
12 S / N
58.3 dB
relativ breiter Hauptzipfel und schnell abfallendes Betragsspektrum
Fensterfolge Parameter
Kommentar
parametrisierbares Fenster; Austausch zwischen spektraler Auflösungen und Nebenzipfeldämpfung (60 dB) einstellbar; Nebenzipfeldämpfung im gesamten Bereich konstant – gut zur Unterdrückung breitbandiger Störung
chebwin
D = 60 dB
parametrisierbares Fenster; die gaußsche Glockenkurve bleibt bei Fourier-Transformation erhalten, weshalb der Hauptzipfel im wesentlichen die Form einer gaußschen Glockenkurve besitzt; guter Kompromiss zwischen Zeit- und Frequenzauflösung
gausswin
E = 2.5
hamming
vergleichbar mit Chebyshev-Fenster mit Dämpfung 42 dB; wird als Kompromiss häufig eingesetzt
hann
ungleichmäßige Bewertung der störenden Spektralkomponenten, im Spektralbereich stark abfallende Schulter
parametrisierbares Fenster mit Austausch zwischen spektraler Auflösungen und Nebenzipfeldämpfung; Einsatz beim FIR-Filterentwurf (historisch)
kaiser
E = 5.46 rectwin
4S/N
13 dB
rechteckförmiges Fenster mit Länge N ; bestmögliche Frequenzauflösung und geringste Nebenzipfeldämpfung
5.4 Versuchsdurchführung
65
Bild 5-12 Benutzerschnittstelle des MATLAB Windows Design & Analysis Tool
Hinweise zu MATLAB-Funktionen und M-Files Im Folgenden werden für die Versuchsdurchführung nützliche MATLAB-Befehle und -Funktionen aufgelistet, zu denen Sie sich mit Hilfe der Help-Funktion Erläuterungen und Beispiele am Bildschirm anzeigen lassen können, siehe auch vorherige Versuche. Anmerkung: Eine MATLAB-Demo zum Thema DFT startet nach Eingabe von sigdemo1. Tabelle 5-4 MATLAB-Befehle benutzte Programme und Dateien MATLAB-Programme (Signal Processing Toolbox) Elementare math. Funktionen 2-dim. Grafik Þ Online-Ressourcen
sigdemo1, window (Window Design and Analysis Tool, Fensterfolgen, siehe Tabelle 5-1), wvtool mod, rem, sqrt, sum semilogx, semilogy, loglog dsplab5_1.m, dsplab5_1b.m, dsplab5_1c.m, dsplab5_1d.m, dsplab5_2.m, dsplab5_2b.m, dsplab5_3.m, dsplab5_3b.m, dsplab5_4.m, dsplab5_5.m, dsplab5_5b.m, plotwin.m
66
6
Kurzzeit-Spektralanalyse: Beispiele
6.1
Einführung
In diesem Versuch wird die Kurzzeit-Spektralanalyse durch die FFT an zwei Beispielen erprobt: den DTMF-Signalen aus der Telefonie und einem Audiosignal. Bei den DTMF-Signalen geht es darum, ein durch Tastendruck ausgewähltes Signal kurzer Dauer, das aus zwei Töne besteht, anhand des Spektrums zu erkennen. Beim Audiosignal wird ein Signal in kurze Blöcke zerlegt und blockweise der FFT unterworfen. Dadurch lassen sich Änderungen der charakteristischen Eigenschaften im Frequenzbereich im Spektrogramm anschaulich darstellen. Lernziele Nach Bearbeiten dieses Versuches können Sie x
zu einer FFT der Länge N die spektrale Auflösung angeben bzw. umgekehrt eine für die Anwendung geeignete FFT-Länge bestimmen
x
eine für die Anwendung geeignete Fensterfolge auswählen und die Wahl begründen
x
beispielhaft die Anwendung der Kurzzeit-Spektralanalyse auf Audio-Signale erläutern und ein Spektrogramm interpretieren
x
die MATLAB-Funktion spectrogram einsetzen
6.2
Mehrtonsignal
6.2.1
Mehrfrequenzwahlverfahren
Ein wichtiges Einsatzgebiet der digitalen Signalverarbeitung ist die Spektralanalyse analoger Signale. Anders als bei den bisher vorgegebenen Folgen, liegt jetzt ein analoges Signal zugrunde. Es wird eine ideale Abtastung vorausgesetzt. Die speziellen Fragen der realen A/D-Umsetzung werden in Abschnitt 16 behandelt.
Anmerkungen: (i) Für Europa ist eine Mindestdauer von 65 ms und eine maximale Frequenzabweichung von kleiner als 1.8 % des Sollwertes spezifiziert. (ii) Die Tasten A bis D werden auch weggelassen.
1477 Hz
1633 Hz
1
2
3
A
697 Hz
4
5
6
B
770 Hz
7
8
9
C
852 Hz
.
0
#
D
941 Hz
untere Frequenzgruppe
1336 Hz
obere Frequenzgruppe
1209 Hz
Als Anwendungsbeispiel wird das Mehrfrequenzwahlverfahren der analogen Telefonie mit den DTMF (Dual-Tone Multi-Frequency)-Signalen betrachtet. In Bild 6-1 wird die Zuordnung zwischen den Telefontasten und den Signalfrequenzen gezeigt. Nach betätigen einer Taste wird das Wählzeichen als Tonpaar codiert und als DTMF-Signal übertragen. Das DTMFVerfahren ist durch die International Telecommunication Union (ITU) weltweit standardisiert. Es hat eine Mindestdauer von 40 ms und zwischen zwei DTMFSignalen muss ein Abstand von mindestens 80 ms eingehalten werden.
Bild 6-1 Telefontastatur mit den DTMF-Tonpaaren
6.2 Mehrtonsignal
67
6.2.2
Vorbereitende Aufgaben
A6.1
Geben Sie das Signal x[n] an, das durch Abtastung mit der Abtastfrequenz fs = 8 kHz aus dem amplitudennormierten DTMF-Signal für das Wählzeichen 1 entsteht. Lassen Sie dabei die zeitliche Begrenzung außer Acht. x [n] =
A6.2
Welcher Zusammenhang besteht zwischen der Frequenz des zeitkontinuierlichen Signals f und der normierten Kreisfrequenz : des zeitdiskreten Signals? Füllen Sie dazu die Tabelle 6-1 für die DTMF-Frequenzen aus. Tabelle 6-1
A6.3
Zusammenhang zwischen den DTMF-Frequenzen und den normierten Kreisfrequenzen bei Abtastung mit 8 kHz
f in Hz
697
: / 2S
0.0871
770
852
941
1209
1336
1477 0.185
Es sei N die Transformationslänge der DFT mit Rechteckfenster. Wie groß ist die spektrale Auflösung der DFT 'f in Hz, d. h. um welche Frequenzdifferenz unterscheiden sich zwei benachbarte Spektrallinien im DFT-Frequenzraster? 'f = Wie groß muss die DFT-Länge N mindestens sein, damit die spektrale Auflösung der DFT den Abstand zwischen den DTMF-Tönen nicht unterschreitet? N min
Wie groß kann bei der in der Telefonie üblichen Abtastfrequenz von 8 kHz die DFTLänge N für das DTMF-Signal der Dauer 40 ms höchstens sein, wenn eine Radix-2FFT ohne Zero-padding verwendet werden soll? N max
A6.4
Geben Sie in Tabelle 6-2 für die DFT-Länge N = 256 die den DTMF-Frequenzen am nächsten liegenden Frequenzstützstellen fk zum DFT-Raster an.
68
6 Kurzzeit-Spektralanalyse: Beispiele
Tabelle 6-2
DTMF-Frequenzen und zugeordnete Frequenzen gemäß dem DFT-Raster mit der DFT-Länge N = 256 und Abtastung mit 8 kHz
f in Hz
697
k
22
47
687.5
1469
9.5
8
fk in Hz | f fk | in Hz
770
852
941
1209
1336
1477
6.2.3
Versuchsdurchführung
M6.1
Stellen Sie mit MATLAB das DTMF-Signal zum Wählzeichen 1 der Dauer von 40 ms grafisch dar. Machen Sie das Signal auch hörbar.
M6.2
Bestimmen Sie die DFT-Betragsspektren zu den Wählzeichen 0 bis 9 für die DFT mit einem Rechteckfenster der Länge 256. Hinweis: Stellen Sie die Betragsspektren in einem für die Signalerkennung relevanten Abszissenbereich grafisch dar.
M6.3
Wiederholen Sie die Bestimmung der DFT-Betragsspektren mit einem BlackmanFenster. Welche Auswirkungen ergeben sich durch die Blackman-Fensterung? Erklären Sie die Ergebnisse. Wird die Erkennung der DTMF-Töne durch die Fensterung erleichtert? Hinweis: Vergleichen Sie den minimalen Frequenzabstand der Töne der DTMF-Signale 'fmin, die Frequenzauflösung der DFT 'f (DFT-Frequenzraster) und die Breite des Hauptzipfels 'fm der Blackman-Fensterfolge. 'fmin = 'f
=
'fm
=
Anmerkungen: (i) In der Praxis wird die DTMF-Detektion mit den Goertzel-Algorithmus durchgeführt. Dabei wird die DFT nur an den zugeordneten Frequenzstützstellen berechnet, so dass der Realisierungsaufwand deutlich geringer wird. In Abschnitt 8 wird der Goertzel-Algorithmus vorgestellt. (ii) Siehe auch MATLAB Demo-Auswahl unter Toolboxes / Signal Processing / Application Demos / Dual-Tone Multi-Frequency (DTMF) Signal Detection
6.3 Audiosignale
69
6.3
Audiosignale
6.3.1
Einführung
Als Audiosignale bezeichnet man für gewöhnlich Signale, die aus akustischen Signalen (Schalldruck) durch ein Mikrophon aufgenommen wurden bzw. Signale die – nach einer eventuellen Digital/Analog-Umsetzung – mit einem elektrischen Schallwandler für Menschen hörbar gemacht werden können. Ein wichtiges Kennzeichen der Audiosignale ist ihr belegtes Frequenzband. Einige typische Frequenzbänder sind in Tabelle 6-3 zusammengestellt. Eine weitere Besonderheit von Audiosignalen ist, dass sie über kurze Zeitabschnitte ein charakteristisches Verhalten zeigen, dieses sich aber über der Zeit verändert. Ein Beispiel für Sprache zeigt Bild 6-2. Das mit einer PC Sound Card digitalisierte Sprachsignal „telecommunications laboratory“ zeigt erkennbar kurze Energiepakete, die typisch für Vokale sind.
Tabelle 6-3 Frequenzbänder von Audiosignalen Signaltyp
Frequenzband
für Menschen hörbare Geräusche
16...20 Hz bis 18…20 kHz
Telefonsprache
300 Hz bis 3.4 kHz
Audio für den UKW-Rundfunk
30 Hz bis 15 kHz
Ortungsschreie von Fledermäusen
8 bis 110 kHz
1
y(t) o
0.5
0
-0.5
-1
0
0.2
0.4
0.6
0.8
1 t in s o
1.2
1.4
1.6
1.8
2
Bild 6-2 Audiosignal „telecommunications laboratory“ (dsplab6_1)
Sollen nichtstationäre Signale, wie das Sprachsignal, analysiert werden, kommt der KurzzeitSpektralanalyse eine besondere Bedeutung zu. Sie ist deshalb ein wichtiger Baustein moderner Sprach- und Audiocodierverfahren sowie Verfahren zur Sprach- und Sprechererkennung. Anmerkung: Typische Analyseintervalle für die Codierung von Telefonsprache sind 5 bis 20 ms, vgl. Bild 6-2.
Die Technik der Kurzeit-Spektralanalyse wird in Bild 6-3 vorgestellt. Aus dem zu untersuchenden Signal x[n] werden mit einer Fensterfolge w[n] Blöcke der Länge N herausgeschnitten. Für jeden Block wird die DFT berechnet und in der Regel der Betrag der DFTKoeffizienten grafisch dargestellt. Man erhält ein Wasserfalldiagram bzw. Spektrogramm.
70
6 Kurzzeit-Spektralanalyse: Beispiele
Die Signalblöcke können sich dabei, wie in Bild 6-3, überlagern, um bei der Darstellung zwischen den zeitlich aufeinanderfolgenden „Signalblock“ i wi[n] Spektren weiche Übergänge zu haben. Für eine effiziente Berechnung wird unter Berücksichtigung der Randbedingungen der Anwendung meist eine Blocklänge verwendet, n ni ni + N1 die eine Radix-2-FFT zulässt. Ergebnisse für das Sprachsignal „telecommunications laboratory“ für die Blocklänge 512 und Verwendung Bild 6-3 Zerlegung des Signals in Blöcke zur eines Hamming-Fensters sind in Bild 6-4 und Kurzzeit-Spektralanalyse Bild 6-5 zu sehen.
Magnitudes of short term dft spectra o
Anmerkungen: (i) Zur Interpretation der Ergebnisse wird beispielhaft auf das Kurzzeitspektrum zwischen etwa 0.8 bis 0.9 s hingewiesen. In beiden Bildern zeigen sich in diesem Zeitintervall relativ energiereiche Anteile zwischen 3000 und 3500 Hz. Aus der Sprachverarbeitung ist bekannt, dass derartige Frequenzverteilungen bei Zischlauten resultieren. Tatsächlich wird in der Sprachprobe zwischen ca. 0.8 und 0.9 s das „s“ am Ende des Wortes „telecommunications“ stimmhaft gesprochen. Eine Vergrößerung des Signals in Bild 6-2 mit der MATLAB-Zoom-Funktion (Lupe) zeigt einen für Zischlaute typischen rauschartigen Verlauf ganz im Gegensatz zu den eher kurzzeitig periodischen, energiereichen Abschnitten der Vokale. (ii) Auch bei der Entwicklung moderner Hörgeräte und Hörhilfen (Cochlearinplantant, Innenohrprothese) spielt die Kurzzeitspektralanalyse eine wichtige Rolle.
1 0.8 0.6 0.4 0.2 0 0
1 0.8
1000 0.6
2000
0.4 3000
0.2 4000
f in Hz o
0
t in s o
Bild 6-4 Wasserfalldiagramm des Audiosignals „telecommunications laboratory“ (dsplab6_1)
6.3 Audiosignale
71
4000 3500
Frequency (Hz)
3000 2500 2000 1500 1000 500 0
0.1
0.2
0.3
0.4
0.5 Time
0.6
0.7
0.8
0.9
Bild 6-5 Spektrogramm des Audiosignals „telecommunications laboratory“ (dsplab6_1)
6.3.2
Vorbereitende Aufgaben
A6.5
Machen Sie sich mit dem Programmbeispiel 6-1 soweit vertraut, dass Sie es in der Versuchsdurchführung anwenden können. Das Programmbeispiel dsplab6_1 öffnet zunächst die Audio-Datei im WAVEFormat und gibt das Signal über die PC Sound Card aus. Das Audiosignal wird am Bildschirm angezeigt, siehe Bild 6-2. Zur grafischen Darstellung der Spektren wird das Signal auf eine Sekunde verkürzt. Danach wird das Audiosignal in sich überlappende Blöcke eingeteilt und jeder Block für sich transformiert. Im Beispiel der FFT-Länge, M = 512, und dem Parameter OL = 0.5 (Overlap), wird das FFT-Fenster jeweils um 256 Folgenelemente weitergeschoben. Die Beträge der resultierenden DFT-Spektren werden zusammen als Wasserfall-Diagramm und als Spektrogramm angezeigt, siehe Bild 6-4 und Bild 6-5. Bestimmen Sie für das Beispiel die Frequenzauflösung (DFT-Frequenzraster) der DFT-Spektren und den zeitlichen Versatz zwischen zwei DFT-Spektren im Spektrogramm. Die Abtastfrequenz beträgt 16 kHz. Δf
=
Δt
=
72
6 Kurzzeit-Spektralanalyse: Beispiele
Programmbeispiel 6-1 Audiosignal, DFT-Spektrum und Spektrogramm % Spectral analysis of audio signal % dsplab6_1.m * mw * 04/10/2008 [y,fs,bits] = wavread('speech'); % load audio signal soundsc(y,fs,bits); % sound %% Graphics t = 0:length(y)-1; t = t/fs; % time scale figure('Name','dsplab6_1 : Audio signal "telecommunications laboratory" ','NumberTitle','off'); plot(t,y), grid xlabel('{\itt} in s \rightarrow') ylabel('{\ity}({\itt}) \rightarrow') %% Spetral analysis - short term y = y(1:fs); % curtail signal to 1 second M = 512; % fft length w = hamming(M); % Hamming window OL = 0.5; % 50% overlap of the fft blocks NY = floor(length(y)/(M*(1-OL))); % number of dft spectra MY = M/4; % number of dft coefficients per dft spectrum Y = zeros(NY,MY); start = 1; stop = start + M - 1; k = 0; while stop<=length(y) k = k + 1; YY = fft(w.*y(start:stop))'; Y(k,:) = abs(YY(1:MY)); start = start + M*(1-OL); stop = start + M - 1; end % Graphics figure('Name','dsplab6_1 : Waterfall diagram "telecommunications"','NumberTitle','off'); Y = Y/max(max(Y)); t = 1:NY; t = t*(M*(1-OL))/fs; % time scale f = 0:1:M/4-1; f = fs*f/M; % frequency scale waterfall(f,t,Y); view(45,40) xlabel('{\itf} in Hz \rightarrow'), ylabel('{\itt} in s \rightarrow') zlabel('Magnitudes of short term dft spectra \rightarrow') %% MATLAB built-in spectrogram figure('Name','dsplab6_1 : Spectrogram "telecommunications"','NumberTitle','off'); spectrogram(y,hamming(M),M/2,0:20:4000,fs,'yaxis');
6.3.3
Versuchsdurchführung
M6.4
Zum Thema Spektrogramm gibt es ein MATLAB-Demoprogramm in der Signal Processing Toolbox mit grafischer Benutzerschnittstelle. Der Aufruf ohne Parameter specgramdemo liefert das Beispiel in Bild 6-6. Menüleiste und Eingabefenster ermöglichen eine interaktive Bedienung des Demoprogramms.
6.3 Audiosignale
73
Probieren Sie das MATLAB-Beispiel für verschiedene Einstellungen der Parameter aus. Stellen Sie den Zusammenhang zwischen den Einstellungen und Ergebnissen her. Welches Fenster wird für die FFT verwendet? Anmerkung: Mit dem Mauszeiger können Sie Objekte im MATLAB-Bild markieren und durch Betätigen der rechten Maustaste nach der Meldung What’s this? Hilfetexte abrufen.
M6.5
Mit dem Aufruf specgramdemo(y,fs) wird das Audiosignal y mit der Abtastfrequenz fs vorgegeben. Probieren Sie das MATLAB-Demoprogramm für andere Audiosignale aus, z. B. für die Signale in den Dateien handel.wav und guitar.wav. Diskutieren Sie die Ergebnisse. Anmerkung: Für eine vertiefte Diskussion der Ergebnisse ist spezielles Anwendungswissen erforderlich. Das Spektrogramm stellt nur ein Werkzeug dar. Erst das Wissen um die Hintergründe, z. B. aus der Audiotechnik, dem Maschinenbau, der Medizintechnik, usw., liefert die für die Parametereinstellung und Beurteilung der Ergebnisse notwendige Informationen.
Bild 6-6 Spektrogramm des Audiosignals „matlab“ (specgramdemo)
74 M6.6
6 Kurzzeit-Spektralanalyse: Beispiele Erzeugen Sie sich ein DTMF-Signal zu einer achtstelligen Rufnummer und stellen Sie das zugehörige Spektrogramm dar. Diskutieren Sie das Ergebnis. Hinweise: (i) Die Funktion dial, siehe Programmbeispiel dial, stellt zu jeder Rufnummer ein entsprechenden DTMF-Signal bereit. (ii) Benutzen Sie auch die Menü-Option Playback.
M6.7
Falls Sie ein DTMF-fähiges Telefon zur Verfügung haben, können Sie einen Wählversuch durchführen, indem Sie mit MATLAB ein DTMF-Tonsignal erzeugen und über die PC Sound Card ausgeben. Gegebenenfalls müssen Sie die Dauer des Tonsignals und die Dauer der Pause zwischen den Tönen durch probieren geeignet anpassen, siehe MATLAB-Befehl pause. ACHTUNG! Hierbei kann es vorkommen, dass aufgrund eines Fehlers eine nicht gewünschte Nummer gewählt wird.
Hinweise zu MATLAB-Funktionen und M-Files Im Folgenden werden für die Versuchsdurchführung nützliche MATLAB-Befehle und MATLAB-Funktionen aufgelistet, zu denen Sie sich mit der Help-Funktion Erläuterungen und Beispiele am Bildschirm anzeigen lassen können, siehe auch frühere Versuche.
Tabelle 6-4
MATLAB-Befehle benutzte Programme und Dateien
MATLAB-Programme
spectrogram, specgramdemo
Programmablaufsteuerung
case, switch
3-dim. Grafik
waterfall, view
Þ Online-Ressourcen
dsplab6_1.m, dsplab6_2.m, dsplab6_3.m, dsplab6_4.m, dial.m, guitar.wav, handel.wav, speech.wav
75
7
Lernkontrollfragen zur DFT, FFT und KurzzeitSpektralanalyse
Dieser Abschnitt stellt einige Aufgaben und Fragen zur DFT, FFT und Kurzzeit-Spektralanalyse bereit, die Sie zu einer versuchsübergreiffenden Lernerfolgskontrolle benutzen können. Hinweis: Treffen Sie gegebenenfalls vereinfachende Modellannahmen und verwenden Sie geeignet gerundete bzw. geschätzte Zahlenwerte. Die Aufgaben sind zu zwei Gruppen zusammengestellt, die ohne langwierige Rechnungen und PC in 45 Minuten zu lösen sind.
7.1
Aufgabenkatalog A
Aufgabe 7A1 Signal Skizzieren Sie das Signal x[n] = 2sin(:n) – u[n+3] für : = S / 6 im Bereich n = 6:6. Aufgabe 7A2 DFT-Spektrum Skizzieren Sie das DFT-Spektrum der Länge 16 des Signals x[n] = G[n] + sin(:n) für : =S / 4. Aufgabe 7A3 Fensterbewertung Mit MATLAB wurde die Fensterfolge in Bild 7-1 bestimmt. a) Schätzen Sie die Breite des Hauptzipfels bezogen auf S / N mit der Fensterlänge N ab. b) Geben Sie die Amplitude des größten Nebenzipfels bezogen auf das Maximum des Betragsfrequenzgangs im logarithmischen und im linearen Maß an.
Time domain
Frequency domain 40
1 20
Magnitude (dB)
Amplitude
0.8
0.6
0.4
0.2
0
0 -20 -40 -60
5
10
15 20 Samples
25
30
-80
0
0.2 0.4 0.6 0.8 Normalized Frequency ( uS rad/sample)
Bild 7-1 Bildschirmdarstellung (Window Design and Analysis Tool)
76 Aufgabe 7A4
7 Lernkontrollfragen zur DFT, FFT und Kurzzeit-Spektralanalyse Spektralanalyse
Ein EEG-Signal soll im Frequenzbereich analysiert werden. Dabei sind die Teilbänder für Beta-Wellen (14-32 Hz), Alpha-Wellen (8-13 Hz), Theta-Wellen (4-8 Hz) und den DeltaWellen (1-4 Hz) von Interesse. Beispiele für die Signale in den Teilbändern sind in Bild 7-2 zu sehen. Für die Abtastung des EEG-Signals steht ein A/D-Umsetzer mit analogem Tiefpass für die Abtastfrequenz von 200 Hz zur Verfügung. Für die Spektralanalyse soll eine DFT mit Blackman-Fenster eingesetzt werden mit der Hauptzipfelbreite 12S / N und Nebenzipfeldämpfung 58.3 dB. Die Frequenzauflösung im DFTFrequenzraster soll mindestens 0.25 Hz betragen. Geben Sie die kleinst mögliche DFT-Länge an. Begründen Sie Ihre Wahl.
E(t) o
1 0 -1
0
0.2
0.4
0.6
0.8
1
1.2
1.4
1.6
1.8
2
0
0.2
0.4
0.6
0.8
1
1.2
1.4
1.6
1.8
2
0
0.2
0.4
0.6
0.8
1
1.2
1.4
1.6
1.8
2
0
0.2
0.4
0.6
0.8
1 t in s o
1.2
1.4
1.6
1.8
2
D (t) o
1 0 -1
T(t) o
1 0 -1
G(t) o
1 0 -1
Bild 7-2 Beta-, Alpha-, Theta- und Delta-Wellen (Simulation)
Aufgabe 7A5 Echtzeit-FFT Der erste Supercomputer der Welt, die Cray I, erschien 1976 mit einer Rechenleistung von etwa 130 MFLOPs pro Sekunde. Seine Eignung für die Echtzeit-Erstellung von Spektrogrammen soll abgeschätzt werden. Unter Echtzeitfähigkeit wird dabei verstanden, dass nicht mehr Abtastwerte in einer Sekunde anfallen als auch in einer Sekunde verarbeitet werden können. Gehen Sie davon aus, dass nur 10% der Rechenleistung tatsächlich für die Berechnung des Spektrogramms zur Verfügung stehen. Als Basisalgorithmus wird eine Radix-2-FFT mit Blocklänge 1024 eingesetzt. Die Blöcke sollen sich für das Spektrogramm jeweils zu 50 % überlappen. Wie groß darf die Abtastfrequenz des Signals maximal sein, damit eine Echtzeit-Verarbeitung möglich ist? Begründen Sie Ihre Antwort.
7.2 Aufgabenkatalog B
7.2
77
Aufgabenkatalog B
Aufgabe 7B1 Signale Ordnen Sie die Signale xi[n] in Bild 7-3 den Funktionen yj[n] in Tabelle 7-1 richtig zu. Tabelle 7-1 Zuordnung der Signale xi[n] y[n]
i
y[n]
§ 2S · sin ¨ n¸ © 5 ¹
§ 2S cos ¨ © 5
· § 2S n ¸ sin ¨ ¹ © 5
§ 2S cos ¨ © 5
· n¸ ¹
2
1
1
1
-1 -2
x3[n] o
2
0
0 -1
0
10
-2
20
-1
0
10
-2
20
1
1
1
-2
x6[n] o
2
x5[n] o
2
-1
0 -1
0
10 no
20
-2
· n¸ ¹
0
2
0
i
§ 2S · § 2S · cos ¨ n ¸ sin ¨ n¸ © 7 ¹ © 5 ¹
2
x2[n] o
x1[n] o
y[n]
§ 2S · cos ¨ n¸ © 7 ¹
S· § 2S cos ¨ n ¸ 4¹ © 7
x4[n] o
i
0
10
20
0
10 no
20
0 -1
0
10 no
20
Bild 7-3 Signalausschnitte
-2
78
7 Lernkontrollfragen zur DFT, FFT und Kurzzeit-Spektralanalyse
Aufgabe 7B2 DFT-Spektrum Geben Sie zu Bild 7-4 das Zeitsignal analytisch an.
Re( X[k ] ) o
20 10 0 -10 -20
0
5
10
15 k o
20
25
30
0
5
10
15 k o
20
25
30
Im( X[k ] ) o
20 10 0 -10 -20
Bild 7-4 DFT-Spektrum
Aufgabe 7B3 Fensterbewertung Mit MATLAB wurde die Fensterfolge in Bild 7-5 bestimmt. a) Schätzen Sie die Breite des Hauptzipfels bezogen auf S / N mit der Fensterlänge N ab. b) Geben Sie die Amplitude des größten Nebenzipfels bezogen auf das Maximum des Betragsfrequenzgangs im logarithmischen und im linearen Maß an.
Bild 7-5 Bildschirmdarstellung (Window Design and Analysis Tool)
7.2 Aufgabenkatalog B Aufgabe 7B4
79
Spektralanalyse
Es soll ein Bohrer bzgl. seiner Abnutzung überwacht werden. Dazu werden die Schwingungen des Bohrers durch einen Magnetfeld-Sensor erfasst. Das gemessene Signal wird digitalisiert, wobei die Abtastung mit der Bohrerdrehung synchronisiert wird. Die Nenndrehzahl des Bohrers beträgt 1 kHz. Aus früheren Messungen ist bekannt, dass der Klirrfaktor d2, das Verhältnis aus dem Effektivwert der 2. Oberschwingung zum Effektivwert der Grundschwingung im Signal einen guten Indikator für die Abnutzung liefert. Ferner ist bekannt, dass die Effektivwerte der Oberschwingungen im Vergleich zum Effektivwert der Grundschwingung sehr klein sind und Spektralanteile ab der 9. Harmonischen vernachlässigt werden können. Zur Signalverarbeitung steht ein Programm für die Radix-2-FFT zur Verfügung. Geben Sie eine geeignete Kombination aus Abtastfrequenz und DFT-Länge an, um die Abnutzung überwachen zu können. Begründen Sie Ihre Wahl. Aufgabe 7B5
Spektralanalyse
Mit dem MATLAB-Programm im Programmbeispiel 7B-1 wurde eine Audio-Datei im Format WAVE verarbeitet. Es wurden die beiden Grafiken in Bild 7-6 erzeugt. a) Beschriften Sie die Abszissen bzgl. der kontinuierlichen Zeit t bzw. der kontinuierlichen Frequenz f. b) In welchem Zusammenhang stehen die Spektralkomponenten A, B, C und D in Bild 7-6?
Programmbeispiel 7B-1 [y,fs,nbits] = wavread('audiotest'); y = y(1:2^10); soundsc(y,fs) Fig = figure subplot(2,1,1), plot(0:1e3,y(1:1e3+1),'LineWidth',2), grid xlabel('{\itn} \rightarrow'), ylabel('{\ity}[{\itn}] \rightarrow') w = hann(2^10); Y = fft(y.*w); subplot(2,1,2), plot(0:400,abs(Y(1:401)),'LineWidth',2), grid xlabel('{\itk} \rightarrow'), ylabel('{\itY}[{\itk}] \rightarrow') text(310,12,['fs = ',num2str(fs),' Hz'],'FontSize',12)
80
7 Lernkontrollfragen zur DFT, FFT und Kurzzeit-Spektralanalyse
0.4
y[n] o
0.2 0 -0.2 -0.4
0
100
200
300
400
500 no
600
700
800
900
1000
A
15
|Y[k ]| o
fs = 8192 Hz 10
B
5 0
0
50
100
150
C 200 k o
D 250
300
Bild 7-6 Bildschirmanzeige zu Programmbeispiel 7B-1
350
400
81
8
Faltung, Differenzengleichung und LTI-Systeme
8.1
Einführung
Der Versuch befasst sich mit grundlegenden Eigenschaften von linearen zeitinvarianten Systemen. Grundkenntnisse über Signale und Systeme werden kurz zusammengefasst und die wichtigsten Formeln in einer Tabelle zusammengestellt. Im Mittelpunkt stehen dabei zwei Basisalgorithmen der digitalen Signalverarbeitung: die Faltung und die Differenzengleichung. In der Versuchsvorbereitung lösen Sie dazu elementare Aufgaben, die Sie dann in den Versuchen mit MATLAB überprüfen. Lernziele Nach Bearbeiten dieses Versuchs können Sie x
den Faltungsalgorithmus anwenden und anschaulich durch eine Skizze erläutern
x
die Länge des Faltungsergebnisses angeben
x
eine lineare Differenzengleichung mit konstanten Koeffizienten angeben und interpretieren
x
zu einer linearen Differenzengleichung das Blockdiagramm bzw. den Signalflussgraphen skizzieren und umgekehrt
x
die Eingangs-Ausgangsgleichung für lineare zeitinvariante Systeme im Zeit- und im Frequenzbereich angeben
x
den Goertzel-Algorithmus erklären und anwenden
8.2
Faltung
8.2.1
Grundlagen
Eine Basisoperation der digitalen Signalverarbeitung ist die Faltung zweier Folgen. x1[n] x2 [n]
f
¦
m f
x1[n m] x2 [m]
f
¦
m f
x1[ m] x2 [ n m]
(8.1)
Sie wird durch den (Faltungs-) Stern symbolisch dargestellt. Dabei spielt die Reihenfolge der Folgen keine Rolle. Die Faltung ist assoziativ, kommutativ und distributiv. Man spricht deshalb auch von der Faltungsalgebra. Ein wichtiges Beispiel für die Faltung endlich langer Folgen liefern die in der Kommunikationstechnik verwendeten Barker-Codefolgen. Sie unterstützen beispielsweise die Rahmensynchronisation auf der Teilnehmeranschlussleitung des Integrated Services Digital Network (ISDN)-Teilnehmeranschlusses, der UK0-Schnittstelle, und der High-bit-rate Digital Subscriber Line (HDSL). Dort wird der Barker-Code der Länge 11 bzw. 7 eingesetzt. Warum sich die Barker-Codes zur Rahmensynchronisation besonders gut eignen, wird im Versuch deutlich.
82
8 Faltung, Differenzengleichung und LTI-Systeme
Beispiel 8-1 Faltung eines Barker-Codeworts Im Falle des Barker-Codes der Länge vier ist die Codefolge x1[n], z. B. aus [Lük95], x1[n]
^1,1, 1,1`
(8.2)
x2 [n]
^1, 1,1,1`
(8.3)
Sie soll mit
gefalten werden. y[n]
x1[n] x2 [n]
3
¦ x1[m] x2 [n m]
(8.4)
m 0
Die Faltung der beiden rechtsseitigen Folgen ergibt mit der ausführlichen Zwischenrechnung y[0]
x1[0] x2 [0]
y[1]
x1[0] x2 [1] x1[1] x2 [0]
y[2]
x1[0] x2 [2] x1[1] x2 [1] x1[2] x2 [0]
y[3]
x1[0] x2 [3] x1[1] x2 [2] x1[2] x2 [1] x1[3] x2 [0]
y[4]
x1[1] x2 [3] x1[2] x2 [2] x1[3] x2 [1]
y[5]
x1[2] x2 [3] x1[3] x2 [2]
y[6]
x1[3] x2 [3]
1 0 1 4
(8.5)
1
0
1
schließlich y[n] {1, 0, 1, 4, 1, 0,1}
Die Faltung zweier endlich langer Folgen kann oft durch eine Skizze nachvollzogen werden. Dabei wird eine der Folgen, wie in Bild 8-1 x2[m], zeitlich gespiegelt oder anschaulich ausgedrückt um die Ordinate geklappt, wie das Falten eines Blatts. Anmerkung: Vielleicht ist Ihnen in Bild 8-1 aufgefallen, dass die zeitlich gespiegelte Folge x2[m] die selbe Form hat, wie die Barker-Codefolge x1[m]. Das ist beabsichtigt. Stehen nämlich beide Folgen, wie in Bild 8-1 für n = 3, genau untereinander, so kompensieren sich bei der paarweisen Multiplikation alle negativen Vorzeichen, und man erhält den Maximalwert der Faltungssumme. Dies spielt eine wichtige Rolle in der Nachrichtenübertragungstechnik, wo Barker-Codefolgen trotz Störungen möglichst sicher erkannt werden sollen [Wer06].
Bild 8-1 Zur Faltung zweier Folgen
(8.6) x1[m]
m x2[m]
m
n=0 x2[1m] n=1
m
x2[2m]
m
n=2
n=3
x2[3m]
m
8.2 Faltung
83
8.2.2
Vorbereitende Aufgaben
A8.1
Die Faltung zweier endlicher Folgen kann durch eine Skizze oder Tabelle anschaulich nachvollzogen werden. Ergänzen Sie Bild 8-2 für die Faltung der beiden Folgen x1[n] = {1, 2, 3} und x2[n] = {1, 0, 2, 1} der Länge N1 = 3 bzw. N2 = 4 entsprechend. m
3 2 1 0
1
2
4
5
6
0
0
0
1
0
2 1 0
0
0
1
3
2
1
0
0
0 0
0
0
0
)
0
x1[m] 0 1
0
3
2
1
0
0
0 0
0
0
)
1
x2[m]
3
x1[n] * x2[n]
2 3 4 5
n
n
6
Bild 8-2 Zur Berechnung des Faltungsproduktes x1[n] x2[n]
A8.2
Skizzieren Sie in Bild 8-3 das Faltungsergebnis aus der Aufgabe A8.1 x1[n]
x2[n]
4
*
2 0
0 2 4
n
x1[n] * x2[n]
4
=
2 0
0 2
n
4 2 0 2
0
6 n
Bild 8-3 Faltung der Folgen x1[n] und x2[n]
A8. 3
Es werden zwei Folgen mit den endlichen Längen N1 bzw. N2 gefaltet. Wie groß ist die Länge M des Faltungsproduktes? M=
A8.4
Für die Faltung zweier endlich langer Folgen hält MATLAB den Befehl conv bereit. Das Programmbeispiel 8-1 zeigt die Anwendung mit der Barker-Codefolge
84
8 Faltung, Differenzengleichung und LTI-Systeme der Länge 11 zur Rahmensynchronisation, wie z. B. im der ISDN-Teilnehmeranschluss. Bild 8-4 zeigt die Grafikausgabe des Programms. Machen Sie sich mit dem Programm vertraut. Beachten Sie auch den Befehl fliplr. Anmerkung: Die Faltung einer Folge mit ihrer zeitlich gespiegelten Replik wird auch Pseudofaltung genannt. Sie entspricht der Berechnung der zeitlichen Autokorrelation, siehe Versuch 12.
Programmbeispiel 8-1 Faltung der Barker-Codefolge der Länge 11 % pseudo convolution of Barker code sequences % dsplab8_1.m * mw* 04/17/2008 b = [ 1 1 1 -1 -1 -1 1 -1 -1 1 -1]; % Barker code of length 11 b_tr = fliplr(b); % time inversion y = conv(b,b_tr); % convolution y[n]=b[n]*b_tr[n] % Graphics n = 0:length(y)-1; FIG1 = figure('Name','dsplab8_1 : convolution','NumberTitle','off'); subplot(3,1,1), stem(n,[b zeros(1,length(y)-length(b))],'full'),grid ylabel('{\itb}[{\itn}] \rightarrow') subplot(3,1,2), stem(n,[b_tr zeros(1,length(y)-length(b_tr))],'full'), grid ylabel('{\itb}_{tr}[{\itn}] \rightarrow') subplot(3,1,3), stem(n,y,'full'), grid, axis([0 20 -5 15]); xlabel('{\itn} \rightarrow'), ylabel('{\itb}[{\itn}]*{\itb}_{tr}[{\itn}] \rightarrow')
b[n] o
1 0 -1
0
2
4
6
8
10
12
14
16
18
20
0
2
4
6
8
10
12
14
16
18
20
0
2
4
6
8
10 no
12
14
16
18
20
b tr[n] o
1 0 -1
b[n]*b tr[n] o
15 10 5 0 -5
Bild 8-4 Faltung der Barker-Codefolge b[n] mit sich selbst nach Zeitumkehr (tr, time reversal)
8.2.3
Versuchsdurchführung
M8.1
Kontrollieren Sie das Ergebnis in Aufgabe A8.1 mit dem MATLAB-Befehl conv.
8.3 Differenzengleichung 1. Ordnung M8.2
85
Führen sie die Faltung im Programmbeispiel 8-1 auch mit der Barker-Codefolge der Länge 13 durch b[n] = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1} und stellen Sie das Ergebnis grafisch dar. Beachten Sie die Größenverhältnisse zwischen dem Maximum und den anderen Werten. Weshalb sind Barker-Codefolgen für Synchronisationsaufgaben interessant? Erklären Sie anhand der Resultate die Besonderheit von Barker-Codefolgen.
8.3
Differenzengleichung 1. Ordnung
8.3.1
Goertzel-Algorithmus 1. Ordnung
Als einführendes Beispiel für die Anwendung einer Differenzengleichung wird der GoertzelAlgorithmus betrachtet, der z. B. in der Telefonie zur Erkennung der Töne beim Mehrfrequenzwahlverfahren eingesetzt wird, siehe auch Abschnitt 6.2. Die Aufgabe beim Mehrfrequenzwahlverfahren besteht im Grunde darin, die Signalenergien bzgl. aller 8 zugelassenen Frequenzen zu bestimmen und zu vergleichen, um so das gesendete Tonpaar zu erkennen. Eine einfache praktische Näherung liefert der Goertzel-Algorithmus [Goe58] mit der effizienten Berechnung der jeweils spektral nächstliegenden DFT-Koeffizienten (3.1). Die Herleitung des Goertzel-Algorithmus geschieht in zwei geschickt gewählten Schritten. Im ersten wird die Berechnung des DFT-Koeffizienten als Faltungssumme dargestellt. Weil der k N komplexe Faktor wN
1 ist, kann (3.1) umgeformt werden. N 1
X [k ]
¦
kn x[n] wN
n 0
N 1
¦ x[n] wNk ( N n)
(8.7)
n 0
Der Vergleich mit der Faltungssumme (8.1) zeigt prinzipielle Übereinstimmung dann, wenn im Argument der Exponentialfunktion der Term N n als Differenz der Laufindizes des Faltungsergebnisses und der Faltungssumme verstanden werden kann. y[n]
x[n] h[n]
n
¦ x[l ] wNk (nl )
(8.8)
l 0
Das rechtsseitige Signal x[n] wird mit dem rechtsseitigen Hilfssignal h[n] h[n]
n
k º ª wN u[n] ¬ ¼
(8.9)
zu y[n] gefaltet. Wird die Folge x[n] mit x[N] = 0 ergänzt, gilt für n = N in (8.8) die Übereinstimmung mit dem gesuchten DFT-Koeffizienten y[ N ]
X [k ]
(8.10)
86
8 Faltung, Differenzengleichung und LTI-Systeme
Im zweiten Schritt wird die Berechnung der Faltungssumme als eine Anwendung des Prinzips der Rückkopplung (Rekursion) eingeführt, wie es auch in den Differenzengleichungen zum Ausdruck kommt. Anmerkung: Ohne das fundamentale Prinzip der Rückkopplung wäre unsere Welt nicht denkbar. Als fachübergreifende Wissenschaft beschäftigt sich die Kybernetik (N. Wiener, 1948) damit. Andersherum gesehen, ist zu erwarten, dass sich für Differenzengleichungen (und Differentialgleichungen) praktische Anwendungen ergeben, siehe z. B. Regelkreis in der Regelungstechnik.
Schreibt man die Faltungssumme (8.8) für die Werte von y[n] explizit an y[0] y[1]
h[0] x[0] x[0] h[0] x[1] h[1] x[0]
y[2]
h[0] x[2] h[1] x[1] h[2] x[0]
x[1] h[1] y[0] x[2] h[1] x[1] h[1] x[0]
(8.11)
x[2] h[1] y[1] #
so ergibt sich aus einem Koeffizientenvergleich wegen der Produktdarstellung (8.9) der rekursive Zusammenhang y[n]
x[n] h[1] y[n 1] für n t 0 und y[ 1] 0
(8.12)
Es liegt eine lineare Differenzengleichung mit konstanten Koeffizienten (DGL) 1. Ordnung vor y[n] a1 y[n 1] b0 x[n]
(8.13)
mit den beiden Koeffizienten a1
k wN
und b0
1
(8.14)
Ferner sind zwei Nebenbedingungen zu beachten.
x[n] 0
für n ^0,1,! , N 1`
y[1] 0 Anfangswert
(8.15)
Die rekursive Struktur der DGL 1. Ordnung wird im Programmbeispiel 8-2 und besonders im Blockdiagramm des zugehörigen Systems in der Direktform I nochmals sichtbar. Das Blockdiagramm in Bild 8-5 zeigt die Berechnung des Ausgangswertes y[n] in Abhängigkeit vom aktuellen Eingangswert x[n] und dem vorherigen Ausgangswert y[n1]. Der Block D symbolisieren eine Verzögerung (Delay) des eingehenden Signals um einen Takt. Die kreisförmigen Elemente stehen für die Rechenoperationen „Multiplikation des Signals mit der angegebenen Konstanten“ bzw. „Addition aller ankommenden Signale“. Verzweigen sich Kanten, so werden die Signale entsprechend oft kopiert. Werden die Nebenbedingungen (8.15) eingehalten, kann im Zeitschritt N der gesuchte DFTKoeffizient am Systemausgang abgegriffen werden, man spricht vom Goertzel-Algorithmus. Mit dem Goertzel-Algorithmus sind zur Berechnung des DFT-Koeffizienten N komplexe Multiplikationen und bei den üblichen reellen Eingangssignalen N reelle Additionen erforderlich. Pro DFT-Koeffizient ergibt sich dadurch keine Ersparnis zur direkten Berechnung der DFT-Koeffizienten. Sind jedoch nur wenige Koeffizienten zu bestimmen, z. B. beim Mehr-
8.3 Differenzengleichung 1. Ordnung
87
frequenzwahlverfahren nur 8 von 256, kann die Einsparung erheblich sein. Hinzu kommt, dass nun anders als bei der Radix-2-FFT, die DFT-Länge prinzipiell nicht gebunden ist. Anmerkung: Für den praktischen Einsatz kann der Algorithmus noch effizienter gestaltet werden, so dass nur reelle Operationen durchgeführt werden müssen, was in Abschnitt 8.4.3 noch genauer erläutert wird.
Eingang
Ausgang
x[n]
y[n]
D System
a1
y[n1]
Bild 8-5 Blockdiagramm eines zeitdiskreten Systems 1. Ordnung in Direktform I für den GoertzelAlgorithmus
Programmbeispiel 8-2 DGL 1. Ordnung, Goertzel-Algorithmus (Programmausschnitt) a1 = -exp(j*2*pi*k/N); y = x(1); for n = 2:N y = x(n) - a1*y; end Xk = -a1*y;
% h[1] % y[0] = x[0] % recursion % DFT coefficient
8.3.2
Versuchsdurchführung
M8.3
Überprüfen Sie den Goertzel-Algorithmus mit MATLAB. Erzeugen Sie dazu ein Sinus- oder Kosinussignal dessen k-fache Periode N = 256 ergibt. Wenden Sie den Goertzel-Algorithmus in Bild 8-5 für verschiedene DFT-Koeffizienten an und überprüfen Sie die Ergebnisse. Hinweis: Schreiben Sie dazu eine MATLAB-Funktion für den Goertzel-Algorithmus 1. Ordnung, function y = goertzel_1(x,k,N).
M8.4
Erzeugen Sie ein DTMF-Signal der Länge 205 und bestimmen Sie mit dem Goertzel-Algorithmus die den 8 DTMF-Tönen am nächsten liegenden DFT-Koeffizienten. Hinweis: Bild 8-6 zeigt das Ergebnis für den Wählton Nummer 6. Anmerkung: Die DFT-Länge 205 liefert die besten Resultate für die DTMF-Signalerkennung [Mar92], [Mit06].
88
8 Faltung, Differenzengleichung und LTI-Systeme
110 100 90 80
|X[k ]| o
70 60 50 40 30 20 10 0 15
20
25
30
35
40
k o
Bild 8-6 Mit dem Goertzel-Algorithmus 1. Ordnung berechnete DFT-Koeffizienten (N = 205) für das DTMF-Signal zum Wählton Nummer 6
8.4
Lineare zeitinvariante Systeme
8.4.1
Impulsantwort und Frequenzgang von LTI-Systemen
Die Systemtheorie definiert Signale als mathematische Funktionen und Systeme als Abbildungen (Transformationen) der Funktionen, siehe Bild 8-7 links. Der mathematische Ansatz wird in der digitalen Signalverarbeitung ergänzt durch Überlegungen zur praktischen Realisierung in Hard- und Software. Ihrer Bedeutung entsprechend, werden den digitalen Systemen im Folgenden insgesamt sechs Versuche gewidmet. Zeitdiskrete linearen zeitinvarianten Systeme, kurz LTI-Systeme (Linear Time-Invariant) genannt, werden insbesondere durch ihre Reaktion auf die Erregung mit der Impulsfolge G[n] bzw. der komplex Exponentiellen exp( j:0n) charakterisiert. Erregt man ein energiefreies zeitdiskretes LTI-System mit einer Impulsfolge wie in Bild 8-7 rechts, so ist am Ausgang die Impulsantworten h[n] zu beobachten. Hängt die Form der Impulsantwort nicht vom Zeitpunkt der Erregung ab, spricht man von einem zeitinvarianten System. Eingang
x[n] Erregung
System
T{.}
Ausgang
G [n]
y[n] Reaktion
e j:0 n
LTISystem
h[n]
H e j :0 e j :0 n
Bild 8-7 Zeitdiskretes System als Transformation einer Folge (links) und Reaktion eines zeitdiskreten LTI-Systems (rechts) auf die Impulsfunktion und komplex Exponentielle mit der Impulsantwort bzw. dem Frequenzgang
8.4 Lineare zeitinvariante Systeme
89
Für die Berechnung der Ausgangssignale ist wichtig, dass die Signale der digitalen Signalverarbeitung in natürlicher Weise als Überlagerung gewichteter und zeitlich verschobener Impulsfolgen aufgefasst werden können. Interpretiert man das Eingangssignal dementsprechend und setzt die Linearität des Systems voraus, d. h. die Anwendbarkeit des Superpositionsprinzips, dann resultieren die Signale am Systemausgang als Überlagerung ebenso gewichteter und verzögerter Wiederholungen der Impulsantwort. Für die Eingangs-Ausgangsgleichung zeitdiskreter LTI-Systeme ergibt sich im Zeitbereich die Faltung der Eingangsfolge mit der Impulsantwort. Im Beispiel einer rechtsseitigen Eingangsfolge und einer rechtsseitigen Impulsantwort eines kausalen Systems erhält man y[0] x[0] h[0] y[1] x[0] h[1] x[1] h[0] y[2] x[0] h[2] x[1] h[1] x[2] h[0] #
(8.16)
n
y[n]
¦ x[l ] h[n l ]
x[n]* h[n]
l 0
Es resultiert die Faltung in (8.1) wenn berücksichtigt wird, dass nur rechtsseitige Signale vorliegen. Die zweite wichtige Art der Systemreaktion ist die Antwort auf komplex exponentielle Eingangssignale. Dahinter verbirgt ist das Konzept der Eigenfunktion. Also, dass sich am Systemausgang bis auf einen multiplikativen Faktor das Signal am Systemeingang ergibt [Wer08b]. Die komplex Exponentiellen sind Eigenfunktionen von LTI-Systemen. Wird ein LTI-System mit einer komplex Exponentiellen beliebiger Frequenz erregt, reagiert das LTISystem mit y[n]
H e j: 0 e j :0 n
mit
x[n] e j:0 n
(8.17)
Anmerkung: LTI-Systeme weisen am Ausgang nur Frequenzanteile auf, die auch am Systemeingang eingespeist wurden, siehe Linearität.
Obige Überlegungen hängen nicht vom Wert der normierten Kreisfrequenz ab. Es gilt daher allgemein: Liegt für das Einganssignal eine harmonische Zerlegung in Frequenzkomponenten durch die Fourier-Transformation vor, so kann das Ausgangssignal im Frequenzbereich einfach bestimmt werden
H e j: X e j: mit dem Frequenzgang des Systems H e j: . Y e j:
(8.18)
Da sowohl die Impulsantwort als auch der Frequenzgang die Systemreaktion eindeutig beschreiben, müssen beide in engem Zusammenhang stehen. Tatsächlich bilden die Impulsantwort und der Frequenzgang ein Fourier-Paar und können, die Stabilität des Systems vorausgesetzt, durch Fourier-Transformation ineinander umgerechnet werden.
90
8 Faltung, Differenzengleichung und LTI-Systeme
F
h[n] l H e j:
(8.19)
Im Weiteren wird, falls nicht anders erwähnt, von kausalen Systemen ausgegangen. Das sind Systeme deren Reaktion erst mit oder nach der Erregung eintritt. Für diese ist die Impulsantwort eine rechtsseitige Folge, also h[n] = 0 für n < 0. Ferner wird angenommen, dass die Systeme auf Eingangssignale mit beschränkten Amplituden mit Ausgangssignalen mit beschränkten Amplituden antworten. Man spricht dann von der BIBO-Stabilität (Bounded Input Bounded Output).
8.4.2
Lineare Differenzengleichung und z-Transformation
Häufig können die Systeme in der digitalen Signalverarbeitung durch lineare Differenzengleichungen mit konstanten Koeffizienten (DGL) beschrieben werden. N
M
k 0
m 0
¦ ak y[n k ]
¦ bm x[n m]
(8.20)
Damit ist insbesondere die Realisierbarkeit der Systeme durch Hard- oder Software prinzipiell sichergestellt, vgl. Blockdiagramm in Direktform I in Bild 8-5. Zur effektiven Lösung der DGL stellt die Mathematik die z-Transformation für Signale zur Verfügung. f
¦
X ( z)
n f
x[n] z n
(8.21)
Anmerkung: Die z-Transformation ist eng mit der Fourier-Transformation für Folgen verwandt, wie ein Blick in Tabelle 8-1 zeigt. Für zeitkontinuierliche Funktionen gelten entsprechende Zusammenhänge zwischen den linearen Differentialgleichungen und der Laplace-Transformation.
Durch z-Transformation leitet sich aus der Differenzengleichung (8.20) die EingangsAusgangsgleichung im Bildbereich ab. Y ( z)
H ( z) X ( z)
(8.22)
Darin ist H(z) die Übertragungsfunktion des Systems eine rationale Funktion
H ( z)
Z ( z) N ( z)
¦ bl z l
l 0 N
¦ ak z k
k 0
1 1 zfk z k 1 M
M
b0 a0
1 1 z0 l z
l 1 N
(8.23)
mit den Zählerkoeffizienten bl und den Nennerkoeffizienten ak. Das Zähler- und Nennerpolynom kann auch in Produktform mit den Nullstellen z0 l und Polen zf k geschrieben werden. Das Übertragungsverhalten der Systeme wird durch die Pole und Nullstellen bis auf eine multiplikative Konstante vollständig charakterisiert. In den beiden folgenden Versuchen wird deshalb der Einfluss der Pole und Nullstellen genauer betrachtet.
8.4 Lineare zeitinvariante Systeme
91
Bei stabilen Systemen liefert die Übertragungsfunktion auf dem Einheitskreis z = ej: den Frequenzgang
k 1 M
j: 1 z0 m e
b0 m 1 a0 N j: 1 zfk e
H e j:
(8.24)
Wichtige Kenngrößen zeitdiskreter LTI-Systeme sind in Tabelle 8-1 im Sinne einer Formelsammlung zusammengestellt. Die Kenngrößen und ihre Zusammenhänge sollen Ihnen in diesem und den nächsten Versuchen durch beispielhafte Anwendungen verständlich werden. Tabelle 8-1 Eigenschaften zeitdiskreter LTI-Systeme [Wer08b]
h[n] = T{G[n]}
Impulsantwort
y[n] Eingangs-Ausgangsgleichung im Zeitbereich (Faltung)
f
¦
(8.25)
x[n] h[n] f
¦
x[k ] h[n k ]
k f
(8.26)
h[k ] x[n k ]
k f
s[n] = T{u[n]}
Sprungantwort
(8.27)
n
Zusammenhang zwischen Impulsantwort und Sprungantwort
¦
s[n]
(8.28)
h[k ]
k f
h[n]
s[n] s[n 1]
(8.29)
h[ n] f
(8.30)
f
¦
BIBO-Stabilität (Bounded Input Bounded Output)
n f
y[n] Eigenfunktion und Eigenwert (z-Transformation)
^ `
T zn
H ( z) z n
f
H ( z)
¦
(8.31)
h[n] z n
(8.32)
n f
h[n] = 0 für n < 0
Kausalität N
¦
DGL N-ter Ordnung mit konstanten Koeffizienten
ak y[n k ]
k 0
M
¦
H ( z)
Z ( z) N ( z)
bm x[n m]
(8.34)
m 0
M
Übertragungsfunktion
(8.33)
¦ bm z m
m 0 N
¦ ak z k
k 0
k 1 M
1 1 z0 m z
b0 m 1 a0 N 1 1 zf k z
(8.35)
92
8 Faltung, Differenzengleichung und LTI-Systeme x[n] b2
Signalflussgraph für ein System 2. Ordnung (transponierte Direktform II)
b1 D
b0 D
y[n]
a1
a2
a0 = 1
Z
Impulsantwort und Übertragungsfunktion
(8.36)
h[n] l H ( z ) Z
z z 1
(8.37)
H ( z) X ( z)
(8.38)
Sprungantwort und Übertragungsfunktion
s[n] l H ( z )
Eingangs-Ausgangsgleichung im Bildbereich
Y ( z)
Im Nullstelle
z Pol
Pol-Nullstellendiagramm für ein (strikt) stabiles kausales System
Re
(2)
(8.39)
z fk 1 k
|z| = 1 Konvergenzgebiet Bedingt stabiles kausales System
Pole auf dem Einheitskreis mit Vielfachheit eins zugelassen
Minimalphasiges kausales System
Alle Nullstellen liegen im Inneren des Einheitskreises
Maximalphasiges kausales System
Alle Nullstellen liegen außerhalb des Einheitskreises
Frequenzgang (strikt stabiler Systeme)
H e j:
Frequenzgang der Phase
Gruppenlaufzeit Eingangs-Ausgangsgleichung im Frequenzbereich
b (: )
^ `
arg H e
j:
dB
(8.41)
º»¼ ·¸ ¸ º¼» ¸¹
§ Im ª H e j: «¬ ¨ arctan ¨ j: ¨ Re ª« H e ¬ ©
W g ( :) Y e j:
(8.40)
e j:
20 lg H e j:
adB (:)
Frequenzgang der Dämpfung
H ( z) z
d b ( :) d:
H e j: X e j:
(8.42)
(8.43) (8.44)
8.4 Lineare zeitinvariante Systeme
8.4.3
93
Goertzel-Algorithmus 2. Ordnung
Der Goertzel-Algorithmus kann noch etwas effizienter gestaltet werden. Dazu betrachten wird die sich aus der Differenzengleichung 1. Ordnung (8.13) ergebende Übertragungsfunktion (8.35) H ( z)
1
1
1 a1 z 1
1 exp jk 2S N z 1
(8.45)
Durch geschicktes Erweitern können die Nennerkoeffizienten reell gemacht werden. Es gilt 1 a1* z 1
H ( z)
1 a z 1 a z 1
1
* 1 1
1 a1* z 1 1 2 Re a1 z 1 a1 z 2 2
1 exp jk 2S N z 1
(8.46)
1 2 cos k 2S N z 1 z 2
Daraus folgt die DGL 2. Ordnung y[n] a1 y[n 1] a2 y[n 2] b0 x[ n] b1 x[ n 1] b2 x[ n 2]
(8.47)
und durch Koeffizientenvergleich die Spezialisierung mit den reellen Nennerkoeffizienten a0
1
a1
b0
1
b1
2 cos k 2S N exp jk 2S N
a2
1
b2
0
(8.48)
Zur effizienten Berechnung des k-ten DFT-Koeffizienten ist die Realisierung in der Direktform II günstig. Für den Signalflussgraphen ergibt sich die Struktur in Bild 8-8. Da die Ausgangsgröße y[n] nur zum Zeitpunkt n = N bestimmt werden muss, ist die komplexe Multiplikation mit b1 nur einmal erforderlich. Der Goertzel-Algorithmus 2. Ordnung benötigt N reelle Multiplikation, 2N Additionen und zum Abschluss eine komplexe Multiplikation und eine reelle Addition. v[n] b0 = 1
x[n]
y[n]
v[n1]
a 1
b1
D 1
v[n2]
nichtrekursiv
rekursiv
D
b2 = 0 System
Bild 8-8 Blockdiagramm des zeitdiskreten Systems 2. Ordnung in der Direktform II für den GoertzelAlgorithmus 2. Ordnung
94
8 Faltung, Differenzengleichung und LTI-Systeme
8.4.4
Vorbereitende Aufgaben
A8.5
Bestimmen Sie die Übertragungsfunktion und die Pole und Nullstellen des Systems 1. Ordnung für den Goertzel-Algorithmus. #
A8.6
Ist das System 1. Ordnung für den Goertzel-Algorithmus stabil? Begründen Sie Ihre Antwort. #
A8.7
Bestimmen Sie die Übertragungsfunktion und die Pole und Nullstellen des Systems 2. Ordnung für den Goertzel-Algorithmus. #
A8.8
Ist das System 2. Ordnung für den Goertzel-Algorithmus stabil? Begründen Sie Ihre Antwort. #
A8.9
Zeichnen Sie das Pol-Nullstellendiagramm.
8.4.5
Versuchsdurchführung
M8.5
Schreiben Sie eine MATLAB-Funktion, die den Signalflussgraphen in Bild 8-8 umsetzt. function y = goertzel_2(x,k,N)
M8.6
Bestimmen Sie mit Ihrem Programm für den Goertzel-Algorithmus 2. Ordnung die DFT-Koeffizienten für das DTMF-Signal wie in Bild 8-6.
M8.7
Verwenden Sie in Ihrer Funktion goertzel_2(x,k,N) den MATLAB-Befehl filter. Verifizieren Sie Ihr Programm.
#
Hinweis: Lesen die Online-Dokumentation zur MATLAB-Funktion filter.
Hinweise zu MATLAB-Funktionen und M-Files Im Folgenden werden für die Versuchsdurchführung nützliche MATLAB-Befehle und -Funktionen aufgelistet, zu denen Sie sich mit Hilfe der Help-Funktion Erläuterungen und Beispiele am Bildschirm anzeigen lassen können, siehe auch vorherige Versuche.
Tabelle 8-2 MATLAB-Befehle benutzte Programme und Dateien Elementare Matrizenmanipulationen
fliplr, flipud
Elementare Funktionen der Signalverarbeitung
conv, filter
Þ Online-Ressourcen
dsplab8_1.m, dsplab8_2.m, dsplab8_3.m, goertzel_1.m, goertzel_2.m, goertzel_f.m
95
9
Finite-Impulse-Response-Systeme
9.1
Einführung
Der Versuch befasst sich mit grundlegenden Eigenschaften von Systemen mit endlich langen Impulsantworten, den FIR-Systemen (Finite (-duration) Impulse Response). Erforderliche Grundkenntnisse über Signale und Systeme, wie sie in einführenden Lehrveranstaltungen und Lehrbüchern vermittelt werden, wurden in Abschnitt 8 zusammengefasst und die wichtigsten Formeln in Tabelle 8.1 zusammengestellt. In der Versuchsvorbereitung lösen Sie dazu elementare Aufgaben, die Sie in der Versuchsdurchführung mit MATLAB verifizieren bzw. erweitern. Lernziele Nach Bearbeiten dieses Versuchs können Sie x
den Zusammenhang zwischen der Lage der Nullstellen in der komplexen z-Ebene und dem Frequenzgang erklären
x
erklären was ein minimalphasiges, ein maximalphasiges und ein linearphasiges System ist und wie man diese Systeme an ihren Pol-Nullstellendiagrammen erkennen kann
x
für FIR-Systeme die Übertragungsfunktion aus der Impulsantwort und umgekehrt berechnen
x
die Besonderheiten von FIR-Systemen erläutern
x
FIR-Systeme anhand ihrer Parameter und Systemfunktionen vergleichen und bewerten
x
mit MATLAB die Nullstellen eines FIR-Systems berechnen
x
mit MATLAB für FIR-Systeme das Pol-Nullstellendiagramm, den Betragsfrequenzgang und die Frequenzgänge der Phase und der Gruppenlaufzeit angeben
9.2
Eigenschaften von FIR-Systemen
Nichtrekursive Systeme weisen keine Signalrückführung auf. Von besonderer Bedeutung sind nichtrekursive Systeme mit endlich langen Impulsantworten. Sie werden deshalb FIR-Systeme (Finite (-duration) Impulse Response) genannt. Man spricht von einem FIR-System N-ter Ordnung und einer Impulsantwort der Länge der N + 1. Mit den Koeffizienten der Impulsantwort h[n] mit n = 0, ..., N, vereinfacht sich die Übertragungsfunktion zu einem Polynom N-ten Grades in z1.
N
H ( z)
¦ h[n]z n
n 0
bN bN 1 z " b0 z N zN
b0
N
z z 0l l 1
z
(9.1)
N
Die Nennerkoeffizienten der Übertragungsfunktion in (8.35) sind null mit der Ausnahme von a0 = 1. Damit besitzen nichtrekursive Systeme keine anderen Pole als bei z = 0. Das Übertragungsverhalten der Systeme mit gebrochen rationalen Übertragungsfunktionen (8.35) wird durch die Pole zfk und Nullstellen z0l bis auf eine multiplikative Konstante vollständig charakterisiert. Für FIR-Systeme spezialisiert sich der Frequenzgang zu
96
9 Finite-Impulse-Response-Systeme
H e j:
N
e j:N b0 e j: z0l l 1
(9.2)
Mit der Exponentialform der Nullstellen z0 l
U0l e jM0l
(9.3)
erhält man nach elementarem Umformen den Betragsfrequenzgang
H e j:
N
b0 1 2 U0l cos(: M0l ) U02l l 1
(9.4)
und den Frequenzgang der Dämpfung, kurz Dämpfungsfrequenzgang genannt, a (:) dB
N 20 lg b0 ¦ 10 lg 1 2 U0l cos(: M0l ) U02l l 1
(9.5)
Jede Nullstelle liefert einen multiplikativen Anteil zum Betragsfrequenzgang (9.4). Für die Dämpfung erhält man im logarithmischen Maß additive Beiträge (9.5), was insbesondere bei der Abschätzung des Dämpfungsfrequenzganges mit dem Bode-Diagramm benutzt wird. Um den Einfluss einer Nullstelle auf das Übertragungsverhalten des Systems festzustellen, ist es nützlich, die möglichen Beiträge in (9.4) bzw. (9.5) allgemein zu diskutieren. Dabei sind für reellwertige Systeme zwei wichtige Fälle zu unterscheiden: Beiträge einer reellen Nullstelle und eines konjugiert komplexen Nullstellenpaares. Anmerkung: Systeme sind reellwertig, wenn sie auf reelle Eingangssignale stets mit reellen Ausgangssignalen reagieren. Sie bilden den üblichen Fall in der Signalverarbeitung. Komplexe Systeme können in reelle Teilsysteme zerlegt werden.
Zunächst wird der Fall einer reellen Nullstelle betrachtet und ihr Beitrag zum Betragsfrequenzgang in Bild 9-1 dargestellt.
H 0 r e j:
1 2 U0 cos(:) U02
(9.6)
In Bild 9-1 rechts ist das Ergebnis zu sehen. Für den Betrag (Modul) U0 = 1 liegt die Nullstelle auf dem Einheitskreis, |z| = 1, und der Frequenzgang nimmt dort den Wert null an. Grundsätzlich kann beobachtet werden: Der Einfluss einer Nullstelle auf den Frequenzgang ist um so ausgeprägter, je näher die Nullstelle am Einheitskreis liegt und je geringer die Differenz zwischen der betrachteten normierten Kreisfrequenz : und der Phase der Nullstelle (Argument) M0 ist. Für den wichtigen Fall eines reellwertigen Systems treten Nullstellen entweder rein reell oder als konjugiert komplexe Paare auf, siehe Bild 9-2. Die Beiträge eines konjugiert komplexen Nullstellenpaares zum Betragsfrequenzgang
1 2U0l cos(: M0l ) U02l 1 2U0l cos(: M0l ) U02l
H 0 k e j:
(9.7)
9.2 Eigenschaften von FIR-Systemen 2 = U0
3
z
Im
97
|H0r(e j:)| Re
1
1.5 2
1 0.5
1
U0
0 -1
:/S
0
1
Bild 9-1 Einfluss einer reellen Nullstelle mit Betrag U0 auf den Betragsfrequenzgang
sind in Bild 9-2 dargestellt. Der Einfluss der Nullstellen ist wiederum umso markanter, je näher die Nullstellen am Einheitskreis liegen und je kleiner die Differenz zwischen der betrachteten normierten Kreisfrequenz und der Phase der nächsten Nullstelle ist. Deshalb ist es bei FIR-Systemen möglich, anhand der Lage der Nullstellen den Betragsfrequenzgang grob abzuschätzen bzw. umgekehrt aus einer Skizze des Betragsfrequenzganges die Lage der Nullstellen grob einzugrenzen. Im U0
2 = U0
6
z
|H0k(e j:)| M0
1
1.5
4
1
Re
2
-1
0.5 -1/3
0
1/3
:/S
1
Bild 9-2 Einfluss eines konjugiert komplexen Nullstellenpaares mit Betrag U0 und Phasen M0 = r S/3 auf den Betragsfrequenzgang
Der Phasenfrequenzgang ergibt sich bis auf das Vorzeichen aus den Rechenregeln für komplexe Größen. b ( :)
arg H e j:
N § U sin(: M0l ) · arctan b0 ¦ arctan ¨ 0l ¸ © 1 U0l cos(: M0l ) ¹ l 1
(9.8)
Die Phase ist in 2S periodisch. In der Regel wird nur die Grundperiode bzgl. der normierten Kreisfrequenz, das Intervall : ]S, S], betrachtet. Eine in der Übertragungstechnik wichtige Systemgröße ist der Frequenzgang der Gruppenlaufzeit. Sie ergibt sich aus der Phase durch Differenzieren W g (: )
d b (: ) d:
(9.9)
Differenzieren der Arcustangens-Funktionen in (9.8) nach der normierten Kreisfrequenz liefert
98
9 Finite-Impulse-Response-Systeme
W g (: )
M ¦
U02l U0l cos(: M0l )
2
l 1 1 2 U0l cos(: M0l ) U0l
(9.10)
Anmerkung: In der Literatur wird verschiedentlich die Phase mit negativem Vorzeichen eingeführt. Dann wird bei der daraus abgeleiteten Gruppenlaufzeit, anders als hier, das negative Vorzeichen weggelassen.
Für die Beiträge der Nullstellen zu den Frequenzgängen der Phase und der Gruppenlaufzeit können ähnliche Überlegungen wie zum Betragsfrequenzgang angestellt werden. Eine angemessene Diskussion der Ergebnisse übersteigt den Rahmen dieses Grundkurses, weshalb hier auf die Literatur verwiesen wird. In der Versuchsdurchführung wird die Bedeutung der Phase und Gruppenlaufzeit an ausgewählten Beispielen aufgezeigt. Wichtige Kenngrößen zeitdiskreter LTI-Systeme sind in Tabelle 8-1 im Sinne einer Formelsammlung zusammengestellt. Die Kenngrößen und ihre Zusammenhänge sollen Ihnen in diesem und dem nächsten Versuch durch Beispiele verständlich werden.
9.3
Vorbereitende Aufgaben Hinweis: Bei einigen Aufgaben werden kurze Rechnungen oder Herleitungen verlangt. Dabei sollte für Ihre schriftlichen Lösungen jeweils eine Seite ausreichen.
A9.1
Wie ändert sich der Beitrag einer Nullstelle zum Betragsfrequenzgang, wenn die Nullstelle am Einheitskreis gespiegelt, d. h. ihr Betrag invertiert wird? Wie ist der Beitrag der gespiegelten Nullstelle zum Betragsfrequenzgang? Ergänzen Sie dazu Tabelle 9-1. Tabelle 9-1 Spiegelung einer Nullstelle am Einheitskreis Nullstelle vorher
nachher (gespiegelt)
z0
z0 g
U0e jM0 1
U0
e jM0
Beitrag zum Betragsfrequenzgang
H 0 e j:
1 2 U0 cos(: M0 ) U02
H 0 g e j:
In welchem Zusammenhang stehen die Beiträge der Nullstelle zum Betragsfrequenzgang vor und nach der Spiegelung? Geben Sie den Beitrag nach der Spiegelung als Funktion des Beitrages vor der Spiegelung an. A9.2
Untersucht wird ein kausales FIR-System mit der Übertragungsfunktion H1(z) = 1 + 2 z 1 + 3 z 2. Geben Sie die Pole und Nullstellen an und tragen Sie sie in Bild 9-3 ein. Nullstellen z01,2 =
Pole zf1,2 =
9.3 Vorbereitende Aufgaben
99
Im
z
1
Re
Bild 9-3 Pol-Nullstellendiagramm von H1(z)
A9.3
Ist das System H1(z) minimal- oder maximalphasig? Begründen Sie Ihre Antwort. Hinweis: Siehe Tabelle 8-1
A9.4
Bestimmen Sie die Impulsantwort des Systems H1(z). Geben Sie dazu die Zahlenwerte der von null verschiedenen Koeffizienten an. h1[n] = {
,
,
}
A9.5
Geben Sie den Signalflussgraphen des Systems H1(z) an und kontrollieren Sie die Impulsantwort in A9.4.
A9.6
Welcher Zusammenhang besteht zwischen den Impulsantworten minimalphasiger und maximalphasiger reellwertiger FIR-Systeme mit gleichen Betragsfrequenzgängen? Um die Frage zu beantworten, gehen Sie schrittweise vor. Zunächst zeigen Sie den allgemeinen Zusammenhang am Beispiel einer Übertragungsfunktion 2. Ordnung. z
h[n] l
H ( z)
( z z01 )( z z02 ) z2
Dazu verifizieren Sie, dass nach der Spiegelung der Nullstellen für die Übertragungsfunktion des neuen Systems gilt
100
9 Finite-Impulse-Response-Systeme z
hg [n] l
2
H g ( z)
1 §1· §1· ¨ ¸ H ¨ ¸ z01 z02 © z ¹ ©z¹
Hinweis: Beachten Sie die Symmetrie zwischen den Nullstellen vor und nach der Spiegelung aufgrund der Reellwertigkeit des Systems. Danach führen Sie die inverse z-Transformation mit dem Verschiebungssatz und dem Satz von der Zeitumkehr durch. Geben Sie untenstehend die Impulsantwort hg[n] in Abhängigkeit der Impulsantwort h[n] an. hg [n]
Hinweis: Beachten Sie, dass die Impulsantwort wiederum rechtsseitig ist. " Notieren Sie Ihre Rechnung, ca. 1 Seite, auf ein eigenes Blatt. A9.7
Bestimmen Sie die Übertragungsfunktion H1g(z), die sich durch Spiegelung der Nullstellen am Einheitskreis von H1(z) in A9.2 ergibt. Geben Sie auch die Impulsantwort an. Kontrollieren Sie das Ergebnis anhand A9.6. H1g(z) = h1g[n] =
A9.8
Zeigen Sie anhand (9.10), dass der Gesamtbeitrag zum Frequenzgang der Gruppenlaufzeit einer Nullstelle und ihrer Spiegelung am Einheitskreis eine Konstante ergibt. " Notieren Sie Ihre Rechnung, ca. 1/2 Seite, auf ein eigenes Blatt.
Welche Auswirkung hat das auf den Phasenfrequenzgang?
A9.9
Bestimmen Sie eine Übertragungsfunktion 2. Ordnung H2(z) derart, dass die Kaskade der Systeme, H3(z) = H1(z) H2(z), linearphasig wird. Zeichnen Sie das Pol-Nullstellendiagramm zu H2(z) in Bild 9-4. H2(z) = z01,2 =
9.3 Vorbereitende Aufgaben
101
Im
z
1
Re
Bild 9-4 Pol-Nullstellendiagramm von H2(z)
A9.10
Bestimmen Sie die Übertragungsfunktion H3(z) aus A9.9 und geben Sie die zugehörige Impulsantwort an. Welche Eigenschaft hat das Polynom der Übertragungsfunktion H3(z) und wie wirkt sie sich auf die Impulsantwort aus? H3(z) = h3[n] = {
A9.11
,
,
,
,
}
Geben Sie den Frequenzgang und den Phasefrequenzgang von H3(z) aus A9.10 an.
H 3 e j:
b3 (:)
A9.12
Überlegen Sie welchen Vorteil die lineare Phase bei der Filterung von Signalen hat.
A9.13
Im Versuch sollen Sie Ihre Ergebnisse aus der Vorbereitung mit MATLAB verifizieren. Machen Sie sich dazu mit dem Programmbeispiel 9-1 vertraut. Es gibt das Pol-Nullstellendiagramm, und die Frequenzgänge des Betrags, der Phase und der Gruppenlaufzeit zu einer Impulsantwort endlicher Dauer aus.
102
9 Finite-Impulse-Response-Systeme Mit der MATLAB-Function firplot([1 2 4],'test') wurde die Anzeige in Bild 9-5 erzeugt. Machen Sie sich mit den MATLAB-Befehlen roots, zplane, unwrap und grpdelay vertraut.
Programmbeispiel 9-1 Grafische Darstellung des Pol-Nullstellendiagramms, der Impulsantwort, der Frequenzgänge des Betrags, der Phase und der Gruppenlaufzeit und der Dämpfung von FIR Systemen % Pole-zero plot and plot of the magnitude, the attenuation, % the phase and the group delay of a FIR system % function firplot(h,txt) % h : impulse response of FIR system % txt : text string for figure title % firplot.m * mw * 04/24/2008 function firplot(h,txt) if nargin==2 NAME = ['firplot : ',txt]; % add text to the figure title else NAME = 'firplot'; end FIG = figure('Name',NAME,'NumberTitle','off'); % Impulse response subplot(3,2,1), stem(0:length(h)-1,h,'full'), grid xlabel('{\itn} \rightarrow'), ylabel('{\ith}[{\itn}] \rightarrow') % Pn-plot subplot(3,2,2), zplane(h,[1 zeros(1,length(h)-1)]), grid xlabel('Re \rightarrow'), ylabel('Im \rightarrow') % Magnitude of frequency response N = 1024; % number of samples in the frequency domain H = fft(h,max(N,length(h))); f = 0:N-1; f = 2*f/N; f = f(1:N/2); H = H(1:N/2); subplot(3,2,4), plot(f,abs(H)), grid xlabel('\Omega / \pi \rightarrow'), ylabel('|{\itH}(e^{j\Omega})| \rightarrow') % Attenuation of frequency response subplot(3,2,6), plot(f,min(-20*log10(abs(H)),100)), grid xlabel('\Omega / \pi \rightarrow') ylabel('{\ita}(\Omega) in dB \rightarrow') % Phase of frequency response subplot(3,2,3), plot(f,angle(H)/pi), grid xlabel('\Omega / \pi \rightarrow') ylabel('{\itb}(\Omega) / \pi \rightarrow') % Group delay [tau,w] = grpdelay(h,[1 zeros(1,length(h)-1)],N,'whole'); w = w(1:N/2); tau = tau(1:N/2); subplot(3,2,5), plot(w/pi,tau), grid xlabel('\Omega / \pi \rightarrow') ylabel('{\it{\tau}}_{\itg}(\Omega) \rightarrow')
9.4 Versuchsdurchführung
103
0
Im o 0
0.5
1 no
1.5
0
0.5 : / So
1
2
2
0
0.5 : / So
5 0
0
0.5
1
: / So
4
Wg(: ) o
0 Re o
10
0
0
-1 -2
1
-1
2
0
2
|H(ej: )| o
b(: ) / S o
1
2
1
a(: ) in dB o
h[n] o
4
0 -10 -20
0
0.5
1
: / So
Bild 9-5 Impulsantwort, Pol-Nullstellendiagramm, Frequenzgänge der Phase, des Betrags und der Gruppenlaufzeit eines einfachen FIR-Systems (firplot)
9.4
Versuchsdurchführung
M9.1
Zur Berechnung der Nullstellen eines Polynoms stellt MATLAB den Befehl roots zur Verfügung. Sind die Nullstellen eines Polynoms bekannt, so liefert der Befehl poly die Koeffizienten des Polynoms. Überprüfen Sie das für das Polynom (z1) (z2) (z3) (z4) = z 4 10z 3 + 35z 2 50z + 24 Hinweis: Siehe Online-Hilfe help roots und help poly. Bei der numerischen Berechnung von Nullstellen können Fehler auftreten, siehe numerische Mathematik.
M9.2
Verifizieren Sie Ihre Ergebnisse aus der Vorbereitung, indem Sie mit MATLAB die Pol-Nullstellendiagramme, Betragsfrequenzgänge und Frequenzgänge der Phasen zu den Systemen H1(z), H2(z) und H3(z) bestimmen. Berechnen Sie mit MATLAB die Impulsantwort des Systems H3(z) aus den Impulsantworten der Systeme H1(z) und H2(z). Hinweis: Benutzen Sie der Einfachheit halber das Programm firplot zur grafischen Darstellung.
M9.3
Verifizieren Sie die Bedeutung der Phase bzw. Gruppenlaufzeit indem Sie das System H3(z) mit einem Kosinussignal, z. B. mit der normierten Kreisfrequenz S / 4 beaufschlagen. Um wie viele Takte (Abtastintervalle) ist im eingeschwungenen Zustand das Ausgangssignal im Vergleich zum Eingangssignal verzögert?
104 M9.4
9 Finite-Impulse-Response-Systeme Den Ausgangspunkt für die weiteren Untersuchungen bilden die konjugiert komplexen Nullstellenpaare z01,2 0.9er j 0.6S und z03,4 0.8er j 0.8S sowie die durch die Spiegelung am Einheitskreis daraus entstehenden konjugiert komplexen Nullstellenpaare. Bilden Sie alle vier möglichen reellwertigen, nichtrekursiven Systeme 4. Ordnung mit jeweils konjugiert komplexen Nullstellenpaaren. Berechnen Sie die Impulsantworten und normieren Sie sie so, dass jeweils H(1) = 1. Bestimmen Sie mit MATLAB die Pol-Nullstellendiagramme und die Betrags- und Phasenfrequenzgänge und die Frequenzgänge der Gruppenlaufzeit. Hinweise: Benutzen Sie die MATLAB-Funktion poly, um aus den Pol- und Nullstellen die Impulsantwort zu bestimmen. Unterdrücken Sie die auf numerischen Ungenauigkeiten beruhenden störenden Imaginärteile durch den Befehl real. Benutzen Sie das Programm firplot zur grafischen Darstellung.
M9.5
Bestimmen Sie nun die akkumulierten Energiefolgen der Impulsantworten zu den obigen vier Systemen. n
eh [n]
¦ h[m]
2
(9.11)
m 0
Beim Vergleich der akkumulierten Energiefolgen zeigt sich, dass die Energie der Impulsantwort unterschiedlich schnell durchgereicht wird. Bei welchem System erreicht die Energie am schnellsten den Ausgang, d. h. gilt eh,i[n] t eh,j[n] für j = 1, 2, 3 und 4? Dieses System bezeichnet man als Minimumdelay-System. Bei welchem System ist die Energieverzögerung maximal?
Hinweise zu MATLAB-Funktionen und M-Files Im Folgenden werden für die Versuchsdurchführung nützliche MATLAB-Befehle und -Funktionen aufgelistet, zu denen Sie sich mit der Help-Funktion Erläuterungen und Beispiele am Bildschirm anzeigen lassen können, siehe auch vorherige Versuche. Tabelle 9-2 MATLAB-Befehle benutzte Programme und Dateien Befehle für Polynome
roots, poly
Elementare mathematische Funktionen
abs, angle, real
Elementare Funktionen der Signalverarbeitung
grpdelay, unwrap, zplane
Befehle zur Programmsteuerung
nargin
Þ Online-Ressourcen
dsplab9_1.m, dsplab9_2.m, dsplab9_3.m, firplot.m
105
10
Infinite-Impulse-Response-Systeme
10.1
Einführung
Grundlegenden Eigenschaften rekursiver LTI-Systeme stehen im Mittelpunkt dieses Versuchs. Da diese Systeme – von eigens konstruierten Spezialfällen abgesehen – unendlich lange Impulsantworten aufweisen, spricht man vereinfachend von IIR-Systemen (Infinite (-duration) Impulse Response). Dieser Versuch baut auf die beiden vorhergehenden Versuche auf. In Tabelle 8-1 wurde ein Überblick über die Eigenschaften zeitdiskreter LTI-Systeme gegeben. Am Beispiel von FIRSystemen wurden wichtige Systemkenngrößen vorgestellt. Hier werden nun die mit einer Signalrückführung versehenen IIR-Systeme untersucht. Die Rückführung schlägt sich in der Übertragungsfunktion in Polen nieder und beeinflusst den Frequenzgang, die Impulsantwort und die Stabilität des Systems wesentlich. Lernziele Nach Bearbeiten dieses Versuchs können Sie x
die rekursive Struktur von IIR-Systemen mit einem Blockdiagramm erläutern und daraus ein MATLAB-Programm zur Realisierung der Systeme ableiten
x
den Zusammenhang zwischen den Polen und Nullstellen und den Systemfunktionen Impulsantwort und Übertragungsfunktion erklären
x
den Zusammenhang zwischen der Lage der Pole- und Nullstellen in der komplexen z-Ebene und dem Frequenzgang erklären
x
mit MATLAB die Systemfunktionen berechnen und grafisch darstellen
x
IIR-Systeme anhand ihrer Parameter und Systemfunktionen vergleichen und bewerten
x
das MATLAB-Werkzeug Filter Viewer einsetzen
10.2
Einfluss der Pole auf den Frequenzgang
Die Übertragungsfunktion zeitdiskreter LTI-Systeme, die sich durch eine DGL beschreiben lassen, wurde in Versuch 8 als rationale Funktion H(z) vorgestellt. Die Übertragungsfunktion wird durch ihre Pole und Nullstellen festgelegt. Der Einfluss der Nullstellen wurde in Versuch 9 aufgezeigt. Jetzt werden die Pole mit einbezogen. Bild 10-1 zeigt den Einfluss eines reellen Pols auf den Betragsfrequenzgang, vgl. Bild 9-1. Grundsätzlich gilt wieder, je näher der Pol von innen an den Einheitskreis rückt, um so größer wird sein Einfluss. Da der Pol eine Nullstelle des Nenners ist, nimmt der Betrag des Frequenzganges dabei zu. Im Grenzfall Uf o 1, strebt er gegen unendlich. Das System wird instabil (bzw. bedingt stabil). D. h. bei einer Anregung mit entsprechender Frequenzkomponente reagiert das System mit einer gegen unendlich strebenden Verstärkung; in praktischen Anwendungen mit einem Überschreiten des darstellbaren Zahlenbereichs. Die konjugiert komplexen Polpaare in Bild 10-2 zeigen ähnliche Wirkungen auf den Frequenzgang, vgl. Bild 9-2.
106
10 Infinite-Impulse-Response-Systeme
Die Lagen der Pole und Nullstellen sind charakteristisch für die Frequenzgänge von LTISystemen, so dass wechselseitig Rückschlüsse gezogen werden können. Damit sind einfache Abschätzungen möglich, die zu schnellen Plausibilitätstest genutzt werden können. „f“
30
Im
z
|Hf(ej:)| 20
Re
1
Uf = 1
10
Uf
0.9 0.8
0.5 1
0
:/S
1
Bild 10-1 Einfluss eines reellen Pols mit Betrag Uf auf den Betragsfrequenzgang
Im
z
Uf
Mf
1
Re
„f“
„f“
50
|Hf(ej:)| 30
Uf = 1
20
0.9 0.8 0.5
10 1
1/3
0
1/3
:/S
1
Bild 10-2 Einfluss eines konjugiert komplexen Polpaares mit dem Betrag Uf und den Phasen Mf = r S/3 auf den Betragsfrequenzgang
10.3
Blockdiagramm
Die rekursive Struktur der IIR-Systeme wird in Bild 10-3 mit dem Blockdiagramm eines Systems 2. Ordnung veranschaulicht. Darin kenntlich gemacht sind die Verzögerungsglieder D, wie Delay, die Multiplizierer durch die jeweiligen Faktoren, die Nenner- und Zählerkoeffizienten ak bzw. bl, und die Addierer durch +. Anmerkung: In der Literatur werden unterschiedliche Symbole verwendet. Beispielsweise das Symbol des Verstärkers (Dreieck) für die Multiplikationen oder T für die Verschiebung um einen Zeittakt.
Zusätzlich eingetragen sind die Zustandsgrößen s1[n] und s2[n]. Sie beschreiben den inneren Zustand des Systems und spielen bei der Zustandsraumdarstellung der Systeme eine wichtige Rolle [Wer08a], [Wer08b]. Bild 10-3 zeigt eine mögliche Realisierung, die transponierte Direktform II. Sie zeichnet sich durch die jeweils minimale Anzahl von Verzögerungsgliedern und Multiplizierern aus, die für ein rekursives System bestimmter Ordnung möglich sind. Man spricht deshalb auch von einer kanonischen Struktur.
10.4 Impulsantwort
107
x[n] b2
b1
D
s2[n]
a2
b0
D
s1[n]
y[n]
a1
Bild 10-3 Blockdiagramm eines rekursives System 2. Ordnung in transponierter Direktform II (a0 = 1) mit den Zustandsgrößen s1[n] und s2[n] Anmerkung: Je nach Anwendung werden auch alternative Strukturen, wie Leiterstrukturen und Wellendigitalfilter eingesetzt. Deren Diskussion würde jedoch den hier abgesteckten Rahmen sprengen [Fet86], [Sch08], [Wer08a].
Im Versuch werden die Zustandsgrößen benutz, um ein kurzes Programm für die Realisierung des Systems abzuleiten. Aus Bild 10-3 erhält man für die Ausgangsgröße y[n]
s1[n] b0 x[n]
(10.1)
und mit dem Verzögerungsoperator D D x[n]
x[ n 1]
(10.2)
für die Zustandsgrößen s1[n]
D s2 [n] b1 x[n] a1 y[n]
(10.3)
D b2 x[n] a2 y[n]
(10.4)
und s2 [n]
Die Gleichungen werden in der Aufgabe A10.2 als Programmiervorschrift für ein rekursives System 2. Ordnung verwendet.
10.4
Impulsantwort
Die Übertragungseigenschaften der LTI-Systeme charakterisieren im Bildbereich die Übertragungsfunktion H(z) und im Zeitbereich die Impulsantwort h[n], siehe Tabelle 8-1. Impulsantwort und Übertragungsfunktion bilden ein z-Transformationspaar, so dass beide Systemfunktionen ineinander überführt werden können. Die dafür benötigten Rechenschritte werden durch spezielle MATLAB-Befehle unterstützt. Das Beispiel des Systems 2. Ordnung in Bild 10-3 macht mit dem grundsätzlichen Verfahren vertraut. Die Übertragungsfunktion eines rekursiven Systems 2. Ordnung ist eine rationale Funktion mit einem Zähler- und einem Nennerpolynom. Zähler- und Nennerpolynom können mit ihren Nullstellen, den Nullstellen z0l bzw. den Polen zfk, auch als Produkte geschrieben werden.
108
10 Infinite-Impulse-Response-Systeme
H ( z)
b0 b1 z 1 b2 z 2 a0 a1 z
1
a2 z
2
b0 z 2 b1 z b2 2
a0 z a1 z a2
b0 ( z z01 )( z z02 ) a0 ( z zf1 )( z zf 2 )
(10.5)
Für den wichtigen Sonderfall nur einfacher, von null verschiedener Pole wird die Übertragungsfunktion durch Partialbruchzerlegung in die für die inverse z-Transformation günstige Form überführt. H ( z)
B0
B1 z B2 z z zf1 z zf 2
für
zf1 z zf 2
und
zf1 , zf 2 z 0
(10.6)
Tabellen für z-Transformationspaare, z. B. in [Wer08], liefern die Korrespondenz z
a n u[n] l
z za
mit z ! a
(10.7)
also
n n B0G [n] B1 zf 1 B2 zf 2 u[ n]
h[n]
(10.8)
mit der Impulsfolge und den beiden rechtsseitigen Exponentiellen. Sind die Beträge der Pole kleiner eins, klingen die Exponentiellen mit wachsender normierter Zeit n ab: Das System ist stabil. Bei stabilen, reellwertigen Systemen mit konjugiert komplexen Polpaaren ergeben sich bedämpfte sinusförmige Anteile, die Eigenschwingungen des Systems.
10.5
Partialbruchzerlegung mit MATLAB
Die Berechnung der Impulsantwort aus der Übertragungsfunktion wird vorteilhaft durch eine Partialbruchzerlegung der Übertragungsfunktion vorbereitet. Die Partialbruchzerlegung rationaler Funktionen unterstützt MATLAB mit dem Befehl residuez. Anhand zweier Beispiele wird die Anwendung des Befehls vorgestellt. Beispiel 10-1 System 2. Ordnung mit konjugiert komplexem Polpaar H1 ( z )
1 2 z 1 z 2 1 1.4 z 1 0.74 z 2
(10.9)
Die Zählerkoeffizienten und die Nennerkoeffizienten werden im Command Window als Vektoren eingegeben. >> b = [1 2 1]; >> a = [1 –1.4 0.74];
Die Befehlseingabe >> [r,p,k] = residuez(b,a);
10.5 Partialbruchzerlegung mit MATLAB
109
liefert die Koeffizienten der Partialbruchzerlegung (residues) r = -0.1757 - 3.6459i -0.1757 + 3.6459i
zu den Polen (poles) p =
0.7000 + 0.5000i 0.7000 - 0.5000i
Der direkte Term (Durchgriff) ist k =
1.3514
Mit ri = r(i) und pi = p(i) sind alle Koeffizienten für die Partialbruchzerlegung der Übertragungsfunktion bekannt. k
H1 ( z )
r1 1 p1 z
1
r2 1 p2 z
1
r z r z k 1 2 z p1 z p2
(10.10)
Es resultiert H1 ( z ) 1.3514
(0.1757 j 3.6459) z ( 0.1757 j 3.6459) z z (0.7 j 0.5) z (0.7 j 0.5)
(10.11)
Anmerkung: Bei reellwertigen Systemen sind die Koeffizienten der Partialbruchzerlegung zu konjugiert komplexen Polen stets selbst zueinander konjugiert komplex. Dadurch lassen sich gegebenenfalls Fehleingaben oder numerische Ungenauigkeiten erkennen.
Beispiel 10-2 System 2. Ordnung mit doppeltem reellen Pol H 2 ( z)
1 z 2 1 z 1 0.25 z 2
Die Zählerkoeffizienten und die Nennerkoeffizienten sind >> b = [1 0 1]; >> a = [1 –1 0.25];
Der Befehl >> [r,p,k] = residuez(b,a);
liefert wieder die Koeffizienten der Partialbruchzerlegung r = -8.0000 5.0000
zu den Polen p =
0.5000 0.5000
Der direkte Term ist k =
4
(10.12)
110
10 Infinite-Impulse-Response-Systeme
Die Übertragungsfunktion resultiert somit in H 2 ( z)
k
r1
1 p1 z 1
r2
1 p1 z 1
2
4
8 z 5z 2 z 0.5 z 0.5 2
(10.13)
Man beachte, dass hier p1 = p2. Unter Umständen können sich bei der numerischen Berechnung der Pole merkliche Ungenauigkeiten einstellen. Bei der hier verwendeten Bildschirmausgabe im MATLAB-Format short werden die Werte gerundet dargestellt.
10.6
Vorbereitende Aufgaben
A10.1
Gegeben ist das rekursive System 2. Ordnung H ( z)
1 z 2
(10.14)
1 0.8 z 1 0.64 z 2
Berechnen Sie in Tabelle 10-1 die ersten vier Werte der Impulsantwort des Systems anhand des Blockdiagramms in Bild 10-3. Gehen Sie dabei vom energiefreien Zustand aus, d. h. s1[0] = s2[0] = 0, und verfolgen Sie Takt für Takt die Signalgrößen im Blockdiagramm. Tabelle 10-1 Impulsantwort h[n] des Systems in (10.14) n 0
x[n]
s2[n]
s1[n]
0
0
h[n]
1 2 3
A10.2
Das Programmbeispiel 10-1 iirdf2t.m realisiert ein IIR-System 2. Ordnung in Direktform II entsprechend dem Blockdiagramm in Bild 10-3. Machen Sie sich mit dem Funktionsaufruf vertraut. Warum werden im Funktionsaufruf die Zustandsgrößen verwendet? Ergänzen Sie die eigentliche Filterroutine. Kontrollieren Sie Ihr Programm anhand Ihrer Ergebnisse in Tabelle 10-1. Hinweis: Sechs Befehlszeilen sind ausreichend.
10.6 Vorbereitende Aufgaben
111
Programmbeispiel 10-1 IIR- Filter 2. Ordnung in der transponierten Direktform II % 2nd order IIR system in transposed direct form II % function [y,sf] = iird2t(b,a,x,si) % x : input signal % b : numerator coefficients b = [b0,b1,b2] % a : denominator cefficients a = [a0,a1,a2] % si : initial conditions si = [s1,s2] % y : output signal % sf : final conditions % iirdf2t.m * mw * 04/30/2008 function [y,sf] = iird2t(b,a,x,si) if nargin==4 SI = si; % initial conditions else SI = [0,0]; end a = a/a(1); b = b/a(1); % normalize coefficients to a0 = 1 y = zeros(size(x)); % allocate memory % Filtering
A10.6-3 Bestimmen Sie die Pole und Nullstellen des Systems H(z) aus (10.14)
Im z
z01,2 = 1
Re
zf1,2 = und tragen Sie die Pole und Nullstellen in Bild 10-4 ein. Bild 10-4 Pol-Nullstellendiagramm zu H(z) in (10.14)
112 A10.4
10 Infinite-Impulse-Response-Systeme Berechnen Sie die Impulsantwort h[n] von H(z) in (10.14) und kontrollieren Sie Ihr Ergebnis mit Tabelle 10-1. " Führen Sie bitte die Rechnung (ca. 1 Seite) auf einem eignen Blatt durch und tragen Sie unten das Ergebnis für die Impulsantwort ein.
h[n] =
A10.5
Im Programmbeispiel 10-2 soll die Impulsantwort eines rekursiven Systems berechnet werden. Ergänzen Sie den Programmausschnitt so, dass die Impulsantwort für ein System mit nur einfachen Polen bestimmt wird. Hinweis: Sechs Befehlszeilen sind ausreichend.
Programmbeispiel 10-2 Berechnung der Impulsantwort für nur einfache Pole [r,p,k] = residuez(b,a); n = 0:20; h = zeros(size(n)); % compute impulse response
% partial fraction expansion % normalized time variable % allocate memory for the impulse response
10.7 Versuchsdurchführung A10.6
113
Das Programmbeispiel 10-2 soll nun zur Bestimmung der Sprungantwort verwendet werden. Wie muss das Nennerpolynom a modifiziert werden, damit das Programmbeispiel 10-2 die Sprungantwort liefert? Hinweis: Gehen Sie von (8.37) aus. a =
10.7
Versuchsdurchführung
M10.1
Verifizieren Sie Ihre Ergebnisse aus der Vorbereitung in Tabelle 10-1. Bestimmen Sie dazu die ersten 21 Elemente der Impulsantwort durch Simulation mit Ihrem Programm iirdf2t.m und durch Simulationen mit den MATLAB-Befehlen filter und impz. Hinweise: Editieren Sie das M-File iirdf2t_.m entsprechend Ihrer Vorbereitung und informieren Sie sich durch die Help-Funktion über die MATLAB-Befehle filter und impz.
M10.2
Bestimmen Sie mit MATLAB sowohl analytisch als auch durch Simulation die Sprungantwort von H(z) aus (10.14). Stellen Sie die Ergebnisse grafisch dar. Hinweise: Verwenden Sie die MATLAB-Befehle residuez und filter. Siehe auch A10.5 und A10.6.
M10.3
Beantworten Sie folgende Fragen: Wie wird sich die Faltung eines Eingangssignals mit der Impulsantwort des Systems qualitativ auswirken? Kann vom Bild der Impulsantwort auf die Pole des Systems geschlossen werden? Wenn es sich um ein System 2. Ordnung handelt?
M10.4
Verifizieren Sie Ihre Ergebnisse aus der Vorbereitung, indem Sie mit MATLAB die Pole und Nullstellen berechnen und das Pol-Nullstellendiagramm, den Betragsfrequenzgang und den Phasenfrequenzgang zu H(z) in (10.14) grafisch ausgeben. Stellen Sie auch die Gruppenlaufzeit des Systems grafisch dar. Hinweise: Zur Analyse und grafischen Darstellung der charakteristischen Funktionen von Filtern gibt es in der MATLAB Signal Processing Toolbox das Programm fvtool(b,a), genannt Filter Viewer, siehe Bild 10-5.
M10.5
Beantworten Sie folgende Fragen: Was kann aus dem Pol-Nullstellendiagramm über den Betragsfrequenzgang gesagt werden? Was kann aus dem Bild des Betragsfrequenzgangs über die Zahl und Lage der Pole und Nullstellen herausgelesen werden? Warum treten im Bild des Phasenfrequenzgangs Sprünge um S auf? Ist in den Bildern ein Zusammenhang zwischen dem Betragsfrequenzgang und der Gruppenlaufzeit erkennbar?
114 M10.6
10 Infinite-Impulse-Response-Systeme Wiederholen Sie die Untersuchungen von IIR-Systemen für die zwei Systeme 4. Ordnung mit den untenstehenden Übertragungsfunktionen. Charakterisieren Sie die Systeme anhand der Ergebnisse. System „Butterworth“ H BW ( z )
0.046
1 4 z 1 6 z 2 4 z 3 z 4 1 0.7821z 1 0.6800 z 2 0.1827 z 3 0.0301z 4
(10.15)
System „Cauer“ HC ( z)
0.2317 0.3378 z 1 0.5297 z 2 0.3378 z 3 0.2317 z 4 1 0.3396 z 1 1.2275 z 2 0.3119 z 3 0.2964 z 4
(10.16)
Bild 10-5 Grafische Benutzerschnittstelle für das MATLAB-Werkzeugs fvtool der Signal Processing Toolbox
10.7 Versuchsdurchführung
115
Hinweise zu MATLAB-Funktionen und M-Files Im Folgenden werden für die Versuchsdurchführung nützliche MATLAB-Befehle und -Funktionen aufgelistet, zu denen Sie sich mit Hilfe der Help-Funktion Erläuterungen und Beispiele am Bildschirm anzeigen lassen können, siehe auch vorherige Versuche.
Tabelle 10-2 MATLAB-Befehle benutzte Programme und Dateien Befehle für Polynome
roots, poly
Elementare Funktionen der Signalverarbeitung
grpdelay, filter, freqz, impz, residue, residuez, unwrap, zplane
Spezielle MATLAB-Programme
fvtool
Befehle zur Programmsteuerung
nargin, isempty
Þ Online-Ressourcen
dsplab10_1.m, dsplab10_2.m, dsplab10_3.m, iirdf2t_.m
116
11
Entwurf digitaler FIR-Filter
11.1
Einführung
Moderne Software-Pakete zur digitalen Signalverarbeitung, wie die Signal Processing Toolbox von MATLAB, enthalten meist mehrere Programme zum Entwurf digitaler Filter. Man unterscheidet nach Entwurfsvorschriften im Zeit- oder Frequenzbereich und zwischen FIR- und IIRFiltern. Dieser und der folgende Versuch stellen einige wichtige Entwurfsverfahren nach Vorschriften im Frequenzbereich vor. Ein weiterer wichtiger Aspekt des Filterentwurfs ist die Implementierung. Sie kann für die Auswahl des Filtertyps entscheidend sein. Überlegungen zu realen digitalen Filtern werden in späteren Versuchen vorgestellt. Lernziele Nach Bearbeiten dieses Versuchs können Sie x
wichtige Vorteile von FIR-Filtern nennen
x
die Entwurfsvorschriften für digitale Filter im Frequenzbereich anhand eines Toleranzschemas erläutern
x
die Grundgleichung der Fourier-Approximation angeben
x
mit MATLAB einen Filterentwurf mit Fourier-Approximation und Fensterbewertung durchführen
x
für einen Tiefpass den Entwurf mit einem Kaiser-Fenster vornehmen und dazu die erforderliche Filterordnung abschätzen
x
den Unterschied zwischen der Fourier- und der Chebyshev-Approximation anhand einer Skizze erklären
x
mit dem MATLAB-Programm fdatool FIR-Filter entwerfen und analysieren
x
für eine praktische Anwendung ein Entwurfsverfahren auswählen und Ihre Wahl begründen
11.2
FIR-Filterstruktur
Unter digitalen FIR-Filtern (Finite Impulse Response) versteht man gemeinhin nichtrekursive digitale Filter mit endlich langer Impulsantwort. FIR-Filter weisen keine Signalrückführung auf. Ihre Struktur, wie sie sich aus der transponierten Direktform II in Tabelle 8-1 ergibt, zeigt Bild 11-1 oben. Darunter ist die häufig verwendete Form einer Verzögerungskette mit Abgriffen zu sehen, das Transversal-Filter (Tapped delay-line Filter). Die transversale Struktur wird von den meisten digitalen Signalprozessoren hardwaremäßig unterstützt. Mit einem Multiply-and-Accumulate-Befehl (MAC) realisieren sie einen Abgriff des FIR-Filters in einem Prozessorzyklus [LBSL97]. Dabei müssen die Elemente der Eingangsfolge nicht wirklich im Speicher bewegt werden, sondern es genügt beim Auslesen die Adresse zu inkrementieren.
11.3 Toleranzschema
117
x[n] bN-1
bN
b0
b1
x[n]
D b0
y[n]
D
D
D b1
bN1
bN
y[n] Bild 11-1 FIR-Filterstrukturen (transponierte Direktform II oben und transversale Struktur unten)
FIR-Filter sind in vielen Anwendungen zu finden. Sie haben den Vorteil, dass - sie „linearphasig“ sein können - sie stets stabil sind - ihr Ein- und Ausschwingen endliche Dauer hat - ihr Entwurf relativ unkompliziert ist - sie effizient in Hardware und auf Signalprozessoren realisiert werden können - sie relativ unempfindlich gegen Wortlängeneffekte sind FIR-Filter haben jedoch den Nachteil, dass / zur Realisierung selektiver Filter mit hohen Sperrdämpfungen und steilen Filterflanken relativ große Filterordnungen benötigt werden Ein FIR-Filter zu entwerfen heißt, die Filterordnung N und die Werte der N + 1 Filterkoeffizienten b0 bis bN geeignet festzulegen. Wie aus Bild 11-1 hervorgeht, entsprechen die Filterkoeffizienten der Impulsantwort, h[n] = bn für n = 0, 1, ..., N und h[n] = 0 sonst. Für den FIR-Filterentwurf werden im Versuch die Fourier-Approximation in zwei Varianten und die Chebyshev-Approximation mit dem Remez-Algorithmus benutzt.
11.3
Toleranzschema
11.3.1
Entwurfsvorschrift im Frequenzbereich
Ein typisches Toleranzschema für den Entwurf von FIR-Tiefpässen zeigt Bild 11-2. Die Frequenzangabe beschränkt sich für den Regelfall reellwertiger Filter wegen der geraden Symmetrie des Betragsfrequenzganges auf den (normierten) Frequenzbereich 0 d : d S.
118
11 Entwurf digitaler FIR-Filter
Für den Betragsfrequenzgang nach Bild 11-2 liegt im Durchlassbereich die Anforderung
1 G D d H e j:
d 1 GD
für 0 d : d :D
(11.1)
und im Sperrbereich die Anforderung
H e j:
für :S d : d S
d GS
(11.2)
vor. Die maximal zulässigen Abweichungen vom Wunschverlauf G D und G S werden Durchlass- bzw. Sperrtoleranz genannt. Die zugehörigen Eckfrequenzen nennt man (normierte) Durchlass- bzw. Sperrkreisfrequenz. Man beachte, dass für den Zwischenbereich, dem Übergangsbereich, keine expliziten Angaben gemacht werden. In der Regel wird jedoch ein monotoner Übergang erwartet. Im Bild entsteht anschaulich der Eindruck eines Toleranzschlauches der den Betragsfrequenzgang des FIRFilters einschließt. Man beachte auch, dass hier der Toleranzschlauch im Durchlassbereich symmetrisch um den Wert eins liegt. |H(ej:)| 1+GD
c
2GD
1GD
d e
GS :D
:S
Ein zulässiger Frequenzgang des Betrags
GS
: S
Bild 11-2 Toleranzschema für den Entwurf eines FIR-Tiefpasses nach Betrag mit dem Durchlassbereich c, dem Übergangsbereich d und dem Sperrbereich e
Bei FIR-Filtern ist eine „linearphasige“ Realisierung möglich und in der Regel gewünscht. In diesem Fall kann das Toleranzschema direkt auf den Frequenzgang bezogen werden, siehe Bild 11-3. Der Frequenzgang ist dann rein reell bzw. rein imaginär. Die nachfolgend behandelten Verfahren liefern FIR-Filter mit linearer Phase im Durchlassbereich. Um ein gutes Sperrverhalten zu erreichen, liegen die Nullstellen der Filter im Sperrbereich auf dem Einheitskreis. Wie in den Abschnitten 9 und 10 festgestellt wurde, führt eine Nullstelle auf dem Einheitskreis zu einem Phasensprung um S, was in Bild 11-3 einem Vorzeichenwechsel des Frequenzganges entspricht. Streng genommen spricht man darum von einem FIR-Filter mit verallgemeinerter linearer Phase (generalized linear phase FIR filter). Im Weitern wird, wie üblich, vereinfachend von linearer Phase gesprochen. Beim Entwurf linearphasiger FIR-Filter sind gewisse Randbedingungen für den Frequenzgang zu beachten. Je nach Länge der Impulsantwort ergeben sich bei gerader und ungerader Symmetrie der Impulsantwort die Einschränkungen in Tabelle 11-1. Anmerkung: Das sieht man jeweils am einfachsten an einer Skizze einer jeweils möglichen Impulsantwort.
11.3 Toleranzschema
119 H(ej:)
2GD
1+GD
zulässiger Frequenzgang
1GD
2GS
GS GS
:D
:S
: S
Bild 11-3 Toleranzschema für den Entwurf eines FIR-Tiefpasses mit linearer Phase
Tabelle 11-1 Eigenschaften der Frequenzgänge von linearphasigen FIR-Filtern mit Ordnung N Impulsantwort
N gerade
N ungerade
gerade: h[n] = h[Nn]
keine Einschränkung
H(z = 1) = 0
ungerade: h[n] = h[Nn]
H(z = 1) = 0 , H(z = 1) = 0
H(z = 1) = 0
11.3.2
Vorbereitende Aufgaben
A.11.1
Benutzen Sie die Ergebnissen in Tabelle 11-1, um die jeweils nicht realisierbaren Filtertypen, d. h. Tiefpass, Bandpass, Hochpass oder Bandsperre, in Tabelle 11-2 einzutragen. Tabelle 11-2 Einschränkungen für linearphasige FIR-Filter Symmetrie der Impulsantwort h[n]
Ordnung der Impulsantwort N
nicht realisierbare Filtertypen
gerade
keine Einschränkung
gerade ungerade gerade ungerade ungerade
A.11.2
Geben Sie die (normierte) Durchlasskreisfrequenz :D, die (normierte) Sperrkreisfrequenz :S, die Durchlasstoleranz GD und die Sperrtoleranz GS in Tabelle 11-3 so an, dass für die digitale Verarbeitung eines analogen Signals die angegebenen Anforderungen erfüllt werden. Zur Umrechnung der Frequenzangaben benutzen Sie den Zusammenhang gemäß dem Abtasttheorem mit der Abtastfrequenz fs (Sampling Frequency), siehe späteren Versuch 16. :
2S f f s
für 0 d f f s 2
(11.3)
120
11 Entwurf digitaler FIR-Filter Tabelle 11-3 Kenngrößen des Toleranzschemas für die Abtastfrequenz fs = 20 kHz Sperrfrequenz
4 kHz
Durchlassfrequenz
3.4 kHz
max. Betragsabweichung im Durchlassbereich
r 5%
minimale Sperrdämpfung
46.02 dB
Sperrkreisfrequenz
:S =
Durchlasskreisfrequenz
:D =
Durchlasstoleranz
GD =
Sperrtoleranz
GS =
11.4
Fourier-Approximation
11.4.1
Fourier-Reihe des Frequenzganges
Die Fourier-Approximation ist eine relativ einfache Möglichkeit, ein FIR-Filter direkt nach Vorgaben im Frequenzbereich zu entwerfen. Sie fußt auf der Darstellung des Frequenzganges durch eine Fourier-Reihe f
¦ h[n] e j:n n f
H e j:
(11.4)
mit den Koeffizienten der Impulsantwort als Fourier-Koeffizienten h[n]
1 2S
S
³ H e
S
j:
e j:n d :
(11.5)
Die Fourier-Approximation ist optimal im Sinne des mittleren Fehlerquadrats. Für die Implementierung muss in der Regel die Fourier-Reihe abgebrochen werden, da die Länge der Impulsantwort des FIR-Filters mit N + 1 als endlich vorgegeben wird. Das FIR-Filter ist dann bezogen auf die Filterordnung immer noch optimal, siehe auch parsevalsche Gleichung. Ein Toleranzschema mit Sprungstellen, wie z. B. in Bild 11-2, führt jedoch bei endlicher Filterordnung zu Überschwingen vor und nach der Sprungstelle im realen Frequenzgang, entsprechend dem bekannten gibbsschen Phänom der Fourier-Approximation. In Abschnitt 11.5 wird gezeigt, wie dieses Problem entschärft werden kann.
11.4.2
Vorbereitende Aufgaben
A11.3
Wie lautet die Wunsch-Impulsantwort hw[n] für den Wunsch-Frequenzgang eines idealen Tiefpasses
HW e j:
hW [n] =
° 1 ® °¯0
für für
0 d : :0 :0 : d S
(11.6)
11.5 Fourier-Approximation mit Fensterung
121
A11.4
Welche zwei Maßnahmen sind notwendig, um aus der Wunsch-Impulsantwort ein realisierbares FIR-System N-ter Ordnung abzuleiten, dessen Betragsfrequenzgang den Wunsch-Frequenzgang approximiert? #
A11.5
Geben Sie die resultierende Impulsantwort hF[n] eines kausalen FIR-Filters der Ordnung N = 20 in analytischer Form an keine Zahlenwerte. hF [n] =
A11.6
Wie kann die Verkürzung der Wunsch-Impulsantwort auf die vorgegebene Filterordnung interpretiert werden und welche Auswirkung hat sie auf den realen Frequenzgang? #
11.4.3
Versuchsdurchführung
M11.1
Untersucht wird das FIR-Filter mit der Impulsantwort aus der Vorbereitung A11.3 für die normiert Grenzkreisfrequenz :0 = (:D + :S) / 2 in Tabelle 11-3. Berechnen Sie für die Filterordnung N = 20 die Impulsantwort mit MATLAB und analysieren Sie das Filter mit dem MATLAB-Werkzeug fvtool. Überprüfen Sie am Betragsfrequenzgang ob die Toleranzvorgaben eingehalten werden: Ergibt sich eine Verbesserung, wenn Sie die Filterordnung verdoppeln? Kann mit der Methode dieses oder ein prinzipiell ähnliches Toleranzschema erfüllt werden?
M11.2
Durch den Modulationssatz der Fourier-Transformation ist es möglich, einen FIRTiefpass in einen Hochpass oder Bandpass zu überführen. Multiplizieren Sie dazu die Impulsantwort des Tiefpasses aus Aufgabe A11.3 mit der Kosinusfolge cos(:0n) für :0 = S bzw. S/2. Analysieren Sie die resultieren FIRSysteme mit dem MATLAB-Werkzeug fvtool.
11.5
Fourier-Approximation mit Fensterung
11.5.1
Einführung
Die einfache Fourier-Approximation ist zwar optimal im Sinne des mittleren quadratischen Fehlers im Frequenzgang, sie eignet sich jedoch wegen dem gibbsschen Phänomen nicht, um Frequenzgänge mit Sprungstellen wie im Toleranzschema in Bild 11-3 zu realisieren. Es bestehen zwei grundsätzliche Möglichkeiten dieses Problem abzumildern. x Es können die Sprungstellen durch stetige Übergänge modifiziert werden, wie es z. B. für das Frequenzabtastverfahren durch Einfügen geeigneter Übergangswerte in [OpSc75] vorgeschlagen wird. Es ist jedoch kein Verfahren bekannt, mit dem der Approximationsfehler vorab gut abgeschätzt werden kann. Damit führt diese Methode auf ein iteratives Probieren, das allerdings am Computer automatisiert werden kann.
122
11 Entwurf digitaler FIR-Filter
x Der maximale Approximationsfehler, der durch den Abbruch der Fourier-Reihe entsteht, kann besser kontrolliert werden. Die Methode ist als Fourier-Approximation mit Fensterung bekannt und zählt zu den bewährten Filterentwurfsverfahren der digitalen Signalverarbeitung. Die Idee der Fensterung erschließt sich aus der Betrachtung im Frequenzbereich. Die zeitliche Begrenzung kann als Multiplikation der Impulsantwort mit einer Rechteckfolge entsprechender Länge interpretiert werden. Die Multiplikation im Zeitbereich führt zur Faltung des Wunschfrequenzganges mit dem Spektrum der Fensterfolge. Durch die Wahl der Form der Fensterfolge kann das gibbssche Phänomen reduziert werden. Stellt man sich die Fensterung als Multiplikation zuerst mit der Rechteckfolge und anschließend mit der „Form-Fensterfolge“ vor, entspricht letzteres einer Faltung des Frequenzganges der Fourier-Approximation mit dem Spektrum der „Form-Fensterfolge“. Bei geeigneter Wahl des Fensters stellt sich eine glättende Wirkung im Spektrum ein. Es werden die unerwünschten Über- und Unterschwinger auf Kosten einer zunehmenden Breite des Übergangsbereichs reduziert. Beim Filterentwurf durch die Fourier-Approximation werden je nach Entwurfsaufgabe verschiedene Fensterfolgen benutzt. Eine häufig verwendete Fensterfolge ist das Kaiser-Fenster § 2 2· ° I 0 ¨© E 1 n ( N 2) ¸¹ ° wK [n] ® I0 E ° °¯0
für n d N 2
(11.7)
für n ! N 2
Das Kaiser-Fensters enthält die modifizierten Besselfunktion erster Art der Ordnung Null I0 mit dem Formparameter E. Letzterer eröffnet die Möglichkeit eine Anpassung an das Toleranzschema vorzunehmen. Die Wahl für E beruht auf empirischen Erfahrungen mit typisch Werten 4 d E d 9 [KaKr02]. Die im Folgenden vorgestellte Methode liefert zu einem Tiefpassentwurf mit vorgegebenem Toleranzschema den Formparameter E und die Filterordnung N. Die Filterordnung wird erfahrungsgemäß auf r 2 richtig geschätzt [OSB99]. Die Methode wird als Arbeitsblatt präsentiert, das Sie in der nachfolgenden Aufgabe ausfüllen sollen.
11.5.2
Vorbereitende Aufgaben
A11.7
Ein Tiefpass mit den Anforderungen aus A11.2 soll mit der Fourier-Approximation mit Kaiser-Fenster entworfen werden. Bestimmen Sie anhand des Arbeitsblatts in Tabelle 11-4 die nötige Filterordnung N und den zugehörigen Formparameter E.
11.5.3
Versuchsdurchführung
M11.3
Entwerfen Sie den Tiefpass nach Tabelle 11-4 mit der Fourier-Approximation mit einem Kaiser-Fenster. Werden die Spezifikationen eingehalten? Diskutieren Sie das Ergebnisse im Vergleich zur einfachen Fourier-Approximation in Abschnitt 11.4.3. Hinweis: MATLAB-Funktion kaiser(N,BETA)
11.6 Chebyshev-Approximation
123
Tabelle 11-4 Arbeitsblatt zum Tiefpassentwurf mit Fourier-Approximation und Kaiser-Fenster Parameter des Toleranzschemas (Vorgaben) Durchlasstoleranz
GD =
Sperrtoleranz
GS =
Durchlasskreisfrequenz
:D =
Sperrkreisfrequenz
:S = Formparameter E und Filterordnung N
minimale Toleranz Breite des Übergangsbereiches Hilfsgröße (in dB)
Formparameter E des KaiserFensters für
E
adB > 50 dB
E 21dB d adB < 50dB
Filterordnung1 1
Gmin =
': = :S :D
': =
adB = 20 lg Gmin dB
adB =
§a · 0.1102 ¨ dB 8.7 ¸ dB © ¹ 0.4
§a · 0.5842 ¨ dB 21¸ dB © ¹ § adB · 0.07886 ¨ 21¸ dB © ¹
adB < 21dB Hilfsgröße
Gmin = min(GD,GS)
E
0
E=
D = (adB / dB 7.95) / 14.36
D=
N = 2S D / ': |nächst größere oder gleiche ganze Zahl
N=
Die Ordnung N kann beim TP prinzipiell sowohl gerade als auch ungerade sein, siehe Tabelle 11-2.
11.6
Chebyshev-Approximation
11.6.1
Equiripple-Methode
Im Folgenden wird die Idee des Verfahrens grob skizziert. Eine genauere Darstellung des Entwurfs und seiner Randbedingungen würde den hier vorgesehenen Rahmen sprengen, weshalb auf die weiterführende Literatur verwiesen wird, z. B. [OSB99]. Anders als die Fourier-Approximation wird bei der Chebyshev-Approximation (TschebyscheffApproximation) die maximale Abweichung vom Wunschfrequenzgang minimiert. Das geschieht numerisch mit dem Remez-Algorithmus auf der Grundlage, dass der Frequenzgang eines FIR-Filters prinzipiell als Polynom dargestellt werden kann.
124
11 Entwurf digitaler FIR-Filter
Es resultiert dar charakteristisch alternierende Frequenzgang der Entwurfslösung im Toleranzschema, das Equiripple-Verhalten in Bild 11-4. Für die Approximation bedeutet dies: Nach Vorgabe des Toleranzschemas und des Filtergrades ist die Zahl der Berührungspunkte des Frequenzgangs der Entwurfslösung mit den Grenzen des Toleranzschemas bekannt. Unbekannt sind die zugehörigen normierten Kreisfrequenzen. Diese werden durch den Remez-Algorithmus in einem Austauschverfahren iterativ bestimmt. Sind auch die zugehörigen normierten Kreisfrequenzen bekannt, werden die Filterkoeffizienten abschließend anhand eines linearen Gleichungssystems berechnet. H(ej:) c
e
h[n]
1
d
0.8
f
0.4
0.6
0.2
0.4
0
n 5
0.2
g
0
5
i
0 0.2
h
0
0.2
0.4
0.6
:/S
j 1.0
Bild 11-4 Chebyshev-Approximation des Frequenzganges mit der Equiripple-Methode (Filterordnung N = 10, Extra-ripple-Lösung N/2 + 3) und resultierende Impulsantwort (rechts)
Der Vorteil des Verfahrens wird in Bild 11-4 offensichtlich. Durch das vollständige Nutzen des Toleranzschemas wird die Filterspezifikation in der Regel bei kleinerer Filterordnung als bei der Fourier-Approximation mit Fensterbewertung erreicht. Man beachte weiter, dass abgesehen von der numerischen Berechnung der Filterkoeffizienten, der Entwurf unter den gegebenen Randbedingungen die im Sinne des minimalen Abstandes optimale Lösung liefert. Wie in Bild 11-4 rechts sichtbar, entsteht aufgrund der Symmetrie der Impulsantwort ein verallgemeinertes linearphasiges System. Unter dieser Nebenbedingung wird der Entwurf direkt bzgl. des Frequenzganges durchgeführt. Anmerkung: Eine effiziente Implementierung der Entwurfsmethode ist unter dem Namen ParksMcClellan-Algorithmus bekannt [PaMc72].
11.6.2
Versuchsdurchführung
M11.4
Entwerfen Sie mit der Equiripple-Methode einen Tiefpass entsprechend A11.2. Starten Sie dazu das MATLAB-Programm fdatool. Sie sollten eine Bildschirmanzeige wie in Bild 11-6 erhalten. Das Programm fdatool ist ein mächtiges Werkzeug zum Entwurf und zur Analyse digitaler Filtern, das eine Reihe von Optionen anbietet. In diesem Versuch wird der Filterentwurf für den Tiefpass in A11.2 wiederholt. Im nächsten Versuch wird das Programm fdatool weitergehend benützt.
11.6 Chebyshev-Approximation
125
Für die Equiripple-Methode des Tiefpassentwurfs werden die Einstellungen in Tabelle 11-5 benötigt, siehe auch Toleranzschema in Bild 11-6 Filter Specifications. Vergleichen Sie das Ergebnis mit den Resultaten der Fourier-Approximation mit Kaiser-Fenster. Welcher grundsätzliche Unterschied ergibt sich und worin besteht der Vorteil der Chebyshev-Approximation? Anmerkung: Die Filterkoeffizienten lassen sich über das Menü File ) Export speichern. Tabelle 11-5 Einstellungen zum FIR-Tiefpass-Filterentwurf
Anzeigefeld
M11.5
Einstellung
Response Type
Low Pass
Design Method
FIR
Filter Order
Minimum order
Frequency Specifications
Units FS Fpass Fstop
) Hz ) 20000 ) 3400 ) 4000
Magnitude Specifications
Units Apass Astop
) db ) 0.869 ) 46
) Equiripple
Um die Leistungsfähigkeit der Equiripple-Methode besser beurteilen zu können, entwerfen Sie das Zweiband-Filter zum Toleranzschema in Bild 11-5. Hinweis: Response Type ) Multiband Welche Filterordnung wird mindestens benötigt, um die geforderte Sperrdämpfung von 40 dB für normierte Kreisfrequenzen bis 0.16S zu erzielen? Wird das Toleranzschema überall eingehalten? 0.1
|H(ej:)|
0.06
1 .8 .01
0.02
.01
0 0
.16 .2
.4 .44 .56 .6
.8 .86
1
:/S Bild 11-5 Toleranzschema zum Entwurf eines Zweibandfilters
126
11 Entwurf digitaler FIR-Filter
Bild 11-6 MATLAB-Programm Filter Design and Analysis Tool (fdatool)
Hinweise zu MATLAB-Funktionen und M-Files Im Folgenden werden für die Versuchsdurchführung nützliche MATLAB-Befehle und -Funktionen aufgelistet, zu denen Sie sich mit der Help-Funktion Erläuterungen und Beispiele am Bildschirm anzeigen lassen können, siehe auch vorherige Versuche. Tabelle 11-6 MATLAB-Befehle benutzte Programme und Dateien
1
Funktionen der Signalverarbeitung1
firpm, firpmord
Filterentwurfs-und-analyse-Werkzeug mit grafischer Bedienoberfläche
fdatool, fvtool
Þ Online-Ressourcen
dsplab11_1.m, dsplab11_2.m, dsplab11_3.m
Diese Funktionen werden im Programm fdatool für den Filterentwurf benutzt.
127
12
Entwurf digitaler IIR-Filter
12.1
Einführung
In diesem Versuch werden wichtige Entwurfsverfahren für IIR-Filter nach Vorschriften im Frequenzbereich vorgestellt. Weitere Methoden und Hinweise zum Filterentwurf findet man z. B. in der MATLAB-Dokumentation zu den im Versuch verwendeten Funktionen. Lernziele Nach Bearbeiten dieses Versuchs können Sie x
wichtige Vor- und Nachteile von IIR-Filtern aufzählen
x
die Entwurfsvorschriften für digitale IIR-Filter im Frequenzbereich anhand eines Toleranzschemas erläutern
x
die drei Schritte der IIR-Standardapproximation vorstellen
x
den Unterschied zwischen einem Butterworth-, Chebyshev- und Cauer-Tiefpassfilter anhand einer Skizze des Betragsfrequenzganges erklären
x
für eine Anwendung ein Entwurfsverfahren auswählen und die Wahl begründen
x
mit dem MATLAB-Werkzeug fdatool IIR-Filter entwerfen
12.2
IIR-Filter
Unter einem IIR-Filter versteht man für gewöhnlich ein rekursives Filter, das eine im Prinzip unendlich lange Impulsantwort (Infinite (-duration) Impulse Response) hat und wie in Bild 12-1 realisiert sein könnte. Im Vergleich zu den FIR-Filtern sind folgende Eigenschaften besonders interessant: - Mit IIR-Filtern können selektive Filter mit wesentlich kleinerer Filterordnung und damit Komplexität realisiert werden als mit FIR-Filtern. - Für IIR-Filter existieren bewährte Lösungen, die auf den bekannten Standardapproximationen der Nachrichtentechnik für analoge Filter fußen. . IIR-Filter sind nicht linearphasig. / IIR-Filter sind anfälliger gegen Wortlängeneffekte als FIR-Filter. / IIR-Filter können instabil sein. Für digitale Filter existieren verschiedene Strukturen, die sich in der Realisierung bezüglich des Aufwands der Implementierung und der Robustheit gegen Wortlängeneffekten unterscheiden. In Bild 12-1 ist die transponierte Direktform II gezeigt, eine der vier kanonischen Formen, die sich durch die minimale Anzahl von Verzögerungsgliedern und Multiplizierern auszeichnen.
128
12 Entwurf digitaler IIR-Filter
x[n] bN
b0
b1
bN1
y[n] D
D aN1
aN
a1
Bild 12-1 IIR-Filterstruktur in transponierter Direktform II (a0 = 1)
Ein IIR-Filter zu entwerfen heißt, die Filterordnung N und die Filterkoeffizienten bn und an für n = 0, 1, ..., N so zu bestimmen, dass die Entwurfsvorschrift erfüllt wird. Mathematisch gesehen wird mit den Filterkoeffizienten eine rationale Funktion definiert, die Übertragungsfunktion H(z) bzw. der Frequenzgang H(z = ej:). Die Entwurfsverfahren unterscheiden sich daher durch die Art von Lösungspolynomen die zugrunde gelegt werden. MATLAB stellt die notwendigen Lösungsverfahren bereit. Der Versuch kann sich deshalb darauf beschränken, diese anzuwenden und die Eigenschaften der resultierenden Filter zu diskutieren. Nachfolgend wird den Filterentwurf am Beispiel des Tiefpasses betrachtet. Er kann in die drei Schritte unterteilt werden: 1. Definition der Entwurfsaufgabe durch das Toleranzschema und den Filtertyp, siehe Bild 12-2 und Tabelle 12-1. 2. Standardapproximation für das entsprechende analoge Filter. 3. Transformation der Kenngrößen des analogen Filters (Pole und Nullstellen, Impulsantwort oder Sprungantwort) in die eines digitalen Filters.
|HTP(ej:)| 1
Durchlassbereich
GD Übergangsbereich
1GD
Sperrbereich
GS :D
:S
GS : S
Bild 12-2 Toleranzschema für den Betragsfrequenzgang zum Entwurf eines IIR-Tiefpasses mit den Entwurfsparametern: normierte Durchlasskreisfrequenz :D, normierte Sperrkreisfrequenz :S, Durchlasstoleranz GD und Sperrtoleranz GS
12.2 IIR-Filter
Tabelle 12-1
129
Vergleich der Standardapproximationen für IIR-Tiefpässe
Filtertyp
Betragsfrequenzgang
Nichtlinearität des Phasenfrequenzganges
Butterworth
monoton fallend
„leicht“ Übergangsbereich
(Potenz-Filter)
Chebyshev-I
Equiripple-Verhalten im Durchlassbereich und monoton fallend im Übergangs- und Sperrbereich
„mittel“
Bemerkungen - nur moderate Signalverzerrungen aufgrund des Phasenganges im Durchlassbereich / relativ breiter Übergangsbereich / relativ große Filterordnung . Eigenschaften zwischen Butterworth- und CauerFilter, gutes Sperrverhalten
Übergangsbereich
. Filterordnung mittel
Chebyshev-II
monoton fallend im Durchlass- und Übergangsbereich und EquirippleVerhalten im Sperrbereich
„mittel“
. Eigenschaften zwischen Butterworth- und CauerFilter, gutes Durchlassverhalten
Übergangsbereich
. Filterordnung mittel
Cauer
Equiripple-Verhalten im Durchlassund im Sperrbereich, monoton fallend im Übergangsbereich
„stark“
Übergangsbereich
(Elliptisches Filter)
/ Phasenverzerrungen, insbesondere im Bereich der Filterflanke - hohe Sperrdämpfung bei schmalem Übergangsbereich - Filterordnung klein
Anmerkung: In der deutschsprachigen Literatur sind statt Chebyshev auch die Schreibweisen Tschebyscheff, Tschebyschew und Tschebyschow zu finden.
130
12 Entwurf digitaler IIR-Filter
12.3
Entwurf eines Butterworth-Tiefpasses
12.3.1
Toleranzschema und Filtertyp
Für das Entwurfsbeispiel wird das Toleranzschema in Bild 12-2 zugrunde gelegt und der Einfachheit halber den Butterworth-Tiefpass als Filtertyp gewählt.
12.3.2
Zeitkontinuierlicher Butterworth-Tiefpass
Die Leistungsübertragungsfunktion des zeitkontinuierlichen Butterworth-Tiefpasses ist von der Form H BW TP ( jZ )
1
2
2N
(12.1)
dB 3 dB
(12.2)
1 Z Z0
mit der Filterordnung N und der 3dB-Grenzkreisfrequenz Z0. 20 log10
H BW TP ( jZ0 ) max H BW TP ( jZ ) Z
Da im Nenner (12.1) eine Potenzfunktion von Z steht, spricht man von einem Potenzfilter. Wie man sich durch Einsetzen von s = jZ überzeugen kann, resultiert aus der Zerlegung
H BW TP ( s ) H BW TP ( s )
1 1 s jZ0
2N
(12.3)
wieder die Leistungsübertragungsfunktion (12.1). Die Pole in (12.3) liegen gleichmäßig verteilt auf dem Mittelpunktskreis der s-Ebene mit Radius Z0 sl
§ ©
Z0 exp ¨ j
S 2N
· (2l N 1) ¸ für ¹
l 1, 2,! , 2 N
(12.4)
Die Pole in der linken s-Halbebene werden kausale Pole genannt und die in der rechten s-Halbebene antikausale Pole. Die Pole werden der Übertragungsfunktion H(s) so zugeordnet, dass ein kausales und stabiles System resultiert, siehe Bild 12-3. Damit ist der zeitkontinuierliche Butterworth-Tiefpass bis auf einen Skalierungsfaktor b0 bestimmt. H BW TP ( s )
b0 N
s sfk k 1
(12.5)
12.3 Entwurf eines Butterworth-Tiefpasses
131
Im(s) s sf1 Re(s)
S /N
sf2
Z0
kausale Pole für H(s) sf3
antikausale Pole
Bild 12-3 Pole der Übertragungsfunktion HBW-TP(s) in der linken s-Halbebene und für HBW-TP(s) in der rechten s-Halbebene (N = 3)
12.3.3
Dimensionierung des zeitkontinuierlichen Butterworth-Tiefpasses
Als Freiheitsgrad zur Dimensionierung des zeitkontinuierlichen Butterworth-Tiefpasses in (12.5) verbleiben die 3dB-Grenzkreisfrequenz Z0 und die Filterordnung N. Zu deren Bestimmung wird die Hilfsvariable § ZD · ¨ ¸ © Z0 ¹
H
N
(12.6)
mit der Durchlasskreisfrequenz ZD eingeführt. Dann resultiert die Leistungsübertragungsfunktion in der Form H BW TP jZ
1
2
1 H
2
(12.7)
Z Z D 2 N
Konkretisiert man nun die Dimensionierungsaufgabe mit dem angepassten Toleranzschema in Bild 12-4, gilt für die Leistungsübertragungsfunktion an der Durchlasskreisfrequenz H BW TP jZ D
1
2
(12.8)
1 H 2
Die Sperrkreisfrequenz eingesetzt gilt H BW TP jZS
1
2
1 H
2
ZS
ZD
2N
d
1 1 O2
(12.9)
Da die Hilfsgrößen H und O durch das Toleranzschema vorgegeben werden, kann aus der Ungleichung die gesuchte Filterordnung N bestimmt werden. Nt
log O H
log ZS ZD
(12.10)
132
12 Entwurf digitaler IIR-Filter H BW TP ( jZ )
1
1 H
2 1/ 2
0.6
Bezugspunkte zur Dimensionierung
0.4
1 O2
1/ 2
0.2
0
0
ZD
Z
ZS
Bild 12-4 Toleranzschema zur Dimensionierung des Butterworth-Tiefpasses
Die 3dB-Grenzkreisfrequenz leitet sich mit der gefundenen Filterordnung aus (12.6) her.
ZD N H
Z0
(12.11)
12.3.4
Vorbereitende Aufgaben Butterworth-Tiefpass
A12.1
Skizzieren Sie in Bild 12-5 die Frequenzgänge der Dämpfung mit Hilfe des BodeDiagramms für die Butterworth-Tiefpässe mit den Filterordnungen 1, 2, 4 u. 8. Führen Sie dazu eine Frequenznormierung auf die 3dB-Grenzfrequenz Z0 durch. 48 a in dB 36 24 12
1/4
1/2
1
2
4
8
16
Z / Z0
Bild 12-5 Bode-Diagramm der Dämpfung für Butterworth-Tiefpässe
A12.2
Dimensionieren Sie ausgehend von den Vorgaben in Tabelle 12-2 den geeigneten zeitkontinuierlichen Butterworth-Tiefpass, siehe auch A12.3-1.
12.3 Entwurf eines Butterworth-Tiefpasses
133
Tabelle 12-2 Entwurfsparameter für den Butterworth-Tiefpass Durchlasstoleranz
GD = 0.095
Durchlasskreisfrequenz ZD = 2S 3.4 kHz
A12.3
Sperrtoleranz
GS = 0.0048
Sperrkreisfrequenz
ZS = 2S 4 kHz
Hilfsparameter
H =
Hilfsparameter
O=
Filterordnung
N =
3dB-Grenzkreisfreq.
Z0 =
Die in A12.2 bestimmte hohe Filterordnung ist für die weitere Rechnung unhandlich. Wiederholen Sie deshalb die Dimensionierung für ein Beispiel mit deutlich geringeren Anforderungen an das selektive Wunschverhalten, siehe Tabelle 12-3. Tabelle 12-3 Entwurfsparameter für den Butterworth-Tiefpass mit reduzierten Anforderungen
A12.4
Durchlasstoleranz
GD = 0.1
Sperrtoleranz
GS = 0.2
Durchlasskreisfrequenz
ZD = 2S 2 kHz
Sperrkreisfrequenz
ZS = 2S 5 kHz
Hilfsparameter
H =
Hilfsparameter
O=
Filterordnung
N =
3dB-Grenzkreisfreq.
Z0 =
Bestimmen Sie die Pole des in A12.3 entworfenen Butterworth-Tiefpasses und zeichnen Sie die Pole und Nullstellen in Bild 12-6 ein. Welche Ortskurve ergibt sich für die Pole? Durch welchen Parameter wird sie charakterisiert? Hinweis: Rechnen Sie mit der dimensionslosen Größe s frequenz sei Zb = 2S 1 kHz .
s Zb ; die Bezugskreis-
Tabelle 12-4 Pole des Butterworth-Tiefpasses mit reduzierten Anforderungen Index k Pol
A12.5
1
2
3
~ s fk
Geben Sie die Übertragungsfunktion des in A12.3 und 4 entworfenen ButterworthTiefpasses mit HBW-TP(0) = 1 an. Hinweis: Verwenden Sie dabei die normierte komplexe Frequenz s H BW TP s
s / Zb
134
12 Entwurf digitaler IIR-Filter
Im(s) s
Re(s)
Bild 12-6 Pol-Nullstellendiagramm des Butterworth-Tiefpasses mit reduzierten Anforderungen nach Tabelle 12-3
12.3.5
Bilineare Transformation
Für die zeitdiskrete Nachbildung des analogen Butterworth-Tiefpasses stehen im Wesentlichen zwei Methoden zur Verfügung: x Bei der impulsinvarianten und der sprunginvarianten Transformation ist die zeitdiskrete Impuls- bzw. Sprungantwort gleich der entsprechend abgetasteten zeitkontinuierlichen Systemfunktion. Je nachdem, wie groß das Abtastintervall gewählt wird, können AliasingFehler den Frequenzgang erheblich verfälschen, so dass das im Frequenzbereich vorgegebene Toleranzschema verletzt wird. Die impulsinvariante bzw. sprunginvariante Transformation wird vor allem dann eingesetzt, wenn zeitkontinuierliche Vorgänge simuliert werden sollen. Anmerkung: Die impulsinvariante bzw. sprunginvariante Transformation wird im Versuch nicht weiter betrachtet. MATLAB unterstützt die impulsinvariante Transformation mit der Funktion impinvar.
x Die bilineare Transformation wird in der Regel verwendet, wenn dem Entwurf ein Toleranzschema im Frequenzbereich zugrunde liegt. Sie wird direkt im Bildbereich durchgeführt und transformiert die Pole und Nullstellen des zeitkontinuierlichen Filters aus der sEbene in die Pole und Nullstellen des zeitdiskreten Filters in der z-Ebene. Aliasing-Fehler werden dadurch vermieden. Im Frequenzgang tritt jedoch die Arcustangens-Verzerrung auf. Die Idee und die Wirkungsweise der bilinearen Transformation sind in Bild 12-7 zusammengestellt. Ein Vergleich der Systembeschreibungen in der s-Ebene und der z-Ebene zeigt die Gemeinsamkeiten auf. Analoge Filter sind stabil, wenn ihre Pole in der linken s-Halbebene liegen. Bei realisierbaren (kausalen) digitalen Filtern müssen die Pole im Inneren des Einheitskreises der z-Ebene liegen. Den Frequenzgang analoger Filter findet man auf der imaginären Achse während der Frequenzgang digitaler Filter auf dem Einheitskreis definiert ist.
12.3 Entwurf eines Butterworth-Tiefpasses
135
Die bilineare Transformation
1 1 z 1 D 1 z 1
s
und
z
1D s 1D s
für D \
(12.12)
bildet die linke s-Halbebene in das Innere des Einheitskreises der z-Ebene ab. Die imaginäre Achse der s-Ebene wird dabei dem Einheitskreis der z-Ebene zugeordnet. Ein stabiles System im s-Bereich geht in ein stabiles System im z-Bereich über. Die grundsätzlichen Eigenschaften des Frequenzganges bleiben dabei erhalten.
Im(s)
Im(z)
s bilineare
Re(s)
z Re(z)
Transformation Konvergenzgebiet
Konvergenzgebiet
Bild 12-7 Bilineare Transformation der s-Ebene in die z-Ebene und umgekehrt
Der Zusammenhang zwischen den Frequenzvariablen erschließt sich durch Einsetzen von s = jZ bzw. z = ej: in (12.12). Man erhält nach kurzer Zwischenrechnung
Z
1
D
tan
: 2
und :
2 arctan D Z für D \
(12.13)
Es ist offensichtlich, dass die Abbildung der sich von f bis +f erstreckenden imaginären Achse der s-Ebene auf den Einheitskreis der z-Ebene nicht linear geschehen kann. Bei der Abbildung von der s-Ebene in die z-Ebene ergibt sich im Frequenzgang die so genannte Arcustangens-Verzerrung [Wer08b]. Sie muss beim Filterentwurf berücksichtigt werden, was beispielsweise bereits bei der Vorgabe des Toleranzschemas geschehen kann.
12.3.6
Frequenz-Transformation
Eine Erweiterung der Idee der bilinearen Transformation führt auf die Frequenz-Transformation von Tiefpässen in Tiefpässe, Bandpässe, Hochpässe und Bandsperren. Diese Transformationen gehören ebenfalls zu den Standardmethoden für den Entwurf digitaler Filter und werden in MATLAB implizit verwendet. Es wird von einem Tiefpass als Prototyp mit der Übertragungsfunktion H(]) und normierter Eckkreisfrequenz :c,] ausgegangen. Letztere kann beispielsweise die 3dB-Grenzkreisfrequenz sein. Für das Wunschsystem eines Tiefpasses (TP) oder Hochpasses (HP) mit der normierten Eckkreisfrequenz :c,z erhält man die Pole und Nullstellen der Übertragungsfunktion H(z) durch die Transformationen der Pole und Nullstellen des Prototyp-Tiefpasses in Tabelle 12-5. Die rationalen Transformationsformeln entsprechen Übertragungsfunktionen von Allpässen 1. Ordnung, weshalb auch von einer Allpass-Transformation gesprochen wird [Schü08].
136
12 Entwurf digitaler IIR-Filter
Sind die Wunschsysteme Bandpässe (BP) oder Bandsperren (BS), werden Allpass-Transformationen 2. Ordnung eingesetzt. Es entstehen quadratische Gleichungen. Die Berechnung der neuen Pole und Nullstellen geschieht durch Lösung der quadratischen Gleichungen in Tabelle 12-5, wobei sich die Zahl der Pole und Nullstellen verdoppelt. Tabelle 12-5
Filtertyp
Frequenz-Transformation der Pole ]fk und Nullstellen ]0l eines Tiefpasses auf die Pole zfk und Nullstellen z0l eines Wunschsystems als Tiefpass (TP), Hochpass (HP), Bandpass (BP) oder Bandsperre (BS)
Frequenz-Transformation der Pole und Nullstellen
z
TP
z
HP
Entwurfsparameter
] D D] 1
D
] D D] 1
D
2
p § p· r ¨ ¸ q 2 ©2¹
z1,2
D
mit den Hilfsvariablen BP
p
2DE (] 1) ( E 1) ] E 1
q
( E 1) ] E 1 ( E 1) ] E 1
E
D
mit den Hilfsvariablen
p
2D (1 ] ) (1 E ) ] E 1
q
(1 E ) ] E 1 (1 E ) ] E 1
:c, z · ¸ 2 ¹
§ :c,] cos ¨ © § :c,] cos ¨ ©
§ :o, z cos ¨ © § :o, z cos ¨ ©
§ : o , z :u , z cot ¨ 2 ©
2
BS
:c, z · ¸ 2 ¹
:c, z · ¸ 2 ¹ :c, z · ¸ 2 ¹
:u , z · ¸ 2 ¹ :u , z · ¸ 2 ¹ § :c,] · · ¸ ¸ tan ¨ ¹ © 2 ¹
mit der gewünschten oberen und unteren normierten Eckkreisfrequenz des BP :o,z bzw. :u,z
p § p· r ¨ ¸ q 2 ©2¹
z1,2
§ :c,] sin ¨ © § :c,] sin ¨ ©
E
§ :o, z cos ¨ © § :o, z cos ¨ ©
:u , z · ¸ 2 ¹ :u , z · ¸ 2 ¹
§ :c,] · § : o , z :u , z · tan ¨ ¸ ¸ tan ¨ 2 © ¹ © 2 ¹
mit der gewünschten oberen und unteren normierten Eckkreisfrequenz der BS :o,z bzw. :u,z
12.3 Entwurf eines Butterworth-Tiefpasses
137
12.3.7
Vorbereitende Aufgaben Transformation
A12.6
Entwerfen Sie durch bilineare Transformation des Butterworth-Tiefpasses nach A12.3 einen Tiefpass im Zeitdiskreten. Die normierte 3dB-Grenzkreisfrequenz soll dabei :3dB = S / 5 sein. Hinweis: Verwenden Sie für die Pole direkt die normierten dimensionslosen Größen sfk aus A12.4. Tabelle 12-6 Pole des zeitdiskreten Butterworth-Tiefpasses Transformationsparameter
Pole des zeitdiskreten Systems
zf1 =
D=
zf2 = zf3 =
A12.7
Skizzieren Sie das Pol-Nullstellendiagramm des zeitdiskreten Systems aus A12.6. Beachten Sie dabei, dass bei der bilinearen Transformation, die Nullstellen für s o f auf z = 1 abgebildet werden. Ergänzen Sie deshalb für jeden Pol eine Nullstelle. Im(z) Einheitskreis
z
Re(z) 1
Bild 12-8 Pol-Nullstellendiagramm des zeitdiskreten Tiefpasses
A12.8
Auf welcher Ortskurve liegen die Pole in der z-Ebene? Tragen Sie die Ortskurve in Bild 12-8 ein. Hinweis: Siehe konforme Abbildungen, z. B. in [BSMM99], Seite 671.
A12.9
Geben Sie die Übertragungsfunktion des in A12.6 bis 8 entworfenen Tiefpasses an. Es sei H BW-TP(z = 1) = 1. HBW-TP(z) =
138
12 Entwurf digitaler IIR-Filter
12.3.8 Versuchsdurchführung M12.1
Überprüfen Sie Ihren Filterentwurf in A12.9 mit dem MATLAB Filter Viewer fvtool. Hinweise: Mit der rechten Maustaste im Bild des Filter Viewer öffnet sich ein Menü mit der Auswahl Analysis Parameters und Sampling Frequency. Darunter haben Sie eine Reihe von Einstellmöglichkeiten für die grafische Darstellung. So kann die lineare Darstellung des Betragsfrequenzganges oder die Darstellung der Frequenzachse für die normierte Kreisfrequenz gewählt werden.
M12.2
Entwerfen Sie mit dem MATLAB-Programm dsplab12_1 in Programmbeispiel 12-1 einen Butterworth-Tiefpass entsprechend A12.2. Die Abtastfrequenz sei 20 kHz. Schätzen Sie die benötigte Filterordnung ab. Stellen Sie für den digitalen Tiefpass das Pol-Nullstellendiagramm und die Frequenzgänge des Betrags, der Dämpfung, der Phase und der Gruppenlaufzeit grafisch dar. Tragen Sie die Filterordnung für den Tiefpass nach A12.2 in Tabelle 12-7 ein. Diskutieren Sie das Entwurfsergebnis anhand der Grafiken. Beachten Sie insbesondere die Nullstellen und den Phasenverlauf im Sperrbereich. Worauf sind die beobachtbaren Effekte zurückzuführen? Hinweis: Da das Toleranzschema für IIR-Tiefpässe in Bild 12-2 sich in den Toleranzen etwas von dem Schema für FIR-Tiefpässe in Bild 11-2 unterscheidet, verwenden Sie aus Gründen der Vergleichbarkeit die Toleranzen GP = 0.095 und GS = 0.0048.
Programmbeispiel 12-1 Entwurf eines Butterworth-Tiefpasses % design of IIR digital filters using MATLAB built-in % standard approximation for butterworth lowpass % dsplab12_1.m * mw * 05/20/2008 %% Tolerance scheme Wp = 0.34; % norm. passband cutoff radian frequency Ws = 0.4; % norm. stopband cutoff radian frequency Dp = 0.095; % passband deviation Ds = 0.0048; % stopband deviation Rp = -20*log10(1-Dp); % passband deviation in dB Rs = -20*log10(Ds); % stopband deviation in dB %% Butterworth filter design [n,Wn]= buttord(Wp,Ws,Rp,Rs); % estimate filter order [b,a] = butter(n,Wn); % compute filter coefficients fvtool(b,a) % filter viewer
M12.3
In der herkömmlichen Telefonie wird das Sprachsignal im Wesentlichen in dem Frequenzband von 300 bis 3400 Hz übertragen. Die Bandbegrenzung wird bereits bei der Aufnahme durch die Sprechkapsel (Mikrofon) berücksichtigt. Man spricht dann von der Telefonsprache. Im Folgenden soll die Wirkung der Bandbegrenzung durch Filterung hörbar gemacht werden. Anmerkung: Die CCITT (Comite Consultatif International Télégraphique et Téléphonique, heute ITU-T) hat für das internationale Fernsprechen ein Toleranzschema für die Restdämpfung spezifiziert, das detaillierte Angaben zur Bandbegrenzung macht.
12.4 Entwurf digitaler Tiefpässe nach Standardapproximationen analoger Tiefpässe
139
Als Sprachsignal verwenden Sie das Audiosignal in der Datei speech.wav. Für die Bandpassfilterung entwerfen Sie einen Butterworth-BP mit der unteren und der oberen 3dB-Grenzfrequenz fu = 600 Hz bzw. fo = 2400 Hz. Überprüfen Sie Ihr Transformationsergebnis. Hinweis: Gehen Sie vom Butterworth-Tiefpass in A12.9 aus, und entwerfen Sie den Bandpass durch Frequenztransformation. Beachten Sie dabei die Abtastfrequenz des Audiosignals.
Hören Sie sich das ursprüngliche Audiosignal und die gefilterte Version an. Vergleichen Sie die beiden Signale auch grafisch. Anmerkung: Sie können später den Fragen nachgehen: Was geschieht, wenn die Bandbreite des Sprachsignals weiter eingeschränkt wird? Bleibt die Sprache verständlich?
12.4
Entwurf digitaler Tiefpässe nach Standardapproximationen analoger Tiefpässe
12.4.1
Einführung
Chebyshev- und Cauer-Tiefpässe werden ähnlich wie der Butterworth-Tiefpass in Abschnitt 12.3 entworfen. An die Stelle des Potenzverhaltens in der Leistungsübertragungsfunktion (12.1) treten nun Chebyshev-Polynome bzw. jacobische elliptische Funktionen. Das Lösungsverfahren ändert sich nicht grundsätzlich, jedoch sind die Lösungen jeweils charakteristisch für die verwendeten Funktionen. Eine mathematische Behandlung des Approximationsproblems würde den hier abgesteckten Rahmen sprengen, weshalb auf die weiterführende Literatur verwiesen wird. Die folgende Versuchsdurchführung beschränkt sich darauf, den Filterentwurf mit dem MATLAB-Werkzeug fdatool vorzunehmen und die Lösungen für die verschiedenen Filtertypen zu vergleichen.
12.4.2
Versuchsdurchführung
M12.4
Wiederholen Sie den Entwurf für einen Chebyshev-I-Tiefpass entsprechend der Aufgabe A12.2. Verwenden Sie der Einfachheit halber das MATLAB-Werkzeug fdatool. Diskutieren Sie das Entwurfsergebnis anhand der Grafiken. Anmerkung: Die im Versuch genutzten Funktionen des MATLAB-Programms fdatool entsprechen im Wesentlichen dem Programmbeispiel 12-1. Es werden je nach Filtertyp die beiden MATLAB-Funktionen buttord und butter angepasst, siehe MATLAB-Dokumentation für cheby1, cheb1ord, cheby2, cheb2ord, ellip, ellipord.
M12.5
Wiederholen Sie den Entwurf für einen Chebyshev-II-Tiefpass und diskutieren Sie das Resultat anhand der angezeigten Bilder. Was fällt Ihnen am Frequenzgang der Phase besonders auf?
M12.6
Wiederholen Sie den Entwurf für einen Cauer-Tiefpass und diskutieren Sie das Entwurfsergebnis anhand der Grafiken.
140 M12.7
12 Entwurf digitaler IIR-Filter Füllen Sie Tabelle 12-7 aus. Eine grobe Abschätzung der Komplexität des realisierten Filters liefert die Zahl der Multiplikationen pro Zeitschritt (Takt). Sie ergeben sich aus den Filterstrukturen in Bild 11-1 und Bild 12-1. Vergleichen Sie die entworfenen Filter miteinander und diskutieren Sie die Ergebnisse. Tabelle 12-7 Vergleich der entworfenen Tiefpässe bzgl. ihrer Komplexität Tiefpass
Struktur
Ordnung
Zahl der Multiplikationen pro Zeitschritt
Fourier-Approximation mit Kaiserfenster Chebyshev
FIR
Butterworth Chebyshev-I Chebyshev-II Cauer
Hinweise zu MATLAB-Funktionen und M-Files Im Folgenden werden für die Versuchsdurchführung nützliche MATLAB-Befehle und -Funktionen aufgelistet, zu denen Sie sich mit der Help-Funktion Erläuterungen und Beispiele am Bildschirm anzeigen lassen können, siehe auch vorherige Versuche. Tabelle 12-8 MATLAB-Befehle benutzte Programme und Dateien Funktionen der Signalverarbeitung1
butter, butterord, cheby1, cheb1ord, cheby2, cheb2ord, ellip, ellipord
Filterentwurfs- und Filteranalyse-Werkzeug mit grafischer Bedienoberfläche
fdatool, fvtool
Þ Online-Ressourcen
dsplab12_1.m, dsplab12_2.m, dsplab12_3.m, dsplab12_4.m
1
Diese Funktionen werden im MATLAB-Werkzeug fdatool für den Filterentwurf benutzt.
12.4 Entwurf digitaler Tiefpässe nach Standardapproximationen analoger Tiefpässe
141
Bild 12-9 Anwendung des MATLAB-Werkzeugs fdatool zum Entwurf eines Cauer-Tiefpasses nach den Vorgaben in Tabelle 12-2.
142
13
Lernkontrollfragen zu FIR- und IIR-Systemen
Dieser Abschnitt stellt Fragen und Aufgaben zu FIR- und IIR-Systemen, ihren Eigenschaften und ihren Entwurf, bereit. Sie können sie zu einer versuchsübergreifenden Lernerfolgskontrolle nutzen. Hinweis: Die Aufgaben sind ohne langwierige Rechnungen zu lösen. Treffen Sie gegebenenfalls vereinfachende Modellannahmen und verwenden Sie geeignet gerundete bzw. geschätzte Zahlenwerte. Die Aufgaben sind zu zwei Tests zusammengestellt, die jeweils in 45 Minuten gelöst werden sollten.
13.1
Aufgabenkatalog A
Aufgabe 13A1 Faltung a) Gegeben sind die beiden Signale x1[n] = {1, 2, 2, 1} und x2[n] = {1, 1, 1} Berechnen Sie die Faltung x1[n] x2[n] b) Wie groß ist die Länge des Faltungsproduktes zweier Folgen mit den Längen L1 = 11 bzw. L2 = 13. Aufgabe 13A2 Impulsantwort Geben Sie zur Übertragungsfunktion eines kausalen Systems H ( z)
( z 1) ( z 2) z2
die zugehörige Impulsantwort an. Aufgabe 13A3 Impulsantwort Die Impulsantwort eines Systems ist
h[n]
§S · °si ¨ 4 (n 7) ¸ für n = 0:14 ° © ¹ ® °0 sonst °¯
a) Skizzieren Sie die Impulsantwort für n = 0:16. b) Charakterisieren Sie das System.
13.1 Aufgabenkatalog A
143
Aufgabe 13A4 Systemeigenschaften und Pol-Nullstellendiagramme In Bild 13-1 werden die Pol-Nullstellendiagramm von 5 kausalen Systemen gezeigt. Kreuzen Sie in Tabelle 13-1 die jeweils zutreffenden Systemeigenschaften an. Hinweis: Mehrfachnennungen sind möglich.
Tabelle 13-1 Zuordnung der Eigenschaften zu den Systemen in Bild 13-1 Eigenschaften
System
stabil
minimalphasig
maximalphasig
Allpass
rekursiv
c
d
e
f
g
Im (2)
Im
z
(2)
Re
System c
Im
z Re
Re
System d
Im
System e
Im
z
z
Re
System f
z
Re
System g
Bild 13-1 Pol-Nullstellendiagramme
144
13 Lernkontrollfragen zu FIR- und IIR-Systemen
Aufgabe 13A5 Filterentwurf In Bild 13-2 ist der Betragsfrequenzgang eines digitalen Filters zu sehen, das mit dem MATLAB-Werkzeug fdatool entworfen wurde. a) Welches Standardapproximationsverfahren wurde benutzt? Begründen Sie Ihre Antwort. b) Geben Sie die Sperrtoleranz in dB an. c) Geben Sie die untere und die obere normierte Durchlasskreisfrequenz an. d) Welche Ordnung hat das System? e) Geben Sie die Nullstellen des Systems an. Hinweis: Entnehmen Sie geeignete Schätzwerte aus der Grafik.
Magnitude Response (dB) 0
Magnitude (dB) (normalized to 0 dB)
-10
-20
-30
-40
-50
0
0.1
0.2
0.3
0.4 0.5 0.6 Normalized Frequency ( uS rad/sample)
0.7
Bild 13-2 Betragsfrequenzgang (fdatool)
0.8
0.9
13.2 Aufgabenkatalog B
13.2
145
Aufgabenkatalog B
Aufgabe 13B1 Differenzengleichung a) Geben Sie zum Blockdiagramm in Bild 13-3 die Differenzengleichung an. b) Skizzieren Sie das Blockdiagramm in der transponierten Direktform II. x[n]
y[n]
+
0.7 D
D 0.3
0.3 D 0.5
Bild 13-3 Blockdiagramm des Systems in Direktform I
Aufgabe 13B2 Pol-Nullstellendiagramm In Bild 13-4 wird das Pol-Nullstellendiagramm eines mit dem MATLAB-Werkzeug fdatool entworfenen digitalen Filters gezeigt. a) Welche Ordnung hat das System? b) Schließen Sie 2 der 4 Standardapproximationen (Design Method) für den Entwurf aus? Begründen Sie Ihre Antwort. c) Skizzieren Sie den Betragsfrequenzgang wenn ein Cauer-Filter angenommen wird. Pole/Zero Plot 1 0.8 0.6
Imaginary Part
0.4 0.2 0 -0.2 -0.4 -0.6 -0.8 -1 -1.5
-1
-0.5
0
0.5
1
Real Part
Bild 13-4 Pol-Nullstellendiagramm (fdatool)
1.5
146
13 Lernkontrollfragen zu FIR- und IIR-Systemen
Aufgabe 13B3 FIR- und IIR-Filter Ordnen Sie die Begriffe in Tabelle 13-2 den Filtertypen bzw. ihren Entwurfsverfahren sinnvoll zu. Hinweis: Mehrfachnennungen sind möglich. Tabelle 13-2 Zuordnen von Begriffen und Systemen bzw. Entwurfsverfahren Systeme
Begriffe Bilineare Transformation Butterworth-Filter Chebyshev-Approximation Faltung Fourier-Approximation Frequenz-Transformation Gruppenlaufzeit Instabil Kaiser-Fenster Rekursiv Transversale Struktur Verallgemeinerte lineare Phase
FIR
IIR
Aufgabe 13B4 Pol-Nullstellendiagramm In Bild 13-5 werden zwei Pol-Nullstellendiagramme gezeigt. Geben Sie dazu jeweils den Typ des Filters (Struktur) sowie den Typ des Betragsfrequenzganges (selektives Verhalten) an. Begründen Sie Ihre Antwort. Pole/Zero Plot
Pole/Zero Plot
5
1
1.5
0.8 1
0.6 0.4 0.2
Imaginary Part
Imaginary Part
0.5
0 -0.2
21
0
-0.5 -0.4 -0.6
-1
-0.8
5
-1 -1.5
-1
-0.5
-1.5
0 Real Part
0.5
1
1.5
-2
-1.5
-1
-0.5
0
Bild 13-5 Pol-Nullstellendiagramme (fdatool)
0.5 Real Part
1
1.5
2
2.5
3
13.2 Aufgabenkatalog B
147
Aufgabe 13B5 Impulsantwort Mit dem MATLAB-Werkzeug fdatool wurden zwei FIR-Filter entworfen: ein Tiefpass und ein Hochpass. Die resultierenden Impulsantworten sind in Bild 13-6 zu sehen. a) Ordnen Sie die Impulsantworten den Filtern zu. Begründen Sie Ihre Antwort. b) Schätzen Sie die jeweiligen normierten Eckkreisfrequenz ab. Impulse Response 0.25 0.2 0.15
Amplitude
0.1 0.05 0 -0.05 -0.1 -0.15 -0.2 -0.25 0
5
10
15 Samples
20
25
Impulse Response 0.25
0.2
Amplitude
0.15
0.1
0.05
0
-0.05 0
5
10
15 Samples
Bild 13-6 Impulsantworten (fdatool)
20
25
148
14
Kenngrößen stochastischer Signale
14.1
Einführung
Dieser Versuch befasst sich mit den Eigenschaften zeitdiskreter stochastischer Signale. Es werden wichtige Kenngrößen stochastischer Variablen und Prozesse betrachtet. Die Einführung stellt die grundlegenden Begriffe zusammen. Kenntnisse in der elementaren Wahrscheinlichkeitsrechnung werden aufgefrischt. Lernziele Nach Bearbeiten dieses Versuchs können Sie x
die Begriffe stochastische Variable, stochastischer Prozess und Musterfunktion anhand eines Beispiels erklären
x
die Schätzfunktionen für den linearen Mittelwert, den quadratischen Mittelwert, die Varianz und die eindimensionale und zweidimensionale Wahrscheinlichkeitsdichtefunktion einer Zufallszahlenfolge anwenden und die Messergebnisse beurteilen
x
den Begriffe Korrelation anhand des Korrelationskoeffizienten und der Korrelationsfunktion erklären und seine Bedeutung aufzeigen
x
den Begriff des weißen Rauschens für zeitdiskrete Signale erläutern
x
die Schätzfunktionen für die Autokorrelationsfunktion und das Leistungsdichtespektrum anwenden und die Ergebnisse bewerten
14.2
Grundlagen
14.2.1
Stochastischer Prozess
Nicht vorhersagbare Signale, wie Sprachsignale, Elektrokardiogramme, Rauschstörungen, usw., unterliegen wegen den zugrunde liegenden physikalischen Randbedingungen gewissen Regelmäßigkeiten. Die digitale Signalverarbeitung macht sich diese zunutze, indem sie die Regelmäßigkeiten erfasst und berücksichtigt. Im Folgenden werden Überlegungen und Begriffe zusammengestellt, um derartige Signale als Realisierungen stochastischer Prozesse zu beschreiben. Die grundsätzlichen Überlegungen stellt Bild 14-1 vor. Führt man ein Zufallsexperiment aus, so erhält man eine Musterfunktion (Realisierung) des stochastischen Prozesses, wie in Bild 14-1 anhand von vier Beispielen veranschaulicht wird. Man spricht hier auch von Musterfolgen. Ein zeitdiskreter stochastischer Prozess wird als Zusammenstellung von stochastischen Variablen interpretiert, die auf einem gemeinsamen Wahrscheinlichkeitsraum definiert sind. Die stochastischen Variablen werden durch Indizes unterschieden. In der digitalen Signalverarbeitung entsprechen die Indizes häufig der normierten Zeitvariablen. Anmerkung: In der Bildverarbeitung oder bei der Verarbeitung geologischer Messdaten treten die Indizes als Ortskoordinaten auf.
14.2 Grundlagen
149
Die Musterfolgen sind streng deterministisch, wie x1[n] in Bild 14-1. Dies gilt auch für sehr unregelmäßige Folgen, wie beispielsweise abgetastetes Widerstandsrauschen. Man stelle sich hierzu eine große Zahl von aufgezeichneten Musterfolgen vor, die sich beliebig reproduzieren lassen. Das Zufallsexperiment besteht dann in der zufälligen Auswahl der Musterfolge. Wählt man hingegen einen festen Zeitpunkt n0, so resultiert aus einer Betrachtung „quer zum Prozess“ eine stochastische Variable. Wählt man beispielsweise n0 = 60, so könnte eine typische Fragestellung wie folgt lauten: Wie groß ist die Wahrscheinlichkeit, dass der Wert einer zufällig ausgewählten Musterfolge dort größer als null ist? Betrachtet man schließlich eine bestimmte Musterfolge zu einem festen Zeitpunkt, dann erhält man einen gewöhnlichen Zahlenwert, z. B. x1[60] = 0 wie in Bild 14-1 zu sehen ist. x1[n]
x2[n]
2
n
0 -2 2
n
0 -2 2
x3[n]
x4[n]
n
0 -2 2
n
0 -2
0
20
40
60
80
100
Bild 14-1 Musterfolgen eines stochastischen Prozesses
Stochastische Prozesse als geordnete Zusammenstellung von stochastischen Variablen zu sehen, erlaubt es, die aus der elementaren Wahrscheinlichkeitsrechnung bekannten Methoden und Kenngrößen unmittelbar zur Beschreibung stochastischer Prozesse heranzuziehen. In Tabelle 14-1 sind Definitionen und Schätzfunktionen einiger wichtiger statistischer Kenngrößen reeller zeitdiskreter stationärer Prozesse zusammengestellt. Anmerkung: Um die Zugehörigkeiten der Kenngrößen kenntlich zu machen, werden meist die betreffenden stochastischen Variablen als Indizes hinzugesetzt, z. B. fX (x) oder PY. Der Einfachheit halber wird im Weiteren auf die Indizes verzichtet, wenn aus dem Zusammenhang Verwechslungen nicht zu erwarten sind.
Beachten Sie, dass stochastische Größen, wie die Wahrscheinlichkeit für ein bestimmtes Ereignis, nicht wie alltägliche physikalische Größen gemessen werden können. Die Wahrscheinlichkeitstheorie liefert Aussagen unter welchen Voraussetzungen Schätzwerte für stochastische Kenngrößen durch Messungen bestimmt werden können und wie sie zu interpretieren sind. Letztendlich lassen sich wieder nur Wahrscheinlichkeitsaussagen ableiten. Eine sorgfältige Diskussion würde den Rahmen hier sprengen. Dieser und der folgende Versuch sollen Ihnen jedoch ein Gespür für die Probleme bei der Schätzung statistischer Kenngrößen geben und helfen, Fehler zu vermeiden.
150
14 Kenngrößen stochastischer Signale
Tabelle 14-1 Ausgewählte Kenngrößen zeitdiskreter reeller stationärer Prozesse Scharmittelwerte
Zeitmittelwerte2
Prozess X[n]
Musterfolge x[n]
f (x)
Häufigkeitsverteilung (Histogramm)
Wahrscheinlichkeitsdichtefunktion (WDF) linearer Mittelwert (Moment 1. Ordnung)
P
EX
f
³
x f ( x)dx
m2
Dispersion1, Streuung, Varianz (2. Zentralmoment)
V2
3
x2
1 N 2 ¦ xn N n 1
f
³ x2 f ( x)dx f
E X2
V 2 P2
m2 Var ( X ) f
³
E [X P ]2 2
x P f ( x)dx
empirische Varianz3
s2
f 2
1 N ¦ xn N n 1
f
quadratischer Mittelwert (Moment 2. Ordnung)
1
x
N 1 ¦ xn x N 1 n 1
2
Üblich sind auch die Schreibweisen V(X) und D(X). Für die Zeitmittelwerte wurden die in der Statistik üblichen Schreibweisen gewählt. Der Vorfaktor 1/(N1) sorgt für die erwartungstreue (unbiased) Schätzfunktion.
Eine Messung statistischer Kenngrößen höherer Ordnung ist aufwändig und in der Regel nicht praktikabel, da der für hinreichend vertrauenswürdige Ergebnisse notwendige Stichprobenumfang mit der Ordnung stark wächst. Häufig muss sich die Prozessbeschreibung auf Größen erster und zweiter Ordnung beschränken, d. h. Größen die mit Hilfe der 1-dim. bzw. 2-dim. Wahrscheinlichkeitsdichtefunktion (WDF) definiert sind. Ein wichtiges Beispiel für eine 2-dim. WDF ist die bidimensionale WDF einer Normalverteilung f XY ( x, y )
1 2SV xV y 1 U 2 § 1 exp ¨ ¨ 2 1 U2 ©
ª ( x P )2 ( x P x )( y P y ) ( y P y )2 º · x « »¸ 2U 2 V xV y « V x2 »¸ V y ¬ ¼¹
(14.1)
mit dem Korrelationskoeffizienten U. Vier weitere für die Anwendung besonders wichtige Begriffe sind: Unter einer normierten stochastischen Variablen versteht man eine stochastische Variable mit dem linearen Mittelwert null und der Varianz eins. Zwei stochastische Variablen X und Y sind unabhängig, wenn die gemeinsame VerbundWDF faktorisiert.
14.3 Stochastische Signale
151 f XY ( x, y )
f X ( x) fY ( y )
(14.2)
Praktisch bedeutet das, dass sich die Versuchsausgänge der stochastischen Variablen nicht gegenseitig beeinflussen und wechselseitig keine Information ausgetauscht wird. Ein Prozess heißt stationär, wenn die statistischen Kenngrößen unabhängig von der Wahl des Zeitursprungs sind. Prozesse bei denen der lineare Mittelwert und die Korrelationsfunktion stationär sind werden schwach stationäre Prozesse genannt. Ein Prozess heißt ergodisch, wenn prinzipiell alle statistischen Kenngrößen durch Zeitmittelung aus einer Musterfunktion bestimmt werden können, d. h., wenn gilt „Zeitmittelwerte (für N o f) gleich Scharmittelwerte“. Man schwächt diese Forderung oft auf den linearen Mittelwert und die Korrelationsfunktion ab und spricht dann von einem schwach ergodischen Prozess. In den Anwendungen liegt oft nur eine Musterfunktion zur Messung vor, so dass Stationarität und Ergodizität als Arbeitshypothese angenommen bzw. aufgrund der Randbedingungen postuliert werden.
14.2.2
Zufallszahlen am Digitalrechner
Die Simulation von stochastischen Vorgängen an Digitalrechnern, die Monte-Carlo-Simulation, ist heute ein Standardverfahren in Wissenschaft und Technik. Viele Aufgabenstellungen sind so kompliziert, dass eine analytische Lösung nicht angegeben werden kann. Hier hilft die Simulation, wenn sie sich auf ein theoretisch und/oder experimentell fundiertes Modell stützt. Ein wichtiger Vorteil der Simulation ist die Reproduzierbarkeit der Ergebnisse. Hierzu werden die „Zufallszahlen“ mit deterministischen Algorithmen berechnet. Bei gleichen Startbedingungen resultieren identische Musterfolgen. Damit ist insbesondere ein fairer Vergleich verschiedener Modelle, Verfahren und Geräte möglich. Es existieren unterschiedliche Algorithmen, um „Zufallszahlen“ an Digitalrechnern zu erzeugen. Eine wichtige Gruppe sind die Pseudozufallszahlen. Sie werden zwar deterministisch mit Hilfe rückgekoppelter Schieberegister generiert, aber erscheinen einem Beobachter der den Algorithmus nicht kennt wie eine Folge von zufälligen Zahlen. Obwohl bei der Simulation mit MATLAB nur deterministisch erzeugte „Zufallszahlen“ im Maschinenformat vorliegen, siehe Abschnitt 16, kann in den Versuchen für die Signale der Zufallszahlengeneratoren rand und randn von wertkontinuierlichen Realisierungen unabhängiger Zufallszahlen ausgegangen werden.
14.3
Stochastische Signale
Im ersten Versuchsteil werden mit MATLAB Musterfolgen erzeugt und die WDFen, die linearen und quadratischen Mittelwerte und die Varianzen geschätzt.
14.3.1
Vorbereitende Aufgaben
A14.1
Die Schätzung der WDF beruht auf dem MATLAB-Befehl hist (Histogramm) zur Bestimmung der absoluten Häufigkeiten h = hist(x,c)
152
14 Kenngrößen stochastischer Signale Mit dem Parametervektor c werden die Intervallmitten für die Klasseneinteilung vorgegeben. Die Intervallgrenzen bestimmen sich wie in Bild 14-2 jeweils mittig zu den Werten von c. Die Randintervalle dehnen sich prinzipiell gegen minus bzw. plus unendlich aus. Für die Versuchsvorbereitung gehen Sie davon aus, dass für die Stichprobe die Intervallmitten, cmin = c1 < c2 < …< cM = cmax, und die zugehörigen absoluten Häufigkeiten h1, h2, …, hM bekannt sind. Der Einfachheit halber wird eine gleichmäßige Verteilung der Intervallmitten im interessierenden Messbereich angenommen. Mit den Werten des Histogramms sollen Schätzwerte fi der WDF f(x) zu den Stützstellen x = ci berechnet werden. Geben Sie die Rechenvorschrift an. fi =
absolute Häufigkeiten der Amplituden der Stichprobe
h(k) h(M-1)
h(2)
h(M)
h(1) c(1) c(2)
c(k)
(c(k)-c(k-1))/2
c(M-1) c(M)
Amplituden der Stichprobe
(c(k+1)-c(k))/2
Bild 14-2 Bestimmung der absoluten Häufigkeiten mit dem MATLAB-Befehl hist(x,c)
A14.2
Die Schätzwerte der WDF fi sollen mit der WDF einer Normalverteilung verglichen werden. Geben Sie die WDF der Normalverteilung an, die das Verhalten der Stichprobe am besten approximiert. fg =
A14.3
Zur Bestimmung der Häufigkeiten muss ein Messbereich vorgegeben werden. Berechnen Sie für eine normierte Normalverteilung den Messbereich so, dass die Stichprobenwerte mit der Wahrscheinlichkeit von 99.73 % innerhalb des Messbereichs auftreten. Tragen Sie unten die untere und obere Bereichsgrenze, xu bzw. xo, ein. xu =
xo =
Hinweis: Siehe gaußsches Fehlerintegral )(x) und MATLAB-Funktion erf, z. B. [BSMM99], [Wer08b]. ) ( x)
1 ª x º «1 erf » 2 ¬ 2¼
(14.3)
14.3 Stochastische Signale
153
14.3.2
Versuchsdurchführung
M14.1
Eine besonders anschauliche Art die Verteilung einer Musterfolge darzustellen sind Streudiagramme. Dabei werden die Werte als schwarze Punkte auf weißem Papier abgebildet, so dass sich die Verteilung der Amplitudenwerte an der Papierschwärzung abschätzen lässt. Erzeugen Sie mit den MATLAB-Befehlen rand und randn Musterfolgen der Länge 400 und veranschaulichen Sie die Musterfolgen durch ein Streudiagramm. Hinweise: (i) Die Befehle rand(M,N) und randn(M,N) liefern MuN-Matrizen mit im Intervall [0,1] gleichverteilten bzw. mit normierten, normalverteilten Zufallszahlen. (ii) Um in MATLAB die Zufallszahlenfolgen zu reproduzieren, müssen jeweils die gleichen Startwerte initialisiert werden, z. B. mit dem MATLAB-Befehl rand(’state’,0).
M14.2
Bestimmen Sie die Spannweite, den linearen Mittelwert, die Standardabweichung, die Varianz und das zweite Moment von Stichproben der Zufallszahlenfolgen zu randn. Verwenden Sie die MATLAB-Befehle mean, std und var. Beachten Sie insbesondere die Optionen zur Normierung bei std und var. Die Spannweite der Stichprobe ist gleich dem Maximalwert minus dem Minimalwert der beobachteten Zufallszahlen. Tabelle 14-2
Schätzwerte bei verschiedenen Stichprobenumfängen für eine normierten Normalverteilung
Stichprobenumfang
102
103
104
105
Spannweite linearer Mittelwert Standardabweichung Varianz quadratischer Mittelwert
Um einen Eindruck zu bekommen, wie die Schätzwerte von Stichprobe zu Stichprobe schwanken können, wiederholen Sie mehrmals die Untersuchungen für einen Stichprobenumfang von jeweils 1000 und tragen die Ergebnisse in Tabelle 14-3 ein. Tabelle 14-3
Schwankung der Schätzwerte des linearen und quadratischen Mittelwerts einer normierten Normalverteilung bei einem Stichprobenumfang von 1000
Stichprobe linearer Mittelwert quadratischer Mittelwert
1
2
3
4
154 M14.3
14 Kenngrößen stochastischer Signale Schätzen Sie die eindimensionale WDF der mit dem MATLAB-Befehl randn erzeugten Zufallszahlenfolge. Setzen Sie die Zahl der Messintervalle (Klassen) auf 10 und variieren Sie den Stichprobenumfang wie in Tabelle 14-2. Wählen Sie dabei den Messbereich so, dass die Randintervalle des Histogramms mit großer Wahrscheinlichkeit nicht besetzt werden. Stellen Sie die Ergebnisse grafisch dar. Welchen Einfluss hat der Stichprobenumfang auf die Schätzwerte?
M14.4
Wiederholen Sie die Schätzung der WDF bei einem Stichprobenumfang von 10000 für 20 und 40 Messintervalle. Stellen Sie die Ergebnisse grafisch dar und diskutieren Sie die Resultate. Überlegen Sie, was geschieht bei immer feinerer Intervalleinteilung?
M14.5
Bestimmen Sie die relativen Häufigkeiten der Amplituden eines Sprachsignals, z. B. aus der Datei speech.wav. Gehorcht das Sprachsignal einer Normalverteilung? Hinweis: Bestimmen Sie das Histogramm so, dass ein Messintervall mittig um null liegt.
14.4
Korrelation stochastischer Prozesse
14.4.1
Korrelation, Korrelationsfunktion und Leistungsdichtespektrum
Zur Charakterisierung der Abhängigkeit von stochastischen Variablen wird der Erwartungswert aus dem Produkt der stochastischen Variablen E X1 X 2
f
³
f
x1 x2 f X1 X 2 ( x1 , x2 ) dx1dx2
(14.4)
mit der bidimensionalen WDF herangezogen. Es handelt sich deshalb um eine Größe 2. Ordnung. Mit der Korrelation werden lineare Abhängigkeiten erfasst, weil die stochastischen Variablen linear in die Definitionsgleichung eingehen. Man spricht von unkorrelierten stochastischen Variablen falls E X1 X 2
E X1 E X 2
(14.5)
Sind stochastische Variablen unabhängig, dann sind sie auch unkorreliert. Umgekehrt ist die Aussage nicht richtig. Stochastischen Variablen sind orthogonal, falls E X1 X 2
0
(14.6)
Von besonderer Bedeutung sind die Kovarianz Cov( X1 , X 2 )
und der Korrelationskoeffizient
E [ X1 P1 ] [ X 2 P2 ]
(14.7)
14.4 Korrelation stochastischer Prozesse
U12
155 Cov( X1 , X 2 ) V1 V 2
(14.8)
Der Korrelationskoeffizient ist als Erwartungswert des Produkts der standardisierten stochastischen Variablen definiert. Durch die Normierung erhält man stets 1 d U d 1
(14.9)
Je größer der Betrag des Korrelationskoeffizienten, umso größer ist die lineare Abhängigkeit zwischen den stochastischen Variablen. Für U = 1 nehmen die stochastischen Variablen X1 und X2 mit Wahrscheinlichkeit eins den gleichen Wert an. Ist der Korrelationskoeffizient U = 0, sind die stochastischen Variablen unkorreliert. Anmerkung: Für normalverteilte stochastische Variablen folgt aus unkorreliert auch unabhängig, wie einsetzen von U = 0 in die bidimensionale WDF der Normalverteilung (14.1) zeigt.
Zur Charakterisierung des linearen Zusammenhangs von Zufallsfolgen werden die Autokorrelationsfolge (AKF) und ihre Fourier-Transformierte, das Leistungsdichtespektrum (LDS), in Tabelle 14-4 verwendet. Will man die linearen Abhängigkeiten zwischen zwei Folgen untersuchen, so betrachtet man die Kreuzkorrelationsfolge (KKF). Aussagekräftige Schätzwerte für die AKF und KKF sind als Größen 2. Ordnung in der Regel meist noch mit vertretbarem Aufwand experimentell bestimmbar. Beachten Sie auch, dass die AKF an der Stelle null, RXX[0], gleich der Leistung des Prozesses ist, vgl. Schätzung des quadratischen Mittelwertes in Tabelle 14-1.
14.4.2
Weißes Rauschen
Von besonderer Bedeutung sind unkorrelierte Prozesse, auch weißes Rauschen genannt. Sie kennzeichnet, dass die stochastischen Variablen mittelwertfrei und zueinander unkorreliert sind. Die AKF eines unkorrelierten Prozesses ist eine mit der Leistung des Prozesses gewichtete Impulsfunktion. RXX [l ] V 2 G [l ]
(14.10)
Wegen der Mittelwertfreiheit sind das zweite Moment, die Leistung, und die Varianz gleich, siehe Tabelle 14-1. Wie in (14.10) wird meist die Varianz eingesetzt. Das LDS ist demzufolge konstant im gesamten Frequenzbereich. S XX (:) V 2 :
(14.11)
In Anlehnung an die additive Farbmischung in der Optik, wird ein derartiger Prozess ein weißer Prozess genannt, da alle möglichen Spektralanteile vorhanden sind. Wegen der scheinbar regellosen Amplituden, siehe Bild 14-3, und wie im Versuch noch hörbar wird, spricht man auch vom Rauschen und traditionell in der Telefonie (Audiotechnik) vom Geräusch. Anmerkung: In Bild 14-1 liegen augenfällig Musterfolgen eines korrelierten Prozesses vor.
In der digitalen Signalverarbeitung wird oft von dem Modell eines normalverteilten weißen Rauschens ausgegangen. Der Grund dafür liegt zum ersten darin, dass das Rauschen „normal“erweise so verteilt ist, siehe zentraler Grenzwertsatz in Versuch 15. Zum zweiten erhält man
156
14 Kenngrößen stochastischer Signale
eine relativ einfache mathematische Beschreibung, da im Sonderfall der Normalverteilung unkorrelierte stochastische Variablen diese auch unabhängig sind. 3 2
x[n] o
1 0 -1 -2 -3
0
10
20
30
40
50 no
60
70
80
90
100
Bild 14-3 Musterfolge eines normalverteilten weißen Prozesses
Tabelle 14-4 Ausgewählte Kenngrößen 2. Ordnung zeitdiskreter reeller stationärer Prozesse
Verbund-WDF 2. Ordnung
Scharmittelwerte
Zeitmittelwerte1
Prozesse X[n], Y[n]
Musterfolgen x[n], y[n]
f X n X m ( x1 , x2 ) , f X nYm ( x1 , x2 )
Häufigkeitsverteilung (3D-Histogramm)
RXX [l ] Autokorrelationsfolge (AKF)
E Xn Xm
x[n l ]x[n]
f f
³ ³
f f
x1 x2 f X n X m ( x1 , x2 )dx1dx2 mit l = m n
Leistungsdichtespektrum (LDS)
S XX (:) RXY [l ]
Kreuzkorrelationsfolge (KKF)
f
¦
l f
N 1 x[n l ]x[n] N of 2 N 1 n N
lim
R XX [l ]e j:l
E X nYm
³ ³
x1 x2 f X nYm ( x1 , x2 )dx1dx2 mit l = m n
¦
Periodogramm Zeitkreuzkorrelationsfolge
x[n l ] y[n]
f f f f
1
Zeitautokorrelationsfolge
N 1 x[n l ] y[n] N of 2 N 1 n N
lim
¦
Für die Zeitmittelwerte wird, wegen der Stationarität der Prozesse, von nach beiden Seiten unendlich ausgedehnten Musterfolgen ausgegangen. Für die Verschiebung l sind alle ganzen Zahlen zugelassen, so dass sich zweiseitige Korrelationsfolgen ergeben.
14.4.3
Schätzung der Autokorrelationsfunktion
Die Schätzung der AKF und des LDS spielt in vielen Anwendungen eine wichtige Rolle. Je nach Randbedingungen und Aufgabenstellungen werden unterschiedliche Methoden eingesetzt. Wir beschränken uns in diesem Versuch beispielhaft auf den grundlegenden Algorithmus und seine effiziente Anwendung.
14.4 Korrelation stochastischer Prozesse
157
Zur Bestimmung der AKF kann – Ergodizität vorausgesetzt – als Schätzfunktion der Zeitmittelwert in Tabelle 14-4 über einen Signalblock der Länge N herangezogen werden. Rˆ XX [l ]
1 N 1 x[n l ] x[n] für l N 1 n 0
¦
0,1,! , L
(14.12)
Anmerkungen: (i) Mit L der Anwendung entsprechend. (ii) Bei Mittelwertfreiheit erhält man die bekannte Formel für die empirische Streuung s2 in Tabelle 14-1. (iii) Wie in Versuch 8 schon erwähnt, kann die Schätzfunktion als Faltung, genauer Pseudofaltung, der Musterfolge der Länge N interpretiert werden.
Da die AKF eines reellen Prozesses eine gerade Funktion ist, reicht es, die Berechnung für nicht negative Werte der Verschiebung l durchzuführen. Man beachte, dass je nach Implementierung durch die Blockgrenze die Zahl der Mittelungen mit wachsender Verschiebung abnimmt. Ist die Blocklänge viel größer als die maximale Verschiebung, kann dieser Effekt meist vernachlässigt werden. Zur Erhöhung der Vertrauenswürdigkeit können die Schätzwerte mehrerer Blöcke gemittelt werden.
14.4.4
Schätzung des Leistungsdichtespektrums
Aus der gemessenen Zeit-AKF lassen sich Schätzwerte für das LDS mit der DFT berechnen. Voraussetzung dafür ist, dass die AKF für alle wesentlichen Werte von l erfasst wurde, d. h. RXX [l ] | 0 l t L
(14.13)
Anderenfalls ergeben sich Fehler ähnlich der Fensterung in der Kurzzeit-Spektralanalyse. Darüber hinaus kann das LDS durch Zero-padding in einem engeren Frequenzraster dargestellt werden. Programmbeispiel 14-1 enthält eine hierzu geeignete MATLAB-Kommandozeile. Man beachte die spezielle Anordnung der Daten für den fft-Befehl. Den Ausgangspunkt bilden die L Schätzwerte der AKF Rxx für l=0:L-1. Die symmetrisch fortgesetzten Werte der AKF für l=-L+1:-1 werden zeitlich gespiegelt angehängt. Das Zero-padding geschieht durch Einfügen von Nullen. Man beachte auch, das LDS eines reellen Prozesses ist stets rein reell und nicht negativ da es die mittlere Leistung in jedem Frequenzteilband wiedergibt. Damit lässt sich die Güte des Messergebnisses beurteilen. Gegebenenfalls sind, wo vertretbar, kleine Abweichungen zu korrigieren. Programmbeispiel 14-1 Berechnung des LDS aus den Schätzwerten der AKF % compute pds from acf estimates Rxx with zero-padding to length 1024 L = length(Rxx]); Sxx = fft([Rxx zeros(1,1024-(2*L-1)) Rxx(L:-1:2)]); Anmerkung: Man nennt diese Art der Schätzung auch nichtparametrische Spektralschätzung. Alternativ können mit parametrischen Schätzverfahren die Parameter, z. B. Pole und Nullstellen, eines Modellprozesses bestimmt werden [KaKr06], [Wer08a].
Schätzwerte für das LDS können mit der FFT auch direkt aus den Musterfolgen bestimmt werden. Ein wegen seiner Einfachheit oft verwendetes Verfahren beruht auf dem Periodogramm [OSB99]. Dabei wird das LDS durch die Betragsquadrate der DFT-Koeffizienten eines Signalblockes geschätzt.
158
14 Kenngrößen stochastischer Signale
Aufgrund der stochastischen Natur des Signals können benachbarte Messwerte stark schwanken. Zur Glättung des Ergebnisses wird in der Regel sowohl eine Fensterfunktion, häufig das Hamming-Fenster, als auch eine Mittelung über mehrere Signalblöcke verwendet. Das Verfahren ist in Bild 14-4 illustriert. Aus der Musterfolge x[n] werden mit der Fensterfolge w[n] Blöcke der Länge N herausgeschnitten. Für jeden Block wird die DFT berechnet. Die Betragsquadrate der DFT-Koeffizienten werden über die Blöcke gemittelt.
Signalblock i w[nk]
Die Signalblöcke überlagern sich dabei mittig um n ni ni+N1 bei relativ kurzen Musterfolgen genügend Blöcke für die Mittelung zur Verfügung zu haben. Ist die Musterfolge sehr lang, so kann auf das Überlappen der Blöcke verzichtet werden. Da dann keine Bild 14-4 Zerlegung einer Musterfolge mit der Fensterfolge w[n] in überSignalwerte doppelt verwendet werden, nimmt in lappende Blöcke der Länge N diesem Fall die statistische Zuverlässigkeit des Ergebnisses zu. Für eine effiziente Berechnung wird eine Blocklänge verwendet, die eine Radix-2FFT zulässt.
14.4.5
Vorbereitende Aufgaben
A14.4
Eine Messwerterfassung hat zu den Merkmalen X und Y (Stichprobenvariablen) die Messreihen (Beobachtungen) x1, x2, …, xN und y1, y2,…, yN ergeben. Es soll die Korrelation zwischen X und Y durch den empirischen Korrelationskoeffizienten beurteilt werden. Geben sie die Stichprobenfunktion für den empirischen Korrelationskoeffizienten rxy an. #
A14.5
MATLAB stellt zwei Befehle für die Berechung der empirischen Kovarianz bzw. des empirischen Korrelationskoeffizienten zur Verfügung. Für die Vektoren x und y der Länge N liefert der Befehl C = cov(x,y);
als Ergebnis Matrizen zurück mit C(1,1) C(1,2) C(2,1) C(2,2)
= = = =
sum((x-mean(x)).^2))/(N-1); sum((x-mean(x)).*(y-mean(y)))/(N-1); C(1,2); sum((y-mean(y)).^2))/(N-1);
Der Befehl R = corrcoef(x,y)
liefert die Matrix mit R(i,j) = C(i,j)/sqrt(C(i,i)*C(j,j));
Beachten Sie, die Befehle cov und corrcoef können mit verschiedenen Optionen ausgeführt werden, siehe auch erwartungstreuer Schätzwert (unbiased estimate). Machen Sie sich mit dem MATLAB-Befehl vertraut.
14.4 Korrelation stochastischer Prozesse
159
14.4.6
Versuchsdurchführung
M14.6
Der Bedeutung der Korrelation wird zunächst anhand von Streudiagrammen veranschaulicht. Erzeugen Sie die vier Signale x1[n] bis x4[n] mit x1 = randn(500,1);
x2 = randn(500,1) + x1;
x3 = randn(500,1);
x4 = randn(500,1) - x1;
Stellen Sie die vier Streudiagramme grafisch dar, indem Sie x1 für die Abszissenwerte und x1, x2, x3 bzw. x4 für die Ordinatenwerte wählen, z. B. wie beim Grafikbefehl plot(x1,x3,’.’). Vergleichen Sie die Streudiagramme. Welche Aussagen können gemacht werden? Was folgt daraus für die Wertepaare der Signale? Bestimmen Sie mit dem MATLAB-Befehl corrcoef die empirischen Korrelationskoeffizienten der Signale x1[n] bis x4[n] bzgl. Signal x1[n]. Tragen Sie die Resultate in Tabelle 14-5 ein und diskutieren Sie die Ergebnisse mit Blick auf die Streudiagramme.
M14.7
Tabelle 14-5 Empirische Korrelationskoeffizienten zu den Signalen x1[n] bis x4[n] Signal i
1
2
3
4
U1i Erzeugen Sie eine wesentlich größere Stichprobe für die Signale x1[n] bis x4[n] und stellen Sie die bidimensionalen WDFen entsprechend den obigen Untersuchungen grafisch dar, siehe Bild 14-5.
M14.8
Diskutieren Sie die Ergebnisse im Zusammenhang mit obigen Untersuchungen. Welchen Einfluss hat der Korrelationskoeffizient auf die bidimensionale WDF der Normalverteilung? Hinweis: Verwenden Sie der Einfachheit halber das Programm dsplab12_3 mit der Funktion hist2d für das bidimensionale Histogramm.
4 0. 01
3 0.2
01 0.
2
5 0. 0
-1
0 4
5 0.0
-2 4 0 -2
my
-4
-4
0
-2 xo
2
-3 -4 -4
0. 0 5
0.0 1
0. 1
01 0.
01 0.
2
5 0.1
0.1
0
0.0 1
0.05
0. 0 5
0.1
0. 1
1 yo
f(x,y) o
0.15
-3
-2
-1
0 xo
1
2
3
Bild 14-5 Grafische Darstellung der bidimensionalen WDF einer Normalverteilung (links) und ihrer Höhenlinien (rechts) (dsplab14_3)
4
160
14 Kenngrößen stochastischer Signale
Programmbeispiel 14-2 Schätzung der bidimensionalen WDF % estimation of the bidimensional probability density function (pdf) % dsplab14_3.m * mw * 01/20/2006 N = 1e6; % number of samples M1=30; M2=30; % number of bins for (1-dim.) pdfs 1 or 2 MIN1=-4; MIN2=-4; % minimum value of bin centers MAX1= 4; MAX2= 4; % maximum value of bin centers h2d = [M1,MIN1,MAX1,M2,MIN2,MAX2]; % parameter vector for function hist2d % 2-dim. histogram (absolute frequency) x1 = randn(N,1); x2 = randn(N,1) + x1; [c1,c2,f2d] = hist2d(x1,x2,h2d); % normalization (pdf) D1 = (MAX1-MIN1)/(M1-1); % width of bins for x1 D2 = (MAX2-MIN2)/(M2-1); % width of bins for x2 f2d = f2d/(D1*D2*N); % normalization (relative frequency) % graphics FIG=figure('Name','dsplab12_3 : bidim. pdf','NumberTitle',... 'off','Units','normal','Position',[.4 .4 .45 .45]); grid, surfl(c1,c2,f2d) % pdf xlabel('x \rightarrow'), ylabel('\leftarrow y') zlabel('f(x,y) \rightarrow') FIG=figure('Name','dsplab12_3 : contour lines of bidim. pdf',... 'NumberTitle','off','Units','normal','Position',[.4 .37 .45 .45]); V = [.01 .04 .08 .12 .14 0.16]; [CS,CH] = contour(c1,c2,f2d,V); grid % contour lines clabel(CS,CH,V); xlabel('x \rightarrow'), ylabel('y \rightarrow')
Programmbeispiel 14-3 Bidimensionales Histogramm % Bidimensional histogram with equidistant bin center spacing % function [c1,c2,f2d] = hist2d(x,y,h2d) % x : input sequence 1 % y : input sequence 2 % if y is scalar, y is used as shift parameter, i.e. % histogram of pairs x[n] and x[n+y] is computed % h2d : parameters for bin settings % h2d = [M1,MIN1,MAX1,M2,MIN2,MAX2] % M1, M2 : number of equally sized bins % MIN1, MIN2 : minimum value of bin centers % MAX1, MAX2 : maximum value of bin centers % c1 : bin centers with respect to x1 % c2 : bin centers with respect to x2 % f2d : histogram (absolute frequency) % hist2d.m * mw * 06/11/2008 function [c1,c2,f2d] = hist2d(x,y,h2d) Lx = length(x); Ly = length(y); D1 = (h2d(3)-h2d(2))/(h2d(1)-1); % width of bins of x D2 = (h2d(6)-h2d(5))/(h2d(4)-1); % width of bins of y c1 = h2d(2)+D1*(0:h2d(1)-1); c2 = h2d(5)+D2*(0:h2d(4)-1); B1 = h2d(2)-D1/2;
14.4 Korrelation stochastischer Prozesse
161
B2 = h2d(5)-D2/2; if Ly==1 % one sequence x and y=x[n+m] m = y; y = x(1+m:Lx); x = x(1:Lx-m); Ly = length(y); end L = min(Lx,Ly); x = x(1:L); y = y(1:L); x = ceil((x-B1)/D1); x = min(x,h2d(1)); x = max(x,1); y = ceil((y-B2)/D2); y = min(y,h2d(4)); y = max(y,1); f2d = zeros(h2d(4),h2d(1)); % histogram for n=1:L f2d(y(n),x(n)) = f2d(y(n),x(n)) + 1; end
M14.9
Testen Sie, ob der MATLAB-Rauschgenerator randn unkorrelierte Zufallszahlen erzeugt. Füllen Sie dazu Tabelle 14-6 aus. Für die Überprüfung verwenden Sie den MATLAB-Befehl aus der Signal Processing Toolbox xcorr beispielsweise in der Form [R,l] = xcorr(randn(1e4,1),20,'unbiased'); Tabelle 14-6
Schätzwerte für die AKF RXX[l] der durch den MATLAB-Befehl randn erzeugten Zufallszahlenfolge für den Stichprobenumfang N RXX[0]
N
max( |RXX[l]| ) für l = 1, 2, ..., 20
4
10
105 106
M14.10
Hören Sie sich eine Probe des von randn erzeugten Rauschsignals z. B. mit dem Befehl soundsc an. Variieren Sie dabei die Grenzfrequenz (Abtastfrequenz) des Rauschsignals.
M14.11
Bestimmen Sie die AKF und das LDS des Sprachsignals in der Datei speech.wav. Welche Grundfrequenz hebt sich im LDS deutlich hervor? Hat dies Auswirkungen auf die AKF? f0 = Über welchen Zeitraum liegt eine starke Korrelation (Kohärenz) vor. Als Schätzwert für die Kohärenzdauer verwenden Sie die Zeitverschiebung bis die AKF 50% ihres Maximalwertes erstmalig unterschreitet. tc = Vergleiche Sie die Ergebnisse auch mit den Resultaten in Versuch 6, Abschnitt 6.3.
162
14 Kenngrößen stochastischer Signale
Hinweise zu MATLAB-Funktionen und M-Files Im Folgenden werden für die Versuchsdurchführung nützliche MATLAB-Befehle und -Funktionen aufgelistet, zu denen Sie sich mit Hilfe der Help-Funktion Erläuterungen und Beispiele am Bildschirm anzeigen lassen können, siehe auch vorherige Versuche. Tabelle 14-7 MATLAB-Befehle benutzte Programme und Dateien Grafikbefehle
clable, contour, surfl, zlabel
Mathematische Funktionen
ceil, corrcoef, cov, erf, erfinv, hist, histc, mean, std, var
Funktionen der Signalverarbeitung
rand, randn, xcorr
Þ Online-Ressourcen
dsplab14_1.m, dsplab14_2.m, dsplab14_3.m, dsplab14_4.m, histogram.m, hist2d.m, speech.wav
163
15
Stochastische Signale und LTI-Systeme
15.1
Einführung
Dieser Versuch knüpft an den Untersuchungen zu den statistischen Kenngrößen von Zufallssignalen an. Im Mittelpunkt steht die Frage nach den Veränderungen der Kenngrößen bei Filterung der Signale durch LTI-Systeme. Lernziele Nach Bearbeiten dieses Versuches können Sie x
den linearen Mittelwert und die Varianz einer stochastischen Variablen durch eine lineare Abbildung einstellen
x
den linearen Mittelwert und die Varianz am Ausgang eines LTI-Systems berechnen
x
Die Zeit-Autokorrelationsfunktion und die Leistungsübertragungsfunktion eines LTI-Systems berechnen
x
die Autokorrelationsfunktion und das Leistungsdichtespektrum am Ausgang eines LTI-Systems angeben
x
die Bedeutung des Korrelationskoeffizienten anhand der zweidimensionalen WDF einer Normalverteilung erläutern
15.2
Lineare Abbildung stochastischer Signale
15.2.1
Grundlagen
Stochastische Signale treten in der digitalen Signalverarbeitung an vielen Stellen auf: Informationstragende Signale sind von zufälligem Charakter, ansonsten wären sie bekannt und bräuchten nicht übertragen oder verarbeitet zu werden. Informationstragende Signale treten aufgrund der physikalischen Rahmenbedingungen häufig zusammen mit Störsignalen auf, wie z. B. thermisches Rauschen in Verstärkern. Reale digitale Systeme arbeiten mit endlicher Wortlänge, so dass nach einer Multiplikation das so genannte Rundungsrauschen auftritt. Die Verarbeitung stochastischer Signale erzeugt neue stochastische Signale. Man spricht von Abbildungen stochastischer Variablen und Prozesse. In der Informationstechnik ist es wichtig, derartige Abbildungen zu verstehen, um beispielsweise gezielt Maßnahmen zur Unterdrückung von Störungen anwenden zu können. Um den vorgesehenen Rahmen nicht zu sprengen, beschränken wir uns im Folgenden auf die Basisoperationen von LTI-Systemen: die Multiplikation eines Signals mit einer Konstanten und die Addition von Signalen. Lineare Abbildung einer stochastischen Variablen Wir betrachten zunächst die Multiplikation der stochastischen Variablen X mit der reellen positiven Zahl a. Ein anschauliches Beispiel liefern die WDFen bei der Abbildung einer gleich-
164
15 Stochastische Signale und LTI-Systeme
verteilten stochastischen Variablen in Bild 15-1. Wichtig ist, dass die Flächen unter den WDFen als Maß für die Wahrscheinlichkeiten vor und nach der Abbildung stets eins ergeben müssen. fY (y)
fX (x)
2
Fläche = 1
Fläche = 1
1/3 0
2
1/6
x
4
2
0
2
4
y
Bild 15-1 WDF vor und nach der Abbildung Y = 2X
Dementsprechend ergibt sich für die allgemeine lineare Abbildung
a X b
(15.1)
1 § y b· fX ¨ ¸ a © a ¹
(15.2)
Y die neue WDF
fY ( y )
Für den linearen Mittelwert und die Varianz folgt aus der Erwartungswertbildung
PY
a PX b
und
V Y2
a 2 V X2
(15.3)
Addition zweier stochastischer Variablen Die Addition zweier stochastischer Variablen Y
X1 X 2
(15.4)
führt zu etwas aufwändigeren Überlegungen. Im wichtigsten Sonderfall unabhängiger stochastischer Variablen X1 und X2 resultiert die bidimensionale WDF aus der Faltung der WDFen der Summanden. f
³
fY ( y )
f
f X1 ( x) f X 2 ( y x) dx
(15.5)
Für den Fall der Addition zweier unabhängiger stochastischer Variablen Y
a X1 b X 2
(15.6)
ergibt sich unabhängig von den jeweiligen Verteilungen für den linearen Mittelwert und die Varianz der Summe stets
PY
a P X1 b P X 2
und
V Y2
a 2 V X2 b 2 V X2 1
2
(15.7)
15.2 Lineare Abbildung stochastischer Signale
165
Anmerkungen: Manchmal ist es nützlich zu wissen, dass jede Linearkombination gemeinsam normalverteilter stochastischer Variablen wieder auf eine Normalverteilung führt. Diese Eigenschaft kann man auch der Definition der Normalverteilung zugrunde legen. Wendet man beispielsweise die DFT auf einen Block normalverteilter stochastischer Variablen an, so sind die DFT-Koeffizienten ebenfalls normalverteilt.
Zentraler Grenzwertsatz Auf der Addition unabhängiger stochastischer Variablen beruht auch der zentrale Grenzwertsatz der Wahrscheinlichkeitsrechnung. Unter relativ allgemeinen Bedingungen kann gezeigt werden, dass die Überlagerung einer Vielzahl in ihrer Wirkung verschwindend kleiner, zufälliger Beiträge auf eine normalverteilte Gesamtwirkung führt. Ein physikalisches Beispiel ist das thermische Rauschen in einem Widerstand, bei dem sich die irregulären Wärmebewegungen der Elektronen zu einer am Widerstand messbaren, normalverteilten Spannung überlagern. Wir betrachten den Sonderfall unabhängiger, identisch verteilter stochastischer Variablen Xi mit den linearen Mittelwerten P und den Varianzen V 2. Nach dem Grenzwertsatz von Lindeberg-Levy [BSMM99] erhalten wir mit der Abbildung Y
1 N
N
¦ i 1
Xi P
(15.8)
V
für N o f eine normierte, normalverteilte stochastische Variable Y.
15.2.2
Vorbereitende Aufgaben
A15.1
Der MATLAB-Befehl randn erzeugt eine Musterfolge eines normierten Gaußprozesses. Geben Sie die nötigen MATLAB-Befehle an, um eine Musterfolge mit Varianz 0.5 und linearem Mittelwert 0.3 zu erzeugen. X =
A15.2
Betrachten Sie die Addition zweier unabhängiger, in [0,1] gleichverteilter stochastischen Variablen. Zeichnen Sie in Bild 15-2 die resultierende WDF der Summe ein. Hinweis: Keine lange Rechnung erforderlich. f (x)
1 x 0
1
2
Bild 15-2 WDF der Summe zweier unabhängiger, in [0,1] gleichverteilter stochastischer Variablen
15.2.3
Versuchsdurchführung
M15.1
Den Ausgangspunkt bilden zwei in sich unabhängige, in [0,1] gleichverteilte stochastische Prozesse X1[n] und X2[n].
166
15 Stochastische Signale und LTI-Systeme Erzeugen Sie mit MATLAB zwei Musterfolgen x1[n] und x2[n]. Durch y[n] = x1[n] + x2[n] erzeugen Sie eine Musterfolge des Summenprozesses Y[n] = X1[n] + X2[n]. Messen Sie die WDF des Summenprozesses. Welche WDF ergibt sich? Hinweis: Siehe histogram.
M15.2
Wiederholen Sie den Versuch für die Addition mehrerer Prozesse, z. B. 10. Welche WDF ergibt sich jetzt näherungsweise und warum? Kontrollieren Sie auch den linearen Mittelwert und die Varianz des Summenprozesses. Geben Sie Ihr Ergebnis und die approximierende WDF grafisch aus.
M15.3
Kontrollieren Sie mit MATLAB Ihr Ergebnis aus der Vorbereitung A15.2.
M15.4
Addieren Sie nun elementweise die Musterfolgen zweier unabhängiger, normalverteilter Prozesse X1[n] und X2[n] mit linearem Mittelwert 0.3 und Varianz 0.5. Welche WDF ergibt sich jetzt näherungsweise? Geben Sie Ihr Messergebnis und die theoretische WDF gemeinsam grafisch aus. Kontrollieren Sie auch den linearen Mittelwert und die Varianz des Summenprozesses Y[n].
15.3
Abbildung stochastischer Signale an LTI-Systemen
15.3.1
Grundlagen
Durch Filterung eines stochastischen Prozesses mit einem zeitdiskreten kausalen und reellwertigen LTI-System entsteht ein neuer Prozess, dessen Kenngrößen vom Eingangsprozess und dem System abhängen. Die wichtigsten Zusammenhänge zwischen den Prozesskenngrößen am Eingang und am Ausgang eines LTI-Systems sind in Tabelle 15-1 zusammengestellt. Besonders einfach ist der Fall weißen Rauschens am Eingang, da dann die Korrelation am Ausgang bis auf einen konstanten Faktor, der Leistung am Eingang, durch das LTI-System bestimmt wird. Am Ausgang ergibt sich die AKF des Prozesses als die Zeit-AKF der Impulsantwort RYY [l ] V X2 G [l ] Rhh [l ] V X2 Rhh [l ]
(15.9)
und für das LDS die Leistungsübertragungsfunktion des Systems. SYY (:) V X2 ) hh (:)
(15.10)
15.3.2
Vorbereitende Aufgaben
A15.3
Ein unkorreliertes, normiertes und normalverteiltes Rauschsignal wird mit einem System mit der Übertragungsfunktion (15.11) gefiltert. H1 ( z )
0.3 z z 0.8
(15.11)
Berechnen Sie die AKF des Signals am Filterausgang Ryy[l] im Zeitbereich aus der Impulsantwort h[n]. Setzen Sie die Lösungen unten ein. "
15.3 Abbildung stochastischer Signale an LTI-Systemen
167
Tabelle 15-1 Stochastische Signale und zeitdiskrete kausale und reelle LTI-Systeme
h[n] \ mit h[n] 0 n 0
Impulsantwort (reell, rechtsseitig)
f
¦ h[n] e j:n
H (e j: )
Frequenzgang
n 0
Zeitautokorrelationsfunktion
Rhh [l ]
(Zeit-AKF)
f
¦ h[n] h[l n]
h[l ] h[l ]
n 0
) hh (:)
Leistungsübertragungsfunktion
Leistungsübertragungsfaktor
Rhh [0]
(Energie der Impulsantwort)
1 2S
H e j:
S
³
) hh (:)d :
2
f
¦ h 2 [ n]
n 0
S
Eingangs-Ausgangs-Gleichungen für stochastische Prozesse und ihre Kenngrößen AKF und LDS
X[n]
LTI-System
RXX [l]
h[n]
SXX (:)
H(e j: )
Y [n] = X [n] * h [n] RYY [l] = RXX [l] * Rhh [l] SYY (:) = SXX (:) )hh (:)
Eingang
Ausgang
Linearer Mittelwert
PX
PY
P X H (1)
Quadratischer Mittelwert
m2X
m2Y
RYY [0]
Autokorrelationsfolge (AKF) Leistungsdichtespektrum (LDS) Kreuzkorrelationsfolge (KKF)
RXX [l ]
RYY [l ]
S XX (:)
SYY (:) RXY [l ]
RXX [l ] Rhh [l ] S XX (:) ) hh (:)
RXX [l ] h[l ]
168
15 Stochastische Signale und LTI-Systeme Hinweis: Bestimmen Sie dazu erst die Impulsantwort des Systems, siehe Versuch 10, und berechnen Sie dann die Zeit-AKF durch Faltung. Beachten Sie, dass die Zeit-AKF eines reellen LTI-Systems eine reelle gerade Funktion ist. Es ist daher vorteilhaft, die Berechnung zunächst nur für den Fall l t 0 durchzuführen und dann die Lösung für l < 0 symmetrisch fortzusetzen. h[n] = RYY[l] =
A15.4
Berechnen Sie zu Aufgabe A13.3 die AKF RYY[l] aus der Übertragungsfunktion. Geben Sie auch das Pol-Nullstellendiagramm der z-Transformierten der AKF in Bild 15-3 an. Setzen Sie die Zwischenergebnisse und die Lösungen unten ein. " h[l ] h[l ] l ) hh ( z )
Lösungsansatz
Rhh [l ]
Partialbruchzerlegung
) hh ( z )
AKF „rechter Teil“
RYY [l t 0]
gesuchte AKF
RYY [l ]
H ( z ) H z 1
Hinweis: Die Zeit-AKF eines reellwertigen LTI-Systems ist eine reelle und gerade Funktion. Reell bedeutet, dass komplexe Pole nur als konjugiert komplexe Paare auftreten. Gerade bedeutet, dass das Inverse zu jedem Pol ebenfalls einen Pol der zTransformierten der Zeit-AKF )hh(z) ergibt. Dabei sind die Pole im Einheitskreis der z-Ebene dem rechtsseitigen und die Pole außerhalb dem linksseitigen Anteil der AKF zuzuordnen. Für die Berechnung im Bildbereich werden nur die Pole innerhalb des Einheitskreises, die kausalen Pole, bei der Bestimmung des rechtsseitigen AKFAnteils mit der Partialbruchzerlegung als Pole ausgewertet.
15.3 Abbildung stochastischer Signale an LTI-Systemen
169
Im(z) z
1
Re(z)
Bild 15-3 Pol-Nullstellendiagramm der z-Transformierten der AKF RYY[l]
A15.5
Ein stationäres, unabhängiges und in [0,1] gleichverteiltes Rauschsignal wird mit einem System mit der Übertragungsfunktion (15.11) gefiltert. Berechnen Sie die linearen Mittelwerte, die quadratischen Mittelwerte und die Varianzen am Systemeingang und Systemausgang. Tragen Sie die Ergebnisse in Tabelle 15-2 ein. " Hinweis: Beachten Sie, dass der Eingangsprozess in sich unkorreliert, aber nicht mittelwertfrei ist. Die Berechnung des linearen Mittelwertes bzw. der Varianz kann deshalb nicht direkt wie in (15.9) erfolgen, so dass eine etwas längere Rechnung erforderlich ist. Tabelle 15-2 Abbildung einfacher Kenngrößen durch das LTI-System H1(z)
P
m2
V2
Eingang Ausgang
A15.6
Geben Sie die notwendigen MATLAB-Programmzeilen an, um bei bekannten Filterkoeffizienten, die Zähler- und Nennerkoeffizienten b bzw. a, die Zeit-AKF des Filters zu berechnen. Hinweis: Verwenden Sie die MATLAB-Befehle impz und conv. Es genügen zwei Befehlszeilen.
170 A15.7
15 Stochastische Signale und LTI-Systeme Geben Sie die notwendige MATLAB-Programmzeile an, um bei bekannten Filterkoeffizienten, die Zähler- und Nennerkoeffizienten b bzw. a, die Leistungsübertragungsfunktion des Filters zu bestimmen. Hinweis: Verwenden Sie den MATLAB-Befehl freqz.
15.3.3
Versuchsdurchführung
M15.5
Verwenden Sie das System 1. Ordnung mit der Übertragungsfunktion (15.11). Das Eingangssignal sei eine stationäre, unabhängige und in [0,1] gleichverteilte Zufallszahlenfolge. Bestimmen Sie die WDF am Systemausgang durch Simulation mit MATLAB. Approximieren Sie die geschätzte WDF durch die einer Normalverteilung und stellen Sie das Ergebnis und die Näherung grafisch dar. Schätzen Sie auch den linearen und den quadratischen Mittelwert und die Varianz am Systemausgang. Kontrollieren Sie die Ergebnisse anhand Ihrer Vorbereitung in Tabelle 15-2. Hinweis: Siehe MATLAB-Befehle filter, histogram.
M15.6
Schätzen Sie die AKF und das LDS zum System mit der Übertragungsfunktion (15.11). Erregen Sie das System mit normiertem, gaußschen Rauschen, siehe randn. Kontrollieren Sie Ihre Rechnung? Hinweis: Verwendet man den Zufallszahlengenerators rand, ist der Gleichanteil zu berücksichtigen. Obendrein ergeben sich relativ stark schwankende Simulationsergebnisse, weshalb hier darauf verzichtet wird.
M15.7
Schätzen Sie die AKFen und Leistungsübertragungsfunktionen der Systeme mit den untenstehenden Übertragungsfunktionen H2(z) und H3(z). Diskutieren Sie die Ergebnisse. Hinweis: Verwenden Sie den Zufallszahlengenerator randn und zur Filteranalyse das MATLAB-Werkzeug fvtool. H 2 ( z)
M15.8
0.06 z 2 0.12 z 0.06 z 2 1.3z 0.845
und
H3 ( z)
0.845 z 2 1.3z 1 z 2 1.3z 0.845
Schätzen Sie die bidimensionale WDF der Wertepaare einer Musterfolge (x[n], x[n+l]) am Systemausgang des Filters H2(z) für die Verschiebungen l = 1, 2, …, 6. Als Erregung verwenden Sie ein normiertes normalverteiltes Eingangssignal. Stellen Sie die WDFen und ihre Höhenlinien grafisch dar.
15.3 Abbildung stochastischer Signale an LTI-Systemen
171
Diskutieren Sie die Ergebnisse. Überlegen Sie in welchen Bereichen Amplitudenpaare gehäuft auftreten und in welchem Zusammenhang die Häufungen mit dem Korrelationskoeffizienten stehen. Hinweis: Siehe auch Programmbeispiele 14-2 und 14-3 mit hist2d in Versuch 14. M15.9
Stellen Sie zu obiger Versuchsaufgabe auch die Streudiagramme der Paare (x[n], x[n+l]) am Systemausgang des Filters H2(z) für die Verschiebungen l =1, 2, …, 6 dar. Als Erregung verwenden Sie wieder ein normiertes, normalverteiltes Eingangssignal. Für das Streudiagramm interpretieren Sie die Wertepaare als Koordinaten (x, y) in der (x, y)-Ebene. Tragen Sie dort die Wertepaare als Punkte ein. Zur besseren Vergleichbarkeit normieren Sie die angezeigten Werte einer Musterfolge jeweils auf dem Maximalwert eins. Überlegen Sie wieder in welchen Bereichen Amplitudenpaare gehäuft auftreten und in welchem Zusammenhang die Häufungen mit dem Korrelationskoeffizienten stehen.
Hinweise zu MATLAB-Funktionen und M-Files Im Folgenden werden für die Versuchsdurchführung nützliche MATLAB-Befehle und -Funktionen aufgelistet, zu denen Sie sich mit Hilfe der Help-Funktion Erläuterungen und Beispiele am Bildschirm anzeigen lassen können, siehe auch vorherige Versuche. Tabelle 15-3 MATLAB-Befehle benutzte Programme und Dateien Grafikbefehle
scatter
Funktionen der Signalverarbeitung
conv, fft, filter, freqz, fvtool, impz, rand, randn, xcorr
Þ Online-Ressourcen
dsplab15_1.m, dsplab15_2.m, dsplab15_3.m, histogram.m, hist2d.m
172
16
Analog-Digital-Umsetzung
16.1
Einführung
In diesem Versuch werden die beiden Schritte vom analogen zum digitalen Signal vorgestellt: die Abtastung und die Quantisierung. Die Abtastung erzeugt das zeitlich diskretisierte Signal, wobei in der Regel das Abtasttheorem zu beachten ist. Die Quantisierung ist unvermeidlich, weil zur Darstellung der Signalamplituden auf Digitalrechnern nur eine begrenzte Anzahl von Binärstellen zur Verfügung steht. Lernziele Nach Bearbeiten dieses Versuches können Sie y
die notwendigen Verarbeitungsschritte der Analog-Digital-Umsetzung anhand eines Blockschaltbildes skizzieren
y
das Abtasttheorem angeben und seine Bedeutung erklären
y
die Quantisierung anhand der Quantisierungskennlinie erläutern
y
ein einfaches Modell für den Quantisierungsfehler angeben und das Verhältnis aus der Signalleistung und der Quantisierungsgeräuschleistung in Abhängigkeit der Wortlänge abschätzen
y
das Gleitkomma-Format und das Festkomma-Format vorstellen und bezüglich der Dynamik und Präzision bewerten
y
Zahlen in Zweierkomplement-Darstellung und im Gleitkomma-Format IEEE 754-1985 angeben
16.2
Digitalisierung
Die prinzipiellen Verarbeitungsschritte zur Digitalisierung eines analogen Signals zeigt Bild 16-1. Die Vorfilterung durch den Tiefpass mit der Grenzfrequenz fg kann unterbleiben, falls das Eingangssignal bereits entsprechend bandbegrenzt ist. Zunächst wird bei der zeitlichen Diskretisierung, der idealen Abtastung (Sampling Operation), jeweils alle Abtastintervalle Ts ein Abtastwert (Sample) aus dem analogen Signal entnommen. Die zeitdiskrete Abtastfolge x[n] besitzt noch wertkontinuierliche Amplituden.
zeitdiskretes Signal
analoges Signal x’(t)
Tiefpass fg
x(t)
Abtastung
Abtastintervall Ts
x[n] = x(t = nTs)
digitales Signal
Quantisierung
[x[n]]Q
Quantisierungskennlinie
Bild 16-1 Digitalisierung: Verarbeitungsschritte vom analogen zum digitalen Signal
16.3 Abtastung
173
Bei der Quantisierung werden den Amplituden Werte aus einem diskreten Zeichenvorrat, den Maschinenzahlen, zugewiesen. Die Zuweisung wird durch die Quantisierungskennlinie definiert. Das digitale Signal [x[n]]Q entsteht. Technisch wird die Digitalisierung in Analog-Digital-Umsetzern (A/D-Umsetzer) realisiert [TiSc99]. Dabei kommen meist integrierte mikroelektronische Bausteine zum Einsatz, die gemäß den Anforderungen aus einem reichhaltigen Angebot gewählt werden können. Grundsätzlich wächst die Komplexität der A/D-Umsetzer mit der Höhe der Abtastrate und Genauigkeit der Zahlendarstellung. Typische Bereiche für die Wortlängen sind 8 bis 16 (20) Bits und Abtastfrequenzen bis 100 (1000) MHz.
16.3
Abtastung
16.3.1
Abtasttheorem
Eine sinnvolle zeitliche Diskretisierung liegt vor, wenn die Veränderungen des analogen Signals durch die Abtastfolge gut wiedergegeben werden. Damit das analoge Signal aus der Abtastfolge durch eine Interpolation hinreichend genau wieder gewonnen werden kann, muss ein sich schnell änderndes Signal häufiger als ein dazu relativ langsam veränderliches Signal abgetastet werden. Diese grundsätzliche Überlegung wird im Abtasttheorem präzisiert. Abtasttheorem Eine Funktion x(t), deren Spektrum für | f | t fg null ist, wird durch die Abtastwerte x(t = nTs) vollständig beschrieben, wenn das Abtastintervall Ts, bzw. die Abtastfrequenz fs, so gewählt wird, dass Ts
1 1 d fs 2 f g
(16.1)
Die so abgetastete Funktion kann aus den Abtastwerten durch die si-Interpolation fehlerfrei rekonstruiert werden. f
x(t )
¦
n f
x(nTs ) si f sS >t nTs @
(16.2)
Anmerkung: Beachten Sie die hier gewählte Formulierung des Abtasttheorems. Bei der Grenzfrequenz fg ist das Spektrum des analogen Signals bereits zu null angenommen. Bei der Abtastung einer Sinus- oder Kosinusfolge mit der Frequenz fg / 2, also 2 Abtastwerte pro Periode, ist die Amplitudeninformation unbestimmt; im Extremfall kann auch in den Nulldurchgängen abgetastet werden.
Die zur Interpolation verwendeten si-Impulse entsprechen im Frequenzbereich einem idealen Tiefpass mit der Grenzfrequenz fg. Eine Interpolation mit einem idealen Tiefpass liefert das ursprüngliche zeitkontinuierliche Signal. Die praktische Anwendung der si-Interpolation geschieht näherungsweise in Digital-Analog-Umsetzern: Ein Abtast-Halteglieder erzeugt zunächst ein treppenförmiges analoges Signal, das anschließend durch einen Tiefpass geglättet wird [Wer08b]. Die Auswirkung der Abtastung auf die Spektren der Signale wurde in Versuch KurzzeitSpektralanalyse: Grundlagen vorgestellt. Wird das Abtasttheorem verletzt, kommt es zur Überfaltungen des periodisch fortgesetzten Spektrums, dem Aliasing.
174
16 Analog-Digital-Umsetzung
16.3.2
Vorbereitende Aufgaben
A16.1
Mit dem Programmbeispiel 16-1 wird der Einfluss der zur Abtastung notwendigen Bandbegrenzung hörbar gemacht. Ein Audiosignal wird bandbegrenzt, unterabgetastet und auf der PC Sound Card ausgegeben. Machen Sie sich mit dem Programm vertraut und erklären Sie insbesondere, wie die Bandbegrenzung durchgeführt wird. Hinweis: Da nicht jede PC Sound Card eine weitgehend beliebige Einstellung der Abtastfrequenz erlaubt, wird im Programmbeispiel auf die explizite Unterabtastung verzichtet. Es wird jedoch die vor der Unterabtastung notwendige Bandbegrenzung durchgeführt, so dass sich ein entsprechender Höreindruck ergibt.
Programmbeispiel 16-1 Unterabtastung eines Audiosignals (Tiefpass-Filterung) % subsampling of an audio signal using lowpass filtering by fft % dsplab16_1.m * mw * 01/23/2006 fprintf('01/23/2006/dsplab16_1 : subsampling \n') filename = input('name of audio file (*.wav): ','s'); [x,fs,bits] = wavread(filename); % load audio signal x = x/max(abs(x)); % scaling X = fft(x); Lx = length(x); K = 0; while K~=7 K = menu([filename,' fs = ',num2str(fs),' Hz'],'original',... 'fs / 2','fs / 4 ','fs / 8 ','fs / 16 ','fs / 32 ','exit'); SR = 2^(K-1); % subsampling factor % lowpass filtering using fft index = ceil(Lx/(2*SR)); X0 = [X(1:index); zeros(Lx+1-2*index,1); X(Lx+2-index:Lx)]; x_lp = real(ifft(X0)); if K~=7 soundsc(x_lp,fs,bits); end end
16.3.3
Versuchsdurchführung
M16.1
Machen Sie sich die Bedeutung der Abtastfrequenz mit dem Programmbeispiel 16-1 klar, indem Sie sich das Sprachsignal speech.wav bei verschiedenen Abtastfrequenzen anhören. Bis zu welcher Grenzfrequenz ist das Sprachsignal noch verständlich?
M16.2
Erzeugen Sie Ausschnitte eines Kosinussignals mit der jeweiligen Dauer von 0.5 s bei der Abtastfrequenz 8 kHz. Variieren Sie die Signalfrequenz von 1 kHz bis 8 kHz und geben Sie die Signale kurz hintereinander über die PC Sound Card aus. Welcher Effekt stellt sich? Diskutieren Sie das Ergebnis. Überlegen Sie: Was geschieht bei der Abtastung eines Kosinussignals mit der Frequenz 4 kHz bei einer Abtastfrequenz von 8 kHz? Welche Möglichkeiten ergeben sich für die Abtastfolge, wenn die Anfangsphase der Abtastzeitpunkte zufällig ist? Welche Information geht dabei verloren?
16.4 Quantisierung
16.4
Quantisierung
16.4.1
Quantisierungskennlinie
175
Das analoge Signal x(t) sei auf das Amplitudenintervall [1,1[ begrenzt. Falls nicht, wird das Signal vor der Quantisierung geeignet skaliert. Im Weiteren wird stets von einem Quantisierungsbereich von 1 bis +1 ausgegangen. Zur Darstellung der Abtastwerte sollen je w Bits zur Verfügung stehen. Man spricht von der Wortlänge und schreibt z. B. kurz w = 3 bit. Mit w Bits können genau 2w/bit Quantisierungsintervalle dargestellt werden. Bei der gleichförmigen Quantisierung teilt man den Quantisierungsbereich in 2w/bit gleichgroße Intervalle mit der Quantisierungsintervallbreite Q
w bit 1 2
(16.3)
Anmerkungen: (i) Üblich sind auch die Sprechweisen Quantisierungsstufe und Quantisierungsstufenhöhe. (ii) Häufig wird die Wortlänge in den Formeln auch ohne die Pseudoeinheit bit verwendet.
Die exakte Beschreibung der Quantisierung geschieht durch die Quantisierungskennlinie, wie z. B. in Bild 16-2. Sie definiert die Abbildung der kontinuierlichen Abtastwerte auf die Repräsentanten. Die Repräsentanten sind im Bild als kleine Quadrate kenntlich gemacht. Bei der gleichförmigen Quantisierung mit Runden liegen die Repräsentanten jeweils in der Mitte der Quantisierungsintervalle, so dass der Abstand zwischen Abtastwert und Repräsentant die halbe Intervallbreite nicht überschreitet. Anhand von Bild 16-2 lassen sich die zwei grundsätzlichen Probleme der Quantisierung erkennen: / Eine Übersteuerung tritt auf, wenn das Eingangssignal außerhalb des vorgesehenen Aussteuerungsbereichs liegt. In der Regel tritt dann die Sättigung ein und es wird der Maximalwert bzw. der Minimalwert der Repräsentanten ausgegeben (Sättigungskennlinie). / Eine Untersteuerung liegt vor, wenn das Eingangssignal (fast) immer viel kleiner als der Aussteuerungsbereich ist. Im Extremfall entsteht so genanntes granulares Rauschen bei dem das quantisierte Signal scheinbar regellos zwischen den beiden Repräsentanten um die Null herum wechselt. Dieses Problem kann umgangen werden, wenn ein Quantisierungsintervall um die Null eingeführt wird, wie unten in Bild 16-2. Bei jeder Anwendung ist stets wichtig, den Eingang des A/D-Umsetzers passend auszusteuern. Zu den grundsätzlichen Problemen können im praktischen Einsatz durch nicht perfekte A/DUmsetzer weitere statische und dynamische Fehler hinzutreten [TiSc99].
16.4.2
Maschinenzahlen
Bei der Zahlendarstellung auf Digitalrechnern, den Maschinenzahlen, wird in der Regel das Dualsystem mit der Basis 2 zugrunde gelegt. Es kommen zwei grundsätzliche Formate zum Einsatz: das Gleitkomma-Format und das Festkomma-Format.
176
16 Analog-Digital-Umsetzung Sättigungskennlinie
[x]Q 3/4
Beispiele
Repräsentant 1/2 1/4 0 1
1/2
1/4
1/2
1
x
1/2 3/4
x
[x]Q
0.7
0.5
0
0
0.2
0.25
1.1
1
1
Sättigungskennlinie
[x]Q 3/4
Beispiele
1/2 1/4 0 1
1/2
1
1/4
x
1/2 3/4
x
[x]Q
1.1
0.75
0.7
0.75
0
0
0.2
0
1
Bild 16-2 Quantisierungskennlinie mit Abschneiden (oben) und Runden (unten) bei gleichförmiger Quantisierung mit der Wortlänge 3 Bits und Zweierkomplement-Darstellung
Gleitkomma-Format Im Gleitkomma-Format werden die Zahlen durch das Vorzeichen s, den Exponenten E und die Mantisse Mf dargestellt, siehe Bild 16-3. Sie werden üblicherweise so skaliert, dass die höchstwertige Stelle der Mantisse eins ist. Sie kann deshalb weggelassen (gemerkt) werden und so effektiv eine Stelle mehr zur Verfügung steht. Man spricht von der normalisierten Form und bezeichnet die Summe Mf + 1 als Signifikant. Im Beispiel des weit verbreiteten 64-Bit-Formats (Double Precision) nach IEEE 754-1985 bedeutet das, siehe auch Bild 16-3, x
(1) s 2 E (1 M f )
(16.4)
mit dem Exponenten mit Bias 10
E
¦ ei 2i 1023
(16.5)
i 0
und der Mantisse 51
Mf
252 ¦ fi 2i i 0
(16.6)
16.4 Quantisierung
177 31 30
s
Single Precision 63 62
Double Precision
s
Vorzeichen s 1 Bit
23 22
e7 … e0
0
f22 … f0
52 51
e10 … e0
0
f51 f50
…
Exponent E 8 bzw. 11 Bits
f1 f0
Mantisse Mf 23 bzw. 52 Bits
Bild 16-3 Gleitkommadarstellung nach IEEE 754-1985 für Single Precision und Double Precision
Wir machen uns die Anwendung an Beispielen deutlich. Beispiel 16-1 Gleitkomma-Format einer natürlichen Zahl Im Beispiel der Zahl 100 ergibt sich zu (16.4) zunächst die Zerlegung (1)0 26 (1 0.5625)
100
(16.7)
und daraus das zugehörige Bitmuster 100d
0O 100 '0000 '01011001'0000...0000 e 6 1023
s
M f 0.5625
(16.8)
Beispiel 16-2 Gleitkomma-Format einer negativen Dezimalzahl Im Beispiel der Zahl –0.40625 führt die Zerlegung (16.4) auf 0.40625
( 1)1 22 (1 0.625)
(16.9)
und das zugehörige Bitmuster ist 0.40625d
1O 011'1111'1101 '0000...0000 1010 s
e 2 1023
(16.10)
M f 0.625
MATLAB am PC verwendet das Format IEEE 754-1985, das bestimmte Bitmuster für Ausnahmen reserviert, wie zum Beispiel Inf (positiver Überlauf, f), -Inf (negativer Überlauf, f) und NaN für Not a Number. Letzteres resultiert als Ergebnis für undefinierte Ausdrücke, wie z. B. bei Division von 0/0. Um die Ausnahmen anzuzeigen, ist der maximal mögliche Exponent emax = 28 1 = 255 bzw. 211 1 = 2047 reserviert, siehe Tabelle 16-1. Man beachte auch den Unterschied zwischen den normalisierten und denormalisierten Zahlen. Die kleinste von null verschiedene positive Zahl in normalisierter Form ist 2Emin. Durch denormalisieren kann diese Zahl auf 223 2Emin bzw. 252 2Emin verkleinert werden. So wird das Problem des Zahlenunterlaufs wirksam reduziert.
178
16 Analog-Digital-Umsetzung
Tabelle 16-1 Codierung von Gleitkommazahlen (IEEE 754-1985) Exponent
Mf
Mantisse
Reelle Zahl mit E = e Bias
1 d e < emax
fm, …, f0
1 + Mf
(1) s 2 E (1 M f )
Denormalisiert
0, …, 0
fm, …, f0
Mf
(1) s 2 Emin M f
02
0, …, 0
0, …, 0
0
NaN
emax
1, …, 1
Inf, -Inf2
emax
0, …, 0
Typ Normalisiert1
1
Signifikant: 1 + Mf
2
0 und -0 werden ebenso wie Inf und -Inf durch das Vorzeichenbit s = 0 bzw. s = 1 unterschieden
Formatbeispiele
m
emax
Emin
Emax = emax1Bias
Bias
Single Precision
22
255
126
127
127
Double Precision
51
2047
1022
1023
1023
Festkomma-Format Für die Darstellung von Festkomma-Zahlen gibt es verschiedene Möglichkeiten: Betrag und Vorzeichen, Einerkomplement und Zweierkomplement. Wir beschränken uns im Folgenden auf das in der digitalen Signalverarbeitung häufig verwendete Festkomma-Format im Zweierkomplement (Two’s Complement) mit der Wortlänge w in Bits. Im Zweierkomplement-Format gibt es genau 2w/bit verschiedene Maschinenzahlen, wobei die Null eindeutig ausgedrückt wird. x
a0 20
w/bit 1
¦
ai 2i mit ai ^0,1` für 1 d x d 1 2 w/bit 1
(16.11)
i 1
Die Negation geschieht vorteilhaft durch Komplementbildung und Addition eines Bits mit geringster Wertigkeit, dem LSB (Least Significant Bit). x
a0 20
w / bit 1
¦
ai 2i 2 w bit 1 mit ai ^0,1` für 1 d x d 1 2 w/bit 1
(16.12)
i 1
Anmerkungen: (i) Das Zweierkomplement-Format ermöglicht prinzipiell die Darstellung der Zahl 1. Bei manchen Anwendungen, speziell mit digitalen Signalprozessoren, wird aus Gründen der Kompatibilität auf die Verwendung der 1 verzichtet. (ii) Das Zweierkomplement-Format ermöglicht die einfache Addition von positiven und negativen Zahlen.
16.4 Quantisierung
179
Beispiel 16-3 Festkomma-Format einer negativen Dezimalzahl
Im Beispiel der Zahl –0.328125 ergibt sich aus (16.11) zunächst die Darstellung des Betrages. 0.328125
22 24 26
(16.13)
Bei einer Wortlänge von 16 Bits ist dann das zugehörige Bitmuster mit dem LSB rechts 0.328125 d
0010 '1010 '0000 '00002c
(16.14)
Durch Zweierkomplement-Bildung ergibt sich daraus 0.328125d
1101'0110 '0000 '00002c
(16.15)
Einen pauschalen Vergleich für die praktische Anwendung der beiden prinzipiellen Formate zeigt Tabelle 16-2. Was die numerischen Eigenschaften betrifft, werden in den Anwendungen meist zwei Kriterien herangezogen: die Dynamik, das Verhältnis von größter und kleinster positiver darstellbarer Zahl die Präzision, die Feinheit der Zahlendarstellung, je größer das Quantisierungsintervall desto kleiner die Präzision Tabelle 16-2 Vergleich des Festkomma- und Gleitkomma-Formats für Digitalrechner bei gleicher Wortlänge Festkomma-Format
Gleitkomma-Format
Aussteuerungsbereich (Dynamik)
kleiner
größer
Quantisierungsfehler (Präzision)
konstant
exponentenabhängig
meist erforderlich
meist nicht erforderlich
Hardware-Komplexität
kleiner
größer
Energieaufnahme
kleiner
größer
schwieriger
einfacher
niedriger
höher
Skalierung
Software-Portabilität Preis
16.4.3
Quantisierungsfehler
Aus den quantisierten Werten kann das ursprüngliche Signal, abgesehen von künstlichen Spezialfällen, nicht mehr fehlerfrei rekonstruiert werden. Der Quantisierungsfehler wird durch die Wortlänge kontrolliert. Je größer die Wortlänge, umso kleiner der mögliche Quantisierungsfehler, desto größer die Präzision der Signaldarstellung. Mit wachsender Wortlänge nehmen jedoch auch die Komplexität der arithmetischen Operationen und der Speicherbedarf in der Signalverarbeitung zu. In praktischen Anwendungen ist deshalb zwischen der gewünschten Präzision und dem notwendigen Aufwand abzuwägen.
180
16 Analog-Digital-Umsetzung
Um im konkreten Fall die Frage nach der Präzision zu beantworten, muss sie quantitativ messbar sein. Dazu verwendet man das Modell einer additiven Störung, einem Fehlersignal, hier in Anlehnung an die Sprachtelefonie auch Quantisierungsgeräusch genannt, siehe Bild 16-4. Anmerkung: Die (mathematische) Quantisierung wirkt auf die Folgenelement bzw. Momentanwerte unabhängig von früheren oder folgenden Werten. Sie ist deshalb gedächtnislos. Der Einfachheit halber betrachten wir im Folgenden ein zeitkontinuierliches dreieckförmiges Eingangssignal.
Ein übersichtliches Beispiel liefert die Quantisierung mit Runden des periodischen, dreieckförmigen Signals x(t) in Bild 16-5. Dann wird am Ausgang die Quantisierungskennlinie sichtbar.
Eingangswert x
Quantisierung
'
quantisierter Wert [x]Q
> x@Q x
Bild 16-4 Ersatzmodell für die Quantisierung mit dem Quantisierungsgeräusch '
Im unteren Bild ist das Fehlersignal '(t) aufgetragen. Betrachtet man den Zeitpunkt t = 0, so ist x(0) = 0 und [x(0)]Q ebenfalls 0. Mit wachsender Zeit steigt das Eingangssignal linear an und das Fehlersignal fällt zunächst linear. Bei t = T0 / 16 überschreitet das Eingangssignal die Grenze des Quantisierungsintervalls. Danach ist das Eingangssignal zunächst kleiner als der zugewiesene Repräsentant. Das Fehlersignal springt von Q/2 auf +Q/2, um über das gesamte Quantisierungsintervall linear wieder bis Q/2 zu fallen. In der Mitte des Quantisierungsintervalls ist der Quantisierungsfehler 0. Entsprechendes kann für die anderen Signalabschnitte überlegt werden. Man beachte, dass in Bild 16-5 das Signal nicht vollständig zwischen –1 und +1 ausgesteuert wird. Wegen der exakten Darstellung der Null im Zweierkomplement-Format fehlt die Darstellung der Eins. Im Falle eines Eingangswertes 1 ergäbe sich der Quantisierungsfehler Q. Für Eingangswerte größer gleich 12w/bit wird der größte darstellbare Wert 12-(w/bit1) zugewiesen (Sättigung). Damit wird es möglich, die Qualität der Quantisierung quantitativ zu erfassen. Als Qualitätsmaß wird das Verhältnis der Leistungen des Eingangssignals und des Quantisierungsgeräusches, das Signal-Quantisierungsgeräusch-Verhältnis, kurz SNR (Signal-to-Noise Ratio), zugrunde gelegt. Im Beispiel des dreieckförmigen Signals ergibt sich bei Vollaussteuerung die mittlere Signalleistung S
1 T0
T0
³ 0
2
x(t ) dt
1 3
(16.16)
[x(t)]Q 1
3/4
x(t)
1/2 1/4 0
T0/2
1/4
T0/2
t
1/2 3/4 1
'(t) = [x(t)]Q x(t) Q/2
t Q/2 Bild 16-5 Quantisierung eines periodischen dreieckförmigen Signals (oben) und das dabei entstehende Quantisierungsgeräusch (Fehlersignal) '(t) (unten)
16.4 Quantisierung
181
Die mittlere Leistung des Quantisierungsgeräusches kann wegen des abschnittsweise linearen Verlaufs ebenso einfach berechnet werden, siehe Bild 16-5. Der Sättigungseffekt der Quantisierung für Eingangswerte bei Vollaussteuerung nahe 1 wird genügend große Wortlänge vorausgesetzt für die vereinfachten Modellüberlegungen vernachlässigt. Dann sind die Werte des Quantisierungsgeräusches auf das Intervall [Q/2, Q/2] beschränkt. Die mittlere Leistung ergibt sich demzufolge wie in (16.16) zu N
1 §Q· ¨ ¸ 3 ©2¹
2
Q2 12
22 w bit 3
(16.17)
wobei die Quantisierungsintervallbreite durch die Wortlänge ersetzt wurde. Für die vereinfachten Modellüberlegungen resultiert das SNR im logarithmischen Maß S N
dB
10 log10 22 w bit dB = 20
w w log10 2 dB | 6 dB bit bit
(16.18)
Das SNR verbessert sich demzufolge um 6 dB pro zusätzlichem Bit Wortlänge. Anhand der Modellrechnung erkennt man, dass das SNR von der Art des Signals abhängt; genauer von der Verteilung der Signalamplituden. Im Falle eines im gesamten Aussteuerungsbereich gleichverteilten Eingangsprozesses ergibt sich das SNR wie in (16.18). Das gefundene Ergebnis liefert eine brauchbare Näherung für viele praktische Anwendungsfälle: Für eine symmetrische gleichförmige Quantisierung mit hinreichender Wortlänge w in Bits und Vollaussteuerung gilt die 6dB-pro-Bit-Regel w §S· dB ¨ ¸ | 6 bit © N ¹dB
(16.19)
Für die Näherung liegt erfahrungsgemäß eine hinreichende Wortlänge vor, wenn das Signal mehrere Quantisierungsintervalle durchläuft. Viele Signale, wie Sprach- und Audiosignale, haben einen hohen Dynamikumfang, wobei die kleinen Amplituden relativ häufig vorkommen. Bei Vollaussteuerung ist die Signalleistung deshalb deutlich kleiner als 1/3, so dass das tatsächliche SNR um einige dB kleiner ist als in (16.19).
16.4.4
Vorbereitende Aufgaben
A16.2
Überlegen Sie, wie Sie mit einem MATLAB-Programm die kleinste Maschinenzahl größer eins bestimmen können. #
Hinweis: (1+H) mit H > 0, wenige Programmzeilen genügen. A16.3
Geben Sie für die Wortlänge w in Bits die fehlenden Einträge zum Zweierkomplement-Format in Tabelle 16-3 an.
A16.4
Geben Sie für die Zahlenwerte in Tabelle 16-4 im Zweierkomplement-Format für die Wortlänge w = 8 bit in hexadezimaler Form an. Runden Sie gegebenenfalls die letzte Stelle. Tragen Sie die quantisierten Werte auch als übliche Gleitkommazahlen ein.
182
16 Analog-Digital-Umsetzung
Tabelle 16-3 Zweierkomplement-Format Wortlänge
w
8 bit
16 bit
Kleinste positive Zahl (LSB)
Größte positive Zahl (1LSB)
Kleinste negative Zahl
Dynamik
Präzision1 1
Maximaler Quantisierungsfehler bei Runden (aussteuerungsunabhängig, man beachte den jeweiligen Exponent)
Tabelle 16-4
A16.5
Quantisierung im Zweierkomplement-Format w = 8 bit mit Hexadezimaldarstellung (Hex) der Bitmuster
x
x2c
[x]Q
x
0.996
7FHex
0.9921875
0
0.125
0.125
0.004
1
x2c
[x]Q
Machen Sie sich mit der Zahlendarstellung nach IEEE 754-1985 in MATLAB vertraut. Bestimmen Sie dazu für die normalisierte Form den größten und den kleinsten positiven Zahlenwert, siehe Tabelle 16-5. Geben Sie auch die kleinste Maschinenzahl größer eins an.
Hinweis: Geben Sie zunächst die theoretischen Werte an mit der Wortlänge des Exponenten we und der Mantisse wM. Spezialisieren Sie danach auf die angegebenen Formate. Verwenden Sie gegebenenfalls geeignete Schätzwerte im Dezimal-Format.
16.4 Quantisierung
183
Tabelle 16-5 Zahlendarstellung IEEE 754-1985 (normalisiert) Theoretisch1
Single Precision
Double Precision
Größte positive Maschinenzahl Kleinste (normalisierte) Maschinenzahl > 0 Kleinste (normalisierte) Maschinenzahl2 > 1 Dynamik
Präzision3 1 2 3
A16.6
Wortlänge des Exponenten we und Wortlänge der Matisse wM Maschinen-Epsilon Maximaler Quantisierungsfehler bei Runden aufgrund der Wortlängenbeschränkung der Mantisse (aussteuerungsunabhängig, beachte Exponent)
Machen Sie sich mit dem Programmbeispiel 16-2 zur Simulation einer Quantisierung im Zweierkompliment-Format vertraut.
Programmbeispiel 16-2 Quantisierung im Zweierkomplement-Format % Tow's complement quantizer with range [-1,1[ (saturation) % function [xq] = quant2c(x,w,TMode) % x : input signal % w : word length (# of bits) % TMode : truncation mode % 't' - truncation (rounding towards minus infinity) % 'r' - rounding to nearest quantization level % xq : quantized signal % quant2c.m * mw * 06/13/2008 function [xq] = quant2c(x,w,TMode) LSB = 2^(-w+1); % least significant bit xq = min(1-LSB,x); % clipping (saturation) xq = max(-1,xq); % Quantizer if TMode == 't' xq = floor(xq/LSB)*LSB; else xq = round(xq/LSB)*LSB; end
184
16 Analog-Digital-Umsetzung
16.4.5
Versuchsdurchführung
M16.3
Bestimmen Sie die kleinste von eins verschiedene Maschinenzahl mit Ihrem vorbereiteten Programm.
M16.4
Bestimmen Sie die MATLAB-Variablen eps, realmax und realmin und machen Sie sich deren Bedeutung klar. Vergleichen Sie die Werte mit den entsprechenden Werten aus Ihrer Vorbereitung. eps
=
realmin = realmax = M16.5
Nehmen Sie die Quantisierungskennlinien zum Zweierkomplement-Format mit der Wortlänge von drei Bits für Abschneiden und für Runden auf. Stellen Sie auch die Quantisierungsfehler grafisch dar.
Hinweis: Verwenden Sie das Programm dsplab16_2 in Programmbeispiel 16-3 mit der Funktion quant2c.m Programmbeispiel 16-3 Testprogramm für die Quantisierung im Zweierkomplement-Format mit Runden mit dem Programm quant2c % Test of tow's complement quantizer function quant2c % dsplab16_2.m * mw * 06/13/2008 n = -1:.001:1; x = n; % input signal xq = quant2c(x,3,'r'); % quantization with rounding % Graphics FIG1=figure('Name','dsplab16_2 : Quantization','NumberTitle','off'); subplot(2,1,1),plot(n,xq,n,xq,'.',n,x,'LineWidth',2),grid xlabel('{\itx} \rightarrow'), ylabel('[{\itx}]_{Q} \rightarrow') subplot(2,1,2),plot(n,xq-x,'LineWidth',2),grid xlabel('{\itx} \rightarrow'), ylabel('\Delta \rightarrow')
M16.6
Quantisieren Sie ein Sinussignal mit Amplitude eins mit den beiden Quantisierungskennlinien aus der vorhergehenden Aufgabe für die Wortlänge von vier Bits. Stellen Sie das Signal vor und nach der Quantisierung sowie den Quantisierungsfehler grafisch dar.
Hinweis: Modifizieren Sie das Programm dsplab16_2.m entsprechend. M16.7
Messen Sie das Signal-Quantisierungsgeräusch-Verhältnis (SNR) für ein lineares und ein sinusförmiges Signal in Abhängigkeit von der Wortlänge. Verwenden Sie die Wortlängen von 2 … 16 Bits. Wiederholen Sie die Messung für das Sprachsignal speech.wav. Stellen Sie die Ergebnisse in dB in einem Bild dar. Vergleichen Sie Ihr Ergebnis mit der Abschätzung durch das Fehlermodell, der 6dB-pro-Bit-Regel.
Hinweis: Verwenden Sie Programm dsplab16_3 in Programmbeispiel 16-4.
16.4 Quantisierung
185
Programmbeispiel 16-4 Schätzung des SNR für die Quantisierung im ZweierkomplementFormat mit Runden für ein lineares Signal % Tow's complement quantization of linear signal % dsplab16_3.m * mw * 06/13/2008 n = 0:.001:1; L = length(n); w = 2:16; % word length SNR = zeros(size(w)); x = n; % linear signal for k=1:length(w) S = sum(x.^2)/L; % signal power xq = quant2c(x,w(k),'r'); % quantized signal (rounding) N = sum((xq-x).^2)/L; % noise power SNR(k) = S/N; % signal-to-noise ratio end % Graphics FIG = figure('Name','dsplab16_3: Quantization SNR',… 'NumberTitle','off'); plot(w,10*log10(SNR),'o',w,10*log10(SNR),':',w,6*w,'LineWidth',2),grid xlabel('word length {\itw} in bit \rightarrow') ylabel('{\itSNR} in dB \rightarrow')
M16.8
Untersuchen Sie den Einfluss der Quantisierung auf Audiosignale durch Hörtests. Wiederholen Sie die Hörtests für das Sprachbeispiel speech.wav. Bis zu welcher Mindestwortlänge ist das Sprachsignal noch verständlich?
Hinweis: Skalieren Sie den Aussteuerungsbereich des Sprachsignals geeignet. Probieren Sie auch andere Audiosignale aus.
Hinweise zu MATLAB-Funktionen und M-Files Im Folgenden werden für die Versuchsdurchführung nützliche MATLAB-Befehle und -Funktionen aufgelistet, zu denen Sie sich mit Hilfe der Help-Funktion Erläuterungen und Beispiele am Bildschirm anzeigen lassen können, siehe auch vorherige Versuche. Tabelle 16-6 MATLAB-Befehle benutzte Programme und Dateien Spezielle Befehle und Konstanten
eps, realmax, realmin, format
Programmsteuerung
break, menu, while
Þ Online-Ressourcen
dsplab16_1.m, dsplab16_1b.m, dsplab16_1c.m, dsplab16_2.m, dsplab16_2b.m, dsplab16_2c.m, dsplab16_3.m, dsplab16_4.m, quant2c.m, speech.wav, guitar.wav, handel.wav
186
17
Reale digitale Filter: Koeffizientenquantisierung
17.1
Einführung
In der Systemtheorie werden digitale Signale und Systeme zunächst unter idealisierten Bedingungen betrachtet. Reale Systeme, wie beispielsweise bei der MATLAB-Simulation am PC, bei einer Implementierung auf einem digitalen Signalprozessor oder einer dedizierten Hardware, arbeiten jedoch stets mit endlicher Wortlänge. Es entstehen zwangsläufig Quantisierungsfehler, wenn die Koeffizienten und Variablen außerhalb des Darstellungsbereiches der Maschinenzahlen liegen. Lernziele Nach Bearbeiten dieses Versuches können Sie x
die Fehlerquellen bei realen digitalen Filtern nennen
x
eine Abschätzung für die maximale Frequenzgangsabweichung durch Quantisierung der Koeffizienten bei FIR-Filtern angeben
x
mit MATLAB den tatsächlichen Fehler durch Quantisierung der Koeffizienten bei FIR-Filtern bestimmen
x
die Wirkung der Koeffizientenquantisierung von IIR-Filtern auf den Frequenzgang anhand des PolNullstellendiagramms erläutern
x
den Effekt der Polausdünnung anhand einer Skizze in der z-Ebene veranschaulichen
x
ein IIR-Filter höherer Ordnung in eine für die Realisierung günstige Kaskadenform umwandeln
x
mit MATLAB den tatsächlichen Fehler durch Quantisierung der Koeffizienten bei IIR-Filtern bestimmen
x
das MATLAB-Werkzeug fdatool zum Entwurf und der Analyse von Filtern gezielt einsetzen
17.2
Wortlängeneffekte
Praktische Systeme zur digitalen Signalverarbeitung werden häufig auf speziellen Mikrokontrollern implementiert, den digitalen Signalprozessoren (DSP, Digital Signal Processor). Nach Art der Zahlendarstellung werden zwei Gruppen unterschieden: Festkomma-Prozessoren und Gleitkomma-Prozessoren. Wichtige Vor- und Nachteile der beiden Prozessor-Architekturen stellt Tabelle 17-1 gegenüber. Beim praktischen Einsatz digitaler Systeme sind drei Fehlerquellen zu berücksichtigen:
Quantisierungsfehler bei der A/D- Umsetzung Quantisierungsfehler bei der Darstellung der Filterkoeffizienten / Entwurfsspezifikationen verletzt, Filter instabil - Filter bleibt ein lineares System
17.3 FIR-Filter mit quantisierten Koeffizienten
187
Arithmetikfehler innerhalb des Filters treten bei Wortlängenverkürzung nach einer Multiplikation oder einem Überlauf nach einer Addition auf. / Inneres Rauschen, kleine und große Grenzzyklen / Filter ist kein lineares System mehr In diesem Versuch werden die Auswirkungen der Koeffizientenquantisierung auf das Übertragungsverhalten digitaler Filter untersucht. Dabei wird nach FIR- und IIR-Filtern unterschieden, da letztere wegen ihrer rekursiven Struktur fehleranfälliger sind. Die Arithmetikfehler werden im nächsten Versuch behandelt. Tabelle 17-1
Vergleich der Festkomma- und Gleitkomma-Architektur für Signalprozessoren Festkomma-Architektur
Gleitkomma-Architektur
kleiner
größer
Dynamik Präzision Skalierung Befehlssatz (Assembler) Optimierungsmöglichkeiten Entwicklungszeit
konstant
exponentenabhängig
meist erforderlich
meist nicht erforderlich
einfacher größer meist größer
umfangreicher kleiner meist kleiner
größer kleiner kleiner
kleiner größer größer
Geschwindigkeit Energieverbrauch Preis Sonstiges
spezielle Architekturmerkmale zur Software von PCs und ArbeitsVermeidung von Arithmetikfehlern, platzrechnern auf den DSP leichter wie z. B. Sättigungskennlinien, Akkuportierbar mulatoren mit vergrößerter Wortlänge
17.3
FIR-Filter mit quantisierten Koeffizienten
17.3.1
Fehlermodell und Fehlerfrequenzgang
Bei einem nichtrekursiven Filter der Ordnung N sind die Filterkoeffizienten gleich der Impulsantwort, siehe Bild 17-1. Die Quantisierung der Koeffizienten wirkt sich direkt auf die Impulsantwort und damit auf die Übertragungsfunktion und den Frequenzgang aus. Fasst man den Effekt der Koeffizientenquantisierung als additive Störgröße hd[n] auf h[n]
> h[n]@Q hd [n]
(17.1)
so resultiert das Modell einer Parallelschaltung aus dem nichtquantisierten System und dem Fehlersystem wie in Bild 17-2. Wegen der Additivität linearer Systeme gilt für den Frequenzgang des quantisierten Systems, dem Fehlerfrequenzgang,
H Q e j:
H e j : H d e j:
(17.2)
188
17 Reale digitale Filter: Koeffizientenquantisierung
D
x[n] h0
D
D h1
D hN-1
hN
y[n] Bild 17-1 FIR-Filter in transversaler Struktur
Bei einer Realisierung im Festkomma-Format liegen meist Zahlen im Zweierkomplement-Format vor. Sie beschränkt den Zahlenbereich auf Werte zwischen 1 und 1LSB. Der maximale Quantisierungsfehler beträgt bei Runden LSB/2.
h[n] x[n]
y[n] hd[n]
Damit kann die Abweichung vom Frequenzgang aufgrund der Koeffizientenquantisierung abgeschätzt wer- Bild 17-2 Parallelschaltung aus nichtden. Eine obere Schranke für die Abweichung des Bequantisiertem System und tragsfrequenzgangs liefert die Annahme, dass sich alle Fehlersystem Quantisierungsfehler der Koeffizienten ungünstig überlagern. Bei einer Quantisierung der Koeffizienten mit der Wortlänge w in Bit und Runden ergibt sich demzufolge
max H d e j: :
d ( N 1)
Q 2
( N 1) 2 w bit
(17.3)
Die Abschätzung erweist sich bei realen Anwendungen wie in der Versuchsdurchführung als pessimistisch. Die Fehler durch die Quantisierung der Koeffizienten kompensieren sich zum Teil. Anmerkung: Realistischere Abschätzungen in der Literatur berücksichtigen diesen Effekt. Sie fußen auf stochastischen Modellen für die Quantisierungsfehler.
Wird das Zweierkomplement-Format verwendet, ist der Wertebereich der Signale und inneren Größen des Systems zwischen –1 und 1–LSB begrenzt. Um kritische Überläufe zu vermeiden, werden häufig die Betragsfrequenzgänge auf den Maximalwert eins skaliert.
max H e j: :
1
(17.4)
Dann wird keine Frequenzkomponente des Eingangssignals verstärkt. Die Überlagerung unterschiedlich phasenverschobener Frequenzkomponenten im System kann jedoch zu Überläufen führen.
17.3.2
Vorbereitende Aufgaben
A17.1
Bei der Versuchsdurchführung sind Filterkoeffizienten zu quantisieren. Geben Sie die MATLAB-Befehlszeile an, die eine Zahl x mit –1 d x d 1–LSB auf den Dezimalwert xq mit Runden umrechnet. Verwenden Sie das Zweierkomplement-Format mit der Wortlänge w in Bit.
17.3 FIR-Filter mit quantisierten Koeffizienten
189
xq = A17.2
Geben Sie für die Filterordnung N = 20 die obere Schranke (17.3) für die Betragsfrequenzgangsabweichung bei Koeffizientenquantisierung in Tabelle 17-2 an. Sind die Abschätzungen beim Entwurf selektiver Filter mit vorgegebenem Toleranzschema hilfreich? Tabelle 17-2 Abschätzung der maximalen Frequenzgangsabweichung Wortlänge w
8 bit
16 bit
Quantisierungsintervallbreite Q max. Frequenzgangsabweichung (17.3)
A17.3
Überlegen Sie, ob durch die Koeffizientenquantisierung die lineare Phase eines FIRFilters verloren geht?
17.3.3
Versuchsdurchführung
M17.1
Zum Toleranzschema in Bild 17-3 wurde ein Tiefpass mit dem MATLAB-Werkzeug fdatool entworfen. Die ersten elf Koeffizienten der Impulsantwort sind in Tabelle 17-3 aufgelistet. Beachten Sie die gerade Symmetrie der Impulsantwort, h[10+l] = h[10l] für l = 1:10. Hinweise: (i) Der Einfachheit halber wurde auf die Skalierung der Koeffizienten (17.4) verzichtet und soll auch im Weiteren nicht vorgenommen werden. (ii) Die Quantisierung geschieht im Zweierkomplement-Format, siehe Programm qant2c. (iii) Verwenden Sie das MATLAB-Werkzeug fdatool zur Darstellung des Frequenzgangs.
2GD = 0.04
H(ej:) 1 0.8 0.6 0.4 0.2
2GS = 0.008
0 -0.2
0
:D /S = 0.2
0.6
0.4 = :S /S
0.8
1
:/S
Bild 17-3 Toleranzschema zum Entwurf des FIR-Tiefpasses
190
17 Reale digitale Filter: Koeffizientenquantisierung Ergänzen Sie die fehlenden Angaben in Tabelle 17-3. Wird das Toleranzschema erfüllt? Vergleichen Sie den maximalen Betragsfehler mit der Abschätzung (17.3). Stellen Sie den Betragsfrequenzgang des Fehlersystems grafisch dar. Ist das Toleranzschema einzuhalten, wenn nun die Wortlänge von 16 Bits für die Koeffizienten verwendet wird?
Tabelle 17-3 Impulsantworten zum FIR-Tiefpass nach Bild 17-3 n
Equiripple-FIR-Design, h[n]
0
0.0053550324027329
1
0.0139252761666236
2
0.0138426203120336
3
0.0006013881525067
4 5 6 7 8 9 10
-0.0270680866303979 -0.0464638606004227 -0.0299911366983514 0.0402928874209767 0.1478574839153128 0.2473483028343785 0.2876134986960902
Wortlänge 8 bit, [h[n]]Q
Fehlersystem, hd[n]
0.0234375 0.0468750 0.0312500 0.0390625 0.1484375 0.2500000 0.2890625
0.0036306 0.0004111 0.0012589 0.0012304 0.0005800 0.0026517 0.0014490
17.4
IIR-Filter mit quantisierten Koeffizienten
17.4.1
Kaskadenform
Die direkte Umsetzung der Übertragungsfunktion eines IIR-Filters H ( z)
b0 b1 z 1 " bN z N
a0 a1 z 1 " a N z N
(17.5)
führt beispielsweise auf die in Bild 17-4 gezeigte Struktur, die transponierte Direktform II. Sie zeichnet sich durch die minimal mögliche Zahl von Additionen und Multiplikationen aus und wird deshalb häufig eingesetzt. Theoretische Überlegungen und praktische Erfahrungen zeigen, dass die Realisierung als Kaskade von Blöcken 2. Ordnung H ( z)
H1 ( z ) H 2 ( z ) " H K ( z )
(17.6)
relativ robust gegenüber Wortlängeneffekten ist. Man zerlegt dabei das System in hintereinander geschaltete Teilsysteme 2. Ordnung und gegebenenfalls 1. Ordnung, falls einzelne reelle Pole auftreten. Man spricht dann von der Kaskadenform, siehe Bild 17-5.
17.4 IIR-Filter mit quantisierten Koeffizienten
191
x[n] bN
b2
bN1
D
b1
b0
D aN1
aN
y[n]
D
a2
a1
Bild 17-4 IIR-Filterstruktur in transponierter Direktform II (a0 = 1)
x[n]
H2(z)
H1(z)
HK(z)
y[n]
Bild 17-5 Kaskadenform mit Teilsystemen 1. und 2. Ordnung
Die Aufteilung der Pole und Nullstellen auf die Teilsysteme und deren Skalierungen sind für die technische Realisierung nicht beliebig. Häufig wird auf eine Optimierung verzichtet, da eine einfache Faustregel wie sie auch in MATLAB im Befehl cplxpair realisiert ist – brauchbare Resultate liefert. Der Einfachheit halber gehen wir von konjugiert komplexen Pol- und Nullstellenpaaren aus. Die Faustregel zur Aufteilung der Pole und Nullstellen auf die Teilsysteme wird in Bild 17-6 veranschaulicht. Leitgedanke dabei ist es, den Einfluss der Pole und Nullstellen auf die Frequenzgänge der Teilsysteme möglichst auszugleichen. Pol-Nullstellen-Aufteilung für die Kaskadenform (Faustregel) ) Es wird das zum Einheitskreis am nächsten liegende, konjugiert komplexe Polpaar mit dem zu ihm am nächsten liegenden, konjugiert komplexen Nullstellenpaar zusammengefasst. ) Das Zusammenfassen wird für die verbleibenden Pole und Nullstellen entsprechend dem ersten Schritt wiederholt bis alle Pole und Nullstellen erfasst sind. ) Die Teilsysteme 2. Ordnung werden in steigender oder fallender Reihenfolge des Zusammenfassens implementiert. Im(z)
Im(z)
z
a)
Im(z)
z
b)
1
Re(z)
z
c)
1
Re(z)
1
Re(z)
Bild 17-6 Gruppieren der Pole und Nullstellen in Blöcken 2. Ordnung für einen Cauer-Tiefpass
192
17.4.2
17 Reale digitale Filter: Koeffizientenquantisierung
Koeffizientenquantisierung und Polausdünnung
Im Weiteren wird exemplarisch einen einzelnen Block der Kaskadenform, ein reelles rekursives System 2. Ordnung mit konjugiert komplexem Polpaar und konjugiert komplexem Nullstellenpaar betrachtet. zf1
Uf e jMf
zf 2 und z01
U0 e jM0
* z02
(17.7)
Eingesetzt in die Übertragungsfunktion erhält man b0 b1 z 1 b2 z 2
H ( z)
1 a1 z 1 a2 z 2
b0
1 2 U0 cos M 0 U02
(17.8)
1 2 Uf cos M f Uf2
Die Realisierung des Blockes 2. Ordnung im üblichen Zweierkomplement-Format erfordert die Quantisierung der Filterkoeffizienten. HQ ( z)
>b0 @ Q >b1 @ Q z 1 >b2 @ Q z 2 1 > a1 @ Q z 1 > a2 @ Q z 2
(17.9)
Wegen a1
2 Re zf1 und a2
zf1
2
(17.10)
wirkt sich die Quantisierung auf den Realteil und den Betrag der Pole aus. Für die Nullstellen gilt entsprechendes. Im wichtigen Fall stabiler kausaler Systeme liegen alle Pole innerhalb des Einheitskreises. Demzufolge gilt für die Beträge der Nennerkoeffizienten (17.11)
0 d a1 2 und 0 a2 1
so dass a1 den Zahlenbereich des Zweierkomplement-Formats überschreiten kann. Während die Zählerkoeffizienten durch geeignete Skalierung stets betragsmäßig kleiner eins gewählt werden können, muss für den Nenner anderweitig Abhilfe geschaffen werden. Die in Bild 17-7 gezeigte Struktur mit einer Aufspaltung der Multiplikation mit a1 in zwei Additionen vermeidet die Zahlenbereichsüberschreitung um den Preis einer zusätzlichen Addition. x[n] b1
b2
D a2
b0
D
y[n]
a1/2
Bild 17-7 Block 2. Ordnung für quantisierte Koeffizienten (transponierter Direktform II)
17.4 IIR-Filter mit quantisierten Koeffizienten
193
Für die für die Stabilität wichtigen Pole gilt ª a1 º « 2 » ¬ ¼Q
¬ª Re zf ¼º Q
und
> a2 @Q
ª Uf2 º ¬ ¼Q
(17.12)
Demzufolge sind nur diskrete Werte für den Realteil und den Betrag eines Pols möglich. Bild 17-8 zeigt die möglichen Lagen der komplexen Pole im ersten Quadranten für die Wortlänge von 5 Bits. 1 Im(z)
z
0.5
0
0.5
1
Re(z)
Bild 17-8 Mögliche Lagen der komplexen Pole (x) im ersten Quadranten der z-Ebene für w = 5 bit
Aus Bild 17-8 ist ersichtlich, dass sich die Lage der Pole durch die Quantisierung meist verschiebt, so dass der Frequenzgang gegenüber dem Entwurf erheblich verändert werden kann. Besonders augenfällig ist die Ausdünnung der möglichen komplexen Pole um die reelle Achse, die Polausdünnung. Weil bei schmalbandigen Tiefpässen die Polwinkel im Durchlassbereich um die Null liegen, also die Pole in der Nähe von z = 1, macht sich bei ihnen die Koeffizientenquantisierung besonders ungünstig bemerkbar. Das Sperrverhalten bei dem es vor allem auf die Nullstellen ankommt ist weniger empfindlich. Die Nullstellen auf dem Einheitskreis bleiben auch nach der Quantisierung dort. Nur ihre Phasen verschieben sich gegebenenfalls. Nach der Quantisierung bleiben die Pole des Blockes 2. Ordnung stets im Einheitskreis. Das System ist stabil. Bei einer Implementierung in der Direktform II nach Bild 17-4 ist dies nicht sichergestellt. Sind die Auswirkungen der Quantisierung der Koeffizienten nicht mehr vernachlässigbar, so sind verschiedene Gegenmaßnahmen möglich: Berücksichtigung der Koeffizientenquantisierung bereits beim Entwurf; Optimierung der Wortlängenverkürzung; Implementierung des Filters in einer unempfindlicheren Struktur (Normalform, Leiterstruktur, Wellendigitalfilter) [Fet86], [RoMu87], [Sch08], [Wer08a].
194
17 Reale digitale Filter: Koeffizientenquantisierung
17.4.3
Vorbereitende Aufgaben
A17.4
In der Versuchsdurchführung sollen Sie die Schritte vom Toleranzschema bis zum IIR-Filter mit quantisierten Koeffizienten in MATLAB selbständig durchführen. Zur Vorbereitung machen Sie sich mit dem folgenden Entwurfsbeispiel in fünf Schritten vertraut. c Entwurfsvorgaben Toleranzschema und Filterprototyp Cauer-Filter GD = 0.05
|HTP(ej:)| 1
GS = 0.001
0.02 0
:
:D = 0.3S 0.4S = :S
S
Bild 17-9 Toleranzschema zum Tiefpassentwurf
d Filterentwurf MATLAB-Werkzeug fdatool
Mit dem MATLAB-Werkzeug fdatool wird ein Cauer-Tiefpass zum Toleranzschema in Bild 17-9 entworfen. Das Ergebnis ist in Bild 17-11 zu sehen. Über den Menü-Punkt File ) Export werden die Filterdaten in den Workspace geladen, siehe Bild 17-10. Danach befinden sich im Arbeitsspeicher die beiden Variablen SOS und G. Die Variable SOS enthält die Filterkoeffizienten der Teilblöcke 2. Ordnung (Second Order System) für die Kaskadenform des IIR-Tiefpasses. Und die Variable G beschreibt die Gewichtsfaktoren (Gain) der Teilblöcke und des Gesamtsystems. Im Beispiel ergeben sich die Zahlenwerte in Tabelle 17-4. Bild 17-10 Menü Export Tabelle 17-4
Filterparameter des Cauer-Tiefpasses nach Bild 17-9 und Bild 17-11 (fdatool)
SOS =
1.0000 1.0000 1.0000
G =
0.0075 1.0000 1.0000 1.0000
+1.4010 -0.1237 -0.5911
1.0000 1.0000 1.0000
1.0000 1.0000 1.0000
-1.3316 -1.1877 -1.1105
0.5005 0.7129 0.9147
17.4 IIR-Filter mit quantisierten Koeffizienten
195
Bild 17-11 Tiefpassentwurf mit dem MATLAB-Werkzeug fdatool zum Toleranzschema in Bild 17-9
Die Angaben in Tabelle 17-4 entsprechen einem IIR-Filter in Kaskadenform H ( z)
G H1 ( z ) H 2 ( z ) H 3 ( z ) mit G = G(1)
(17.13)
Die Teilsysteme sind definiert durch Hi ( z)
b b z 1 b2i z 2 Gi 0i 1i a0i a1i z 1 a2i z 2
mit
Gi = G(1+i)
und
b0i = SOS(i:1), b1i = SOS(i:2), b2i = SOS(i:3)
(17.14)
a0i = SOS(i:4), a1i = SOS(i:5), a2i = SOS(i:6) Die Koeffizienten der Teilsysteme sind zeilenweise in der Matrix SOS abgelegt. Die 4. Spalte von SOS enthält die stets auf eins normierten Koeffizienten a0i.
196
17 Reale digitale Filter: Koeffizientenquantisierung e Quantisierung der Koeffizienten im Zweierkomplement-Format
Bei der Quantisierung der Koeffizienten sind die Gewichtsfaktoren zu beachten. Dabei sind zwei gegensätzliche Effekte zu berücksichtigen. Grundsätzlich sollte das Eingangssignal möglichst wenig abgeschwächt werden und die Gewichte zum Ausgang hin möglichst klein sein, um das in den Teilsystemen aufgrund von Wortlängeneffekten entstehende innere Geräusch möglichst wenig zu verstärken. Andererseits besteht bei zu hoher Aussteuerung des Eingangssignals die Gefahr von Überläufen und damit gravierenden nichtlinearen Störeffekten. Eine optimale Aufteilung der Gewichtsfaktoren erfordert eine Analyse, die den hier abgesteckten Rahmen sprengen würde. Deshalb werden vereinfachend, die Gewichte gleichmäßig auf die Teilsysteme übertragen. Zu beachten ist ferner, dass die Koeffizient a1i entsprechend Bild 17-7 und (17.12) zu quantisieren sind. Für die Modellüberlegungen wurden die Koeffizienten a1i durch zwei geteilt, quantisiert und danach wieder mit zwei multipliziert. Das Ergebnis der Quantisierung ist in Tabelle 17-5 zusammengefasst. Es enthält die skalierten Koeffizienten vor der Quantisierung SOSg und die quantisierten Koeffizienten bei 8-Bit-Wortlänge SOSq. Anmerkung: Die Skalierung und Quantisierung wurde mit dem Programm quant2cIIR durchgeführt, welches das Programm quant2c verwendet. Tabelle 17-5 Skalierte (g) und quantisierte (q) Koeffizienten der Teilsysteme zum CauerTiefpass SOSg =
0.1961 0.1961 0.1961
+0.2747 -0.0243 -0.1159
0.1961 0.1961 0.1961
1.0000 1.0000 1.0000
-1.3316 -1.1877 -1.1105
0.5005 0.7129 0.9147
SOSq =
0.1953 0.1953 0.1953
+0.2734 -0.0234 -0.1172
0.1953 0.1953 0.1953
1.0000 1.0000 1.0000
-1.3281 -1.1875 -1.1094
0.5000 0.7109 0.9141
f Überprüfung des Ergebnisses
Zur Überprüfung des Betragsfrequenzgangs des quantisierten Systems wird das MATLAB-Werkzeug fdatool eingesetzt. Die Koeffizienten in SOSq werden über den Menü-Punkt File ) Import Filter from Workspace an fdatool übergeben. Das Gewicht Gain wird zu 1 gesetzt. Bild 17-12 zeigt die Einstellungen. Das quantisierte System weicht im Durchlassbereich deutliche vom Wunschbetragsfrequenzgang ab. Statt des Maximalwertes 1 wird nur noch der Wert von fast 0.98 erreicht. Die Abweichung im Durchlassbereich beträgt ca. 0.06; gefordert sind 0.05. Ein Blick auf den Sperrbereich (nicht in Bild 17-12) ergibt eine maximale Degradation der Sperrdämpfung von etwa 0.5 dB bei der normierten Kreisfrequenz 0.43. Alles in allem, erweist sich der entworfene IIR-Tiefpass relativ robust gegenüber der Quantisierung der Koeffizienten in Kaskadenform auf nur 8 Bits.
17.4 IIR-Filter mit quantisierten Koeffizienten
197
Bild 17-12 Untersuchung des auf 8-Bit-Wortlänge quantisierten Cauer-Tiefpasses (SOSq) mit dem MATLAB-Werkzeug fdatool
g Vergleich mit dem Gesamtsystem in Direktform II.
Mit dem MATLAB-Befehle sos2tf(SOS,G(1)) wird die Polynomdarstellung der Übertragungsfunktion mit den Zählerkoeffizienten b und Nennerkoeffizienten a berechnet. Die Koeffizienten des Gesamtsystems sind in Tabelle 17-6 zusammengestellt. Die Nennerkoeffizienten überschreiten den im Zweierkomplement-Format darstellbaren Zahlenbereich. Eine direkte Umsetzung ist nicht möglich. Tabelle 17-6 Zähler- und Nennerkoeffizienten des Cauer-Tiefpasses in Direktform II b = 0.0075
0.0052
0.0156
0.0111
0.0156
0.0052
0.0075
a = 1.0000
-3.6299
6.5075
-6.9521
4.6278
-1.8083
0.3264
198
17 Reale digitale Filter: Koeffizientenquantisierung
17.4.4
Versuchsdurchführung
M17.2
Entwerfen Sie mit dem MATLAB-Programm fdatool einen Chebyshev-II-Tiefpass mit den Vorgaben des Toleranzschemas: :D = 0.04S
GD = 0.02
:S = 0.1S
GS = 0.0001
Stellen Sie das Pol-Nullstellendiagramm und den Betragsfrequenzgang grafisch dar. Das System soll in Kaskadenform mit Blöcken 1. und 2. Ordnung mit der Wortlänge 8 Bits oder 16 Bits realisiert werden. Führen Sie die dazu notwendigen Schritte durch. Erfüllt das in Kaskadenform realisierte Filter für die Wortlänge w = 8 bzw. 16 bit die Entwurfsspezifikationen? Bestimmen Sie zum 8-Bit-quantisiererten System das Pol-Nullstellendiagramm und vergleichen Sie es mit dem des nichtquantisierten Systems.
Hinweise zu MATLAB-Funktionen und M-Files Im Folgenden werden für die Versuchsdurchführung nützliche MATLAB-Befehle und -Funktionen aufgelistet, zu denen Sie sich mit Hilfe der Help-Funktion Erläuterungen und Beispiele am Bildschirm anzeigen lassen können, siehe auch vorherige Versuche. Tabelle 17-7 MATLAB-Befehle benutzte Programme und Dateien Spezielle Befehle
load, sos2tf, save
MATLAB-Programme
fdatool, fvtool
Þ Online-Ressourcen
quant2c.m, quant2cIIR.m
199
18
Reale digitale Filter: Quantisierte Arithmetik
18.1
Einführung
In diesem Versuch werden die Auswirkungen der begrenzten Wortlänge bei den arithmetischen Operationen innerhalb der digitalen Filter behandelt. Während die Quantisierung der Koeffizienten die Übertragungsfunktion ändert und prinzipiell schon im Filterentwurf berücksichtigt werden kann, treten die Wortlängeneffekte bei den arithmetischen Operationen während des Betriebes auf. Lernziele Nach Bearbeiten dieses Versuches können Sie y
das Überlaufverhalten der Addition anhand der Zweierkomplement-Überlaufkennlinie und der Sättigungskennlinie erläutern
y
die Vor- und Nachteile der Wortlängenverkürzung durch Runden und Betragsabschneiden nennen
y
die Entstehung kleiner Grenzzyklen erklären und ihre Auswirkungen auf das Verhalten der Systeme abschätzen
y
die Entstehung großer Grenzzyklen erläutern und ihre Auswirkungen auf das Verhalten der Systeme abschätzen
y
den Effekt des inneren Rauschens erklären
y
ein Blockschaltbild zur Schätzung der Leistung des inneren Rauschens skizzieren und erläutern
y
die Anwendung digitaler Filter unter realistischen Bedingungen beurteilen und kritische Fehler vermeiden
18.2
Quantisierte Arithmetik
Lineare digitale Filter setzen sich aus drei unterschiedlichen Bausteinen zusammen: Verzögerungsgliedern, Addierern und Multiplizierern. Da die Rechenergebnisse auf die zur Verfügung stehenden Maschinenzahlen abgebildet werden müssen, sind die Additionen und die Multiplikationen durch die Quantisierung betroffen.
18.2.1
Addition Überlauf und große Grenzzyklen
Das Zweierkomplement-Format ist in der digitalen Signalverarbeitung sehr verbreitet, da die Addition bitweise mit einem einfachen Übertrag erfolgt, und so einfache Addierschaltungen möglich werden. Bei der Addition im Zweierkomplement-Format kann es jedoch zu einem Übertrag in die höchste Stelle kommen, die für die Darstellung des Vorzeichens reserviert ist. Wie im Beispiel in Tabelle 18-1 gezeigt, tritt dann ein Überlauf auf. Das Überlaufverhalten wird durch die Überlaufkennlinie in Bild 18-1 oben charakterisiert. An ihr lassen sich auch die Beispiele in Tabelle 18-1 nachvollziehen.
200
18 Reale digitale Filter: Quantisierte Arithmetik
1 ZweierkomplementÜberlaufkennlinie
1
[x]Q
0
x
1
1 1 Sättigungskennlinie
1
[x]Q
0
x
1
1 Bild 18-1 Kennlinien der Addition
Die Addition wird bei einer Übersteuerung zu einer nichtlinearen Operation. Wie im Versuch zu beobachten ist, kann der Überlauf von einem Ende des Zahlenbereichs in den anderen zu großen Grenzzyklen, auch Überlaufschwingungen genannt, führen. Die Signalverarbeitung wird dadurch unbrauchbar. Als Gegenmaßnahme werden u. a. Sättigungskennlinien wie die in Bild 18-1 unten verwendet: Bei einem positiven oder negativen Überlauf die größte bzw. die kleinste darstellbare Maschinenzahl gesetzt. Tabelle 18-1 Addition von zwei 8-Bit-Zahlen im Zweierkomplement-Format mit Überlaufkennlinie reell
quantisiert
reell
quantisiert
reell
quantisiert
x1
0.5 d
0100 00002c
0.5 d
0100 00002c
0.5 d
0100 00002c
x2
0.25 d
0010 00002c
0.5 d
0100 00002c
0.75 d
0110 00002c
x1 + x2
0.75 d
0110 00002c = 0.75 d
1.0 d
18.2.2
1000 00002c = 1 d
1.25 d
1010 00002c = 0. 75d
Multiplikation Inneres Rauschen und kleine Grenzzyklen
Bei der Multiplikation von Zweierkomplement-Zahlen kann es, ausgenommen 1 1 = 1, zwar nicht zu einem Überlauf kommen, jedoch erhöht sich im Allgemeinen die Zahl der benötigten Binärstellen. Multipliziert man zwei Zahlen mit n signifikanten Stellen der Mantisse, d. h. ohne Vorzeichen, so sind für die exakte Darstellung des Produktes 2n 1 Bits notwendig. Die Multiplikation von zwei Zahlen im Zweierkomplement-Format kann auf Digitalrechnern vorteilhaft auf Schiebeoperationen und Additionen zurückgeführt werden. Das Vorzeichen wird gesondert ausgewertet. Das Beispiel der beiden Zweierkomplement-Zahlen x1 = 0.5078125d = 21 + 27 = 0100 00012c und x2 = 0.0078125d = 27 = 0000 00012c
18.2 Quantisierte Arithmetik
201
liefert eine um 7 Binärstellen nach rechts verschobene Zweierkomplement-Zahl mit 14 signifikanten Binärstellen x1 x2 = 0.00396728515625d = 28 + 214 = 0000 0001 0000 00102c Vor der Weiterverarbeitung des Produktes, z. B. bei Zwischenspeicherung, muss in der Regel eine Wortlängenverkürzung vorgenommen werden. Damit wird auch die Multiplikation auf Digitalrechnern zu einer nichtlinearen Operation. Zwei gängige Methoden der Wortlängenverkürzung sind das Runden und das Betragsabschneiden. Die zugehörigen Kennlinien sind in Bild 16-2 dargestellt. Man beachte, dass beim Betragsabschneiden die Wortlängenverkürzung stets hin zu null erfolgt, d. h. der Betrag einer Zahl durch die Quantisierung nicht zunehmen kann. Anmerkungen: (i) Manche Signalprozessoren unterstützen spezielle Algorithmen zum Runden, z. B. das konvergente Runden um einen Bias zu vermeiden. (ii) MATLAB besitzt für das Runden die vier Befehle ceil, floor, fix (Betragsabschneiden, englisch Sign-magnitude Truncation) und round.
Die Quantisierung mit Runden wirkt durch das Aufrunden wie eine zusätzliche Signalquelle, die dem System Energie zuführt. Es können kleine Grenzzyklen entstehen: Am Systemausgang tritt ein periodisches Signal in der Größenordnung von wenigen Quantisierungsintervallbreiten auf, obwohl das Eingangssignal längst abgeklungen ist. Anmerkung: Die kleinen und großen Grenzzyklen werden ihrer Entstehung nach auch Quantisierungsgrenzzyklen bzw. Überlaufgrenzzyklen genannt [KaKr06]. In der englischen Literatur werden die Bezeichnung granular limit cycles und zero-input limit cycles bzw. overflow limit cycles und overflow oscillations verwendet.
Beim Betragsabschneiden wird dem System keine zusätzliche Energie zugeführt. Kleine Grenzzyklen werden um den Preis einer größeren Ungenauigkeit meist vermieden.
[x]Q
[x]Q
Runden
Betragsabschneiden
1/2
1
2Q
2Q
x 1
1
1/2
x
2Q
2Q
1/2
1/2
1
1
1
Bild 18-2 Quantisierungskennlinien für das Runden und das Betragsabschneiden mit Quantisierungsintervallbreite Q und Repräsentanten
für w = 3 bit
In den meisten Fällen, z. B. bei einem Audiosignal und einer Signalaussteuerung über mehrere Quantisierungsintervalle hinweg, können die Fehler der Wortlängenverkürzung an einer Multiplikationsstelle in guter Näherung als unkorreliertes additives Rauschsignal modelliert werden. Im Fall des Rundens spricht man dann vom Rundungsrauschen, in der Audiotechnik auch von Rundungsgeräusch. Bild 18-3 zeigt das Ersatzschaltbild für die Multiplikation mit Wortlängenverkürzung. Mit der Annahme, dass das Rundungsrauschen im Intervall [Q/2, Q/2] gleich-
202
18 Reale digitale Filter: Quantisierte Arithmetik
verteilt ist, ergibt sich seine Leistung, weil mittelwertfrei auch die Varianz, aus der Quantisierungsintervallbreite Q = 2(w/bit1) zu
V r2
Q2 12
1 2 w bit 2 3
(18.1)
Die Analyse der Wortlängeneffekte bei Systemen höherer Ordnung ist aufwändig. Der Einfachheit halber und weil die IIR-Systeme in der Regel in der Kaskadenform realisiert werden, werden im Versuch die Wortlängeneffekte an Blöcken 2. Ordnung untersucht. In einem Block 2. Ordnung in Direktform II treten pro Zeittakt bis zu fünf Multiplikationen auf. Mit der Annahme, dass die Rauschsignale unabhängig sind, können die an einer Additionsstelle zusammengeführten Rauschsignale zusammengefasst werden. Wegen der Unabhängigkeit addieren sich die Leistungen. Man erhält das Ersatzschaltbild Bild 18-4. Beachten Sie, dass sich wegen der zweifachen Addition die Varianz des Rundungsrauschens bzgl. des Koeffizienten a1 vervierfacht.
x[n] Rauschquelle r[n]
b
Vr2
y[n] = b x[n] + r[n] Bild 18-3 Ersatzschaltbild für die Multiplikation mit Wortlängenverkürzung durch Runden
x[n] 2Vr2
b2
5Vr2
b1
D a2
Vr2
D
b0
y[n]
a1/2
Bild 18-4 Lineares Ersatzschaltbild für einen Block 2. Ordnung mit Rundungsrauschen
Das am Systemausgang beobachtbare Rauschsignal aller inneren Quellen wird inneres Geräusch bzw. Rauschen genannt. Bei dessen Analyse wird davon ausgegangen, dass durch eine geeignete Signalaussteuerung in den Teilblöcken keine Überläufe auftreten. Für ein so linearisiertes System höherer Ordnung kann das Leistungsdichtespektrum des inneren Rauschens am Systemausgang berechnet und die rauschoptimale Konfiguration von Polen und Nullstellen in den Teilblöcken der Kaskadenform analytisch bestimmt werden [RoMo87], [Wer08a]. Das lineare Ersatzschaltbild Bild 18-4 ermöglicht eine quantitative Abschätzung des inneren Rauschens am Systemausgang. Das Einspeisen der Rauschersatzquellen kann wie in Bild 18-5 als Rauscherregung eines Systems 2. Ordnung mit nur rekursiven Zweigen aufgefasst werden.
18.2 Quantisierte Arithmetik
203 Rauschquelle Vr2
D
yr[n]
D
a2
Inneres Rauschen
a1
Bild 18-5 Lineares Ersatzschaltbild für einen Block 2. Ordnung mit Rundungsrauschen
Mit den für das Runden gemachten Annahmen eines im Quantisierungsintervall gleichverteilten und unkorrelierten Rauschsignals, ergibt sich mit (18.1) für die Rauschleistung am Systemausgang
V y2
r
Q2 Ri,0 12
(18.2)
mit der Rauschzahl Ri,0 des Ersatzsystems in Bild 18-5. Die Rauschzahl beschreibt die Verstärkung des Rundungsrauschens durch die Rückkopplung im System. Entsprechend den Überlegungen in Versuch 15.2, Tabelle 15-1, ist die Rauschzahl gleich der Energie der Impulsantwort des Ersatzsystems in Bild 18-5. Es gilt allgemein f
Ri ,0
¦ hi [n]
n 0
2
1 2S j
v³
dzz
H i ( z ) H i z 1
z 1
(18.3)
Die Berechnung kann entweder über die Autokorrelationsfolge, siehe Abschnitt 15, oder mit der komplexen Umkehrformel (18.3) erfolgen. Letzteres liefert die übersichtlichere Formel Ri,0
1 a2 (1 a2 ) ª (1 a2 )2 a12 º ¬ ¼
(18.4)
wobei die Koeffizienten nach ihrer Quantisierung einzusetzen sind. Die numerische Auswertung der Formel liefert einen interessanten Zusammenhang zwischen der Lage des konjugiert komplexen Polpaares in der z-Ebene und der Rauschzahl, siehe auch (17.12) mit a2 = Uf2 und a1 = 2 Re(zf). Bild 18-6 zeigt das Ergebnis: Die Rauschzahl nimmt mit wachsender Nähe der Pole zum Einheitskreis und zur reellen Achse zu. Schmalbandige Tief- und Hochpässe sind demzufolge von innerem Rauschen besonders betroffen. Die Wirkung aller inneren Rauschquellen des Systems fasst die die Rauschzahl Ri zusammen. So berücksichtigt beispielsweise die Zahl der Rauschquellen NQ = 8 das Aufspalten des Koeffizienten a1 in Bild 18-4. Mit der Varianz des Rundungsrauschens ergibt sich schließlich die Abschätzung der Leistung des inneren Rauschens am Systemausgang. Ni
Q2 NQ Ri,0
12 Ri
Q2 Ri 12
(18.5)
204
18 Reale digitale Filter: Quantisierte Arithmetik
35 Ri,0 in dB 25 20 15
a1 entfällt für Uf = 0.95 :f = 90°
10
0.9 5
0.8 0.6
0 0
20
40
60
80
100 120
:f in Grad 180
Bild 18-6 Rauschzahl Ri,0 eines reellwertigen Systems 2. Ordnung in Abhängigkeit von dem Betrag Uf und der Phase :f des Polpaares
Um die Bedeutung des inneren Rauschens zu verdeutlichen sei eine ungünstige Rauschzahl von Ri = 30 dB angenommen, siehe Bild 18-6. Dann wird die Rauschleistung aufgrund der Wortlängenverkürzung Q2/12 um den nicht unerheblichen Faktor 1000 verstärkt. Nach der 6dB-pro-Bit-Regel (16.19) entspricht das einem Verlust von etwa 5 Bit an Wortlänge (Präzision). Zur Abschätzung der Störung durch das innere Rauschen beachte man, dass die Zahl der Rauschquellen sowohl von der tatsächlichen Implementierung als auch der Wahl der Koeffizienten abhängt. So ist bei einem Polwinkel von 90° der Koeffizient a1 = 0. In diesem Fall sind nur NQ = 4 Rauschquellen wirksam. Die Rauschzahl in (18.5) nimmt sprunghaft um den Faktor 2, oder äquivalent um 3dB, ab.
18.2.3
Ersatzschaltbild für einen Block 2. Ordnung
Zum Abschluss werden die Überlegungen zu den Wortlängeneffekten der Multiplikation und der Addition in Bild 18-7 zusammengeführt. Man beachte, dass der Block 2. Ordnung durch die Sättigungskennlinien, oder alternativ durch die Zweierkomplement-Überlaufkennlinien, im Falle eines Überlaufes nicht mehr linear ist. Wichtig ist ferner anzumerken: Durch die Wortlängeneffekte sind die in der Literatur angegebenen Filterstrukturen nicht mehr äquivalent. Je nachdem wo die Additionen und Multiplikationen im realen System auftreten, wirken sich die Wortlängeneffekte unterschiedlich aus. Anmerkung: Digitale Signalprozessoren besitzen meist spezielle Hardware-Komponenten, um die Störungen durch die quantisierte Arithmetik möglichst klein zu halten. So werden Akkumulatoren mit vergrößerter Wortlänge verwendet und eine automatische Überlauferkennung und Sättigungskennlinie unterstützt. Im Beispiel des Blockes 2. Ordnung in Bild 18-7 könnten durch zwei Überlaufbits im Akkumulator die vier Additionen in der Mitte ohne Fehler dargestellt werden. Erst wenn das Ergebnis, der Wert der Zustandsvariablen s1[n] in den Speicher übertragen wird, wird die Wortlängenverkürzung, z. B. Sättigung bei Überlauf, angewendet.
18.3 Vorbereitende Aufgaben
205
x[n] 2Vr2
b2
b1
5Vr2
Vr2
D
b0
y[n]
D s2[n]
a2
s1[n] a1/2
Bild 18-7 Nichtlineares Ersatzschaltbild für den Block 2. Ordnung mit Rauschquellen zu den Multiplikationen und Sättigungskennlinien zur Additionen
18.3
Vorbereitende Aufgaben
A18.1
Kleiner Grenzzyklus Das Auftreten von kleinen Grenzzyklen wird am Block 2. Ordnung in Bild 18-8 veranschaulicht. Es wird angenommen: (i)
Die Rechnung erfolgt im Dezimalsystem, wobei auf die erste Nachkommastelle (Dezimale) gerundet wird, z. B. [0.27]Q = 0.3
(ii) Die Filterkoeffizienten sind a2 = 0.8 und a1 = 0.9 (iii) Zum Zeitpunkt n = 0 ist die Erregung x[n] abgeklungen, d. h. x[n] = 0 für n t 0. Zu diesem Zeitpunkt haben die Zustandsgrößen, die Speicher, die Werte s1[0] = 0.2 und s2[0] = 0.2. Bestimmen Sie die fehlenden Werte der Zustandsgrößen s1[n] und s2[n] in Tabelle 18-2 und tragen Sie die Werte in das Zustandsdiagramm Bild 18-9 ein.
s2[n]
x[n]
s1[n]
D
D
Runden
Runden
a2
a1
y[n]
Bild 18-8 Block 2. Ordnung mit Runden (a2 = 0.8, a1 = 0.9)
206
18 Reale digitale Filter: Quantisierte Arithmetik
Tabelle 18-2 Zustandsgrößen zu Bild 18-8 n
0
1
2
3
s1[n]
0.2
0
0.2
s2[n]
0.2
0.2
0.2
4
5
6
Nach sechs Takten stellen sich die Zustandsgrößen wieder ein. Es ergibt sich ein kleiner Grenzzyklus mit Periode 6. Da die Zustandsgröße s1[n] am Ausgang beobachtet wird ergibt sich das periodische Ausgangssignal in der Größe einiger LSB. s2 / LSB 4
2
4
0
2
2
2
n =1
4
s1 / LSB
n =0
4 Bild 18-9 Kleiner Grenzzyklus: Zustandsgrößen im Zustandsraumdiagramm (Block 2. Ordnung)
A16.2
Großer Grenzzyklus Ausgehend vom Block 2. Ordnung in Bild 18-10 soll das Entstehen großer Grenzzyklen nachvollzogen werden. Es wird angenommen: (i)
Die Rechnung erfolgt im Dezimalsystem. Nach der Multiplikation wird das Betragsabschneiden auf die erste Nachkommastelle, z. B. [0.27]Q = 0.2, eingesetzt
(ii) Für die Darstellung der Zustandsgrößen wird die Zweierkomplement-Überlaufkennlinie entsprechend Bild 18-1 oben verwendet (iii) Die Filterkoeffizienten sind a2 = 0.7 und a1 = 1.6 (iv) Zum Zeitpunkt n = 0 ist die Erregung x[n] abgeklungen, d. h. x[n] = 0 für n t 0. Und für die Zustandsgrößen, gelten die Werte s1[0] = 0.5 und s2[0] = 0.5. Bild 18-11 zeigt die ersten resultierenden Werte für die Zustandsgrößen. Zeigen Sie, dass ein großer Grenzzyklus entsteht.
18.3 Vorbereitende Aufgaben
207
Hinweis: Im Zeitschritt n = 10 wiederholen sich die Werte der Zustandsgrößen s1[10] = s1[2] und s2[10] = s2[2]. Da der Block für n > 0 nicht mehr von außen erregt wird, stellt sich am Ausgang ein Grenzzyklus mit Periode 8 ein.
s2[n]
ÜK
x[n]
s1[n]
D
ÜK
BA
BA
a2
a1/2
y[n]
D
Bild 18-10 Block 2. Ordnung mit Betragsabschneiden (BA) nach der Multiplikation und Überlaufkennlinie (ÜK) für die Zustandsgrößen (a2 = 0.7, a1 = 1.6)
s2 1
0.5
1
0
0.5
n=0
0.5
2
1
s1
3
0.5 1
1 Bild 18-11 Großer Grenzzyklus: Zustandsgrößen im Zustandsraumdiagramm (Block 2. Ordnung)
208
18 Reale digitale Filter: Quantisierte Arithmetik
A16.3-3 Leistung des inneren Rauschens Zur Bestimmung der Leistung des inneren Rauschens wird eine Vergleichsmessung wie in Bild 18-12 durchgeführt. Der Simulation wird ein reales quantisiertes System mit der Wortlänge w zugrunde gelegt. Als Eingangssignal wird eine zunächst in [1, 1] gleichverteilte unkorrelierte Zufallszahlenfolge verwendet. Worauf ist bei der Quantisierung und Skalierung des Eingangssignals zu achten, damit eine Schätzung des inneren Rauschens möglich wird? Welche Rolle spielt dabei der Skalierungsfaktor c?
Ideales System (IEEE 754-1985)
Digitale Rauschquelle gleichverteilt in [1, 1]
rand
Skalierungs- c faktor
Quantisiertes Rauschsignal
filter
yref[n] Inneres Rauschen
Q
w Wortlänge
HQ(z)
y[n]
Quantisiertes System unter Test
Bild 18-12 Schätzung der Leistung des inneren Rauschens
18.4
Versuchsdurchführung
M18.1
Kleiner Grenzzyklus Der Block 2. Ordnung in Bild 18-8 soll auf kleine Grenzzyklen untersucht werden. Hierzu ist bei Impulserregung und einer Wortlänge von 16 Bits für verschiedene Polwinkel jeweils das Ausgangssignal zu beobachten. Die Zählerkoeffizienten sind b0 = 0.9375, b1 = 0, b2 = 0, und der Pol ist gegeben durch U = 0 .95 und M = 0° ... 90°. Untersuchen Sie mit dem Programm dsplab16_1 und filt2_rc, siehe Programmbeispiele 16-1 und 16-2, ob kleine Grenzzyklen auftreten. Tragen Sie die Ergebnisse in Tabelle 18-3 ein. Hinweise: (i) Ein Überblick über die Funktion der Programme genügt. In der Versuchsdurchführung wird nur der Parameter phi im Programm dsplab16_1, wie in der Tabelle 18-3 vorgegeben, eingestellt. (ii) Die Ergebnisse schwanken stark für unterschiedliche Polwinkel und Amplituden der Erregung.
18.4 Versuchsdurchführung Tabelle 18-3
Polwinkel M
209
Beispiel für kleine Grenzzyklen in einem Block 2. Ordnung mit Runden der Multiplikationsergebnisse auf eine Wortlänge von 16 Bits bei Impulserregung mit kleiner Amplitude 16*LSB. Angegeben sind die kleinsten und größten Werte ymin bzw. ymax und die Periode der Grenzzyklen ymin / LSB
ymax / LSB
Periode
11
11
12
0° 30° 60° 90°
Wiederholen Sie die Untersuchungen des Blockes 2. Ordnung für die Arithmetik mit Betragsabschneiden und Sättigung, siehe Programm filt2_ts. Können kleine Grenzzyklen beobachtet werden?
Programmbeispiel 18-1 Untersuchung von Grenzzyklen in einem Block 2. Ordnung % Limit cycles due to round-off in 2nd order block with quantized % coefficients and fixed-point arithmetic % used functions: filt2_rc.m, filt2_ts.m % dsplab18_1.m * mw * 06/21/2008 w = 16; LSB = 2^(-w+1); % word length and LSB MODE = 'rc' % rounding, two's-complement overflow % MODE = 'ts' % truncation to zero, saturation arithmetic rho = 0.95; phi = 30*pi/180; % pole magnitude and phase N = 200; % number of simulation cycles % Filter parameters b = [.9375 0 0]; % numerator coefficients a = [1 -2*rho*cos(phi) rho^2]; % denominator coefficients si = [0; 0]; % initial values for state space variables bq = LSB*round(b/LSB); % quantized coefficients aq = [1 2*LSB*round((a(2)/2)/LSB) LSB*round(a(3)/LSB)]; % Input signal - impulse sequence - quantized xq = zeros(1,N); xq(1) = 16*LSB; % Referenz system : 2nd order block with MATLAB default arithmetic [yref,zref] = filter(bq,aq,xq,si); switch MODE % 2nd order block with fixed-point arithmetic case 'rc' [y,s,OC] = filt2_rc(bq,aq,xq,si,w); case 'ts' [y,s,OC] = filt2_ts(bq,aq,xq,si,w); otherwise disp('Unknow method: MODE') end fprintf('overflow counter = %g\n',OC) % Indicate overflow % Search for limit cycle
210
18 Reale digitale Filter: Quantisierte Arithmetik
fprintf('search for limit cycle\n') start = 0; period = 0; k = 1; while k<=N k = k+1; for m = k+1:N if s(:,k) == s(:,m) start = k; period = m-k; fprintf('limit cycle detected \n') fprintf('start : %g period : %g\n',start,period) k = N + 1; break end end end % Graphics FIG1 = figure('Name','dsplab16_1 : 2nd order block with quantized arithmetic',... 'NumberTitle','off','Units','normal','Position',[.40 .30 .45 .55]); subplot(2,1,1), plot(0:N-1,y/LSB,'o',0:N-1,yref/LSB,'x'); grid xlabel('{\itn} \rightarrow'); ylabel('{\ity}[{\itn}] / LSB \rightarrow') if start~=0 % limit cycle detected n1 = start; n2 = start + period; subplot(2,1,2) plot(s(1,n1:n2)/LSB,s(2,n1:n2)/LSB,'ro',s(1,n1:n2)/LSB,s(2,n1:n2)/LSB, 'b') grid; title(['limit cycle with periode ',num2str(period)]); xlabel('{\its}_1[{\itn}] / LSB \rightarrow') ylabel('{\its}_2[{\itn}] / LSB \rightarrow') else fprintf('no limit cycle detected\n') end
Programmbeispiel 18-2 Block 2. Ordnung mit Arithmetik im Zweierkomplement-Format % 2nd order block for IIR filter with quantization by % rounding and two's-complement overflow mode % - signals and filter coefficients in two's-complement format % [y,s,OC] = filt2_rc(b,a,x,si,w) % b : numerator coefficients [b0 b1 b2] % a : denominator coefficients [1 a1 a2] % x : input sequence % si : initial values for state space variables [s1 s2] % w : word length % y : output sequence % s : sequences of state space variables % s(1,:) = s1[n] and s(2,:) = s2[n] % OC : overflow counter % filt2_rc.m * mw * 02/01/2006 function [y,s,OC] = filt2_rc(b,a,x,si,w) LSB = 2^(-w+1); % least significant bit % Memory allocations N = length(x); s = zeros(2,N+1); y = zeros(1,N); OC = 0; % Two's-complement numbers s(:,1) = min(si',1-LSB); s(:,1) = max(s(:,1),-1); % initial values
18.4 Versuchsdurchführung
211
% Filtering with rounding and two's-complement overflow mode for n = 1:N % output signal y[n] = b0*x[n] + s1[n] with word length reduction b0x = LSB*round(b(1)*x(n)/LSB); y(n) = b0x + s(1,n); [y(n),OI] = overflow(y(n)); % two's-complement overflow OC = OC + OI; % state space variable 1 % s1[n+1] = b1*x[n] + s2[n] + 2*(-a1/2)*y[n] with word length reduction b1x = LSB*round(b(2)*x(n)/LSB); a1y = LSB*round((-a(2)/2)*y(n)/LSB); s(1,n+1) = b1x + s(2,n) + a1y + a1y; [s(1,n+1),OI] = overflow(s(1,n+1)); % two's-complement overflow OC = OC + OI; % state space variable 2 % s2[n+1] = b2*x[n] + (-a2)*y[n] with word length reduction b2x = LSB*round(b(3)*x(n)/LSB); a2y = LSB*round(-a(3)*y(n)/LSB); s(2,n+1) = b2x + a2y; [s(2,n+1),OI] = overflow(s(2,n+1)); % two's-complement overflow OC = OC + OI; end % Subfunction : two's-complement overflow detection % [xO,OI] = overflow(x) % x : input value % xO : two's-complement repesentation % OI : Overflow indicator (1: overflow, 0: no overflow) function [xO,OI] = overflow(x); xO = rem(x,2); OI = 0; if xO <-1 || xO >= 1 % two's-complement overflow xO = xO - 2*sign(xO); OI = 1; end
M18.2
Großer Grenzzyklus Wiederholen Sie die Messungen von vorhin mit den in Tabelle 18-4 angegebenen Impulsamplituden. Tragen Sie die Messresultate dort ein und diskutieren Sie das Ergebnis. Hinweis: Setzen Sie gegebenenfalls die Zahl der Simulationszyklen angemessen hoch. Wiederholen Sie die Untersuchungen des Blockes 2. Ordnung für die Arithmetik mit Betragsabschneiden und Sättigung, siehe Programm filt2_ts. Können große Grenzzyklen beobachtet werden?
212
18 Reale digitale Filter: Quantisierte Arithmetik
Tabelle 18-4 Beispiel für Grenzzyklen in einem Block 2. Ordnung mit Zweierkomplement-Überlauf und Runden der Multiplikationsergebnisse bei großer Impulserregung mit der Amplitude 0.75. Angegeben sind die kleinsten und größten Werte ymin bzw. ymax, und die Periode der Grenzzyklen für eine Wortlänge von 16 Bits. Polwinkel M
ymin / LSB
ymax / LSB
Periode
0° 30° 60° 90°
M18.3
Inneres Rauschen In diesem Versuchsteil soll die Leistung des inneren Rauschens eines Blockes 2. Ordnung geschätzt werden. In Bild 18-12 ist der prinzipielle Messaufbau gezeigt. Durch den Vergleich der Ausgangssignale eines idealen Systems (filter) und des realen Systems (filt2_rc) wird das innere Rauschen messbar. Voraussetzung ist, dass das reale System linear bleibt, d. h., keine Überläufe auftreten. Der Skalierungsfaktor c ist hierfür geeignet zu wählen. Führen Sie Simulationen zu den in Tabelle 18-5 und Tabelle 18-6 gegebenen Parametern durch und tragen Sie die Ergebnisse dort ein. Erklären Sie die Resultate. Erklären Sie insbesondere den Unterschied in den Ergebnissen für die Polwinkel 89° und 90°. Welcher Zusammenhang besteht zwischen der Leistung des inneren Rauschens und der Wortlänge in Tabelle 18-6?
Tabelle 18-5 Inneres Rauschen eines Blockes 2. Grades, siehe Bild 18-4, mit Zählerkoeffizienten b0 = 0.9375, b1 = b2 = 0, Polradius Uf = 0.95 und der Wortlänge von 16 Bits bei Wortlängenverkürzung durch Runden Polwinkel Mf Leistung des inneren Rauschens in dB 1
0°
30°
theoretisch1
80.0
geschätzt
80.3
siehe (18.4) und (18.5).
60°
89°
90°
18.4 Versuchsdurchführung
213
Tabelle 18-6 Inneres Rauschen eines Blockes 2. Ordnung, siehe Bild 18-4, mit Zählerkoeffizienten b0 = 0.9375, b1 = b2 = 0, Polradius Uf = 0.95, Polwinkel Mf = 30° und Wortlängenverkürzung durch Runden Wortlänge in Bits Leistung des inneren Rauschens in dB
10
12
14
16 80.1
Programmbeispiel 18-3 Untersuchung des inneren Rauschens eines Blocks 2. Ordnung % Estimation of round-off noise in 2nd order block with quantized % coefficients and fixed-point arithmetic % used functions: filt2_rc.m % dsplab18_2.m * mw * 06/22/2008 w = 16; LSB = 2^(-w+1); % word length rho = .95; phi = 0*pi/180; % pole magnitude and phase N = 1e5; % number of simulation cycles c = 2^(-w+8); % noise scaling factor % Filter parameters b = [.9375 0 0]; % numerator coefficients a = [1 -2*rho*cos(phi) rho^2]; % denominator coefficients si = [0; 0]; % initial values for state space variables bq = LSB*round(b/LSB); % quantized coefficients aq = [1 2*LSB*round((a(2)/2)/LSB) LSB*round(a(3)/LSB)]; % Input signal - noise x = 2*rand(1,N)-ones(1,N); % uniformly distributed in [-1,1] xq = LSB*round(c*x/LSB); % scaled and quantized input signal % Referenz system : 2nd order block with MATLAB default arithmetic [yref,sref] = filter(bq,aq,xq,si); % 2nd order block with fixed-point arithmetic [y,s,OC] = filt2_rc(bq,aq,xq,si,w); % rounding, two's-complement overflow fprintf('Overflow counter = %g\n',OC) % indicate overflow r = yref - y; % error signal Pr = sum(r.^2)/length(r); PrdB = 10*log10(Pr); % power estimates % Theoretical estimation of noise power at the filter output Ri0 = (1+aq(3))/((1-aq(3))*((1+aq(3))^2-(aq(2))^2)); % noise figure Nb = length(find(bq)); % number of non-zero numerator coefficients Na = 1; if aq(2)~=0 Na = 5; end NP = (Nb+Na)*Ri0*(LSB^2)/12; % Display results fprintf('Pole: rho = %g Omega = %g°\n',sqrt(a(3)),... (180/pi)*acos(-aq(2)/(2*sqrt(a(3))))) fprintf('Round-off noise figure: %g dB\n',10*log10(Ri0)) fprintf('Round-off noise power \n') fprintf('- Theory : %g dB\n',10*log10(NP)) fprintf('- Estimation : %g dB\n',PrdB)
214 M18.4
18 Reale digitale Filter: Quantisierte Arithmetik Inneres Rauschen eines Cauer-Tiefpasses 6. Ordnung Die Filterkoeffizienten eines Cauer-Tiefpass 6. Ordnung in Kaskadenform sind in Tabelle 18-7 zusammengestellt. Messen Sie die Leistung des inneren Geräusches des Cauer-Tiefpasses, siehe auch Tabelle 17-5. Tabelle 18-7 Koeffizienten des Cauer-Tiefpasses 6. Ordnung SOS = [.1961 .1961 .1961
.2747 -.0243 .1159
.1961 .1961 .1961
1 1 1
-1.3316 -1.1877 -1.1105
.5005; .7129; .9147];
Wiederholen Sie Messung für alle möglichen Reihenfolgen der Blöcke und tragen Sie die Ergebnisse in Tabelle 18-8 ein. Tabelle 18-8 Leistung des inneren Rauschens Ni eines Cauer-Tiefpasses 6. Ordnung in Kaskadenform mit quantisierter Arithmetik bei der Wortlänge von 16 Bits Reihenfolge1 Ni in dB 1
123
132
213
231
312
321
78.0
Die Reihenfolge 123 entspricht der Reihenfolge in Tabelle 18-7 mit den Blöcken 2. Ordnung entsprechend den Zeilen von SOS.
Programmbeispiel 18-4
Untersuchung des inneren Rauschens eines Cauer-Tiefpasses
% Roundoff noise in elliptic IIR filters of 6th order in % cascade form of 2nd order blocks with quantized coefficients % and fixed-point arithmetic, see filt2_rc % dsplab18_3.m * mw * 06/22/2008 w = 16; LSB = 2^(-w+1); % word length and least significant bit N = 1e5; % number of simulation cycles c = 2^(-w+14); % noise scaling factor % Quantized filter coefficients of block 1, 2 a. 3 of elliptic lowpass SOS = [.1961 .2747 .1961 1 -1.3316 .5005; .1961 -.0243 .1961 1 -1.1877 .7129; .1961 .1159 .1961 1 -1.1105 .9147]; bq = LSB*round(SOS(:,1:3)/LSB); aq = [ones(3,1) 2*LSB*round((SOS(:,5)/2)/LSB) LSB*round(SOS(:,6)/LSB)]; si = [0 0]; % initial values for state space variables % Input signal - noise x = 2*rand(1,N)-ones(1,N); % uniformly distributed in [-1,1] xq = LSB*round(c*x/LSB); % scaled and quantized input signal % Reference system [yref1,sref1] = filter(bq(1,:),aq(1,:),xq); [yref2,sref2] = filter(bq(2,:),aq(2,:),yref1); [yref3,sref3] = filter(bq(3,:),aq(3,:),yref2); % System with rounding and two's-complement overflow k1 = 1; k2 = 2; k3 = 3; % block order [y1,si1,OC] = filt2_rc(bq(k1,:),aq(k1,:),xq,si,w); fprintf('(1) Overflow counter = %g\n',OC)
18.4 Versuchsdurchführung
215
[y2,si2,OC] = filt2_rc(bq(k2,:),aq(k2,:),y1,si,w); fprintf('(2) Overflow counter = %g\n',OC) [y3,si3,OC] = filt2_rc(bq(k3,:),aq(k3,:),y2,si,w); fprintf('(3) Overflow counter = %g\n',OC) % Evaluation - power measurement r = yref3 - y3; % error signal Pr = sum(r.^2)/length(r); PrdB = 10*log10(Pr); % power of error signal Py = sum(y3.^2)/length(y3); PydB = 10*log10(Py); % output signal power fprintf('Round-off noise power %g dB\n',PrdB) fprintf('Signal-to-noise ratio %g dB\n ',PydB - PrdB)
Hinweise zu MATLAB-Funktionen und M-Files Im Folgenden werden für die Versuchsdurchführung nützliche MATLAB-Befehle und -Funktionen aufgelistet, zu denen Sie sich mit Hilfe der Help-Funktion Erläuterungen und Beispiele am Bildschirm anzeigen lassen können, siehe auch vorherige Versuche. Tabelle 18-9 MATLAB-Befehle benutzte Programme und Dateien
Þ Online-Ressourcen
dsplab18_1.m, dsplab18_2.m, dsplab18_3.m, filt2cr.m, filt2ts.m
216
19
Lernkontrollfragen zu stochastischen Signalen und realen Systemen
Dieser Abschnitt stellt einige Fragen und Aufgaben zu stochastischen Signalen, der AnalogDigital-Umsetzung und realen digitalen Systemen bereit. Sie können sie zu Ihrer Lernerfolgskontrolle benutzen. Hinweis: Treffen Sie gegebenenfalls vereinfachende Modellannahmen und verwenden Sie geeignet gerundete bzw. geschätzte Zahlenwerte. Die Aufgaben sind zu zwei Tests zusammengestellt, die in maximal 45 Minuten ohne lange Rechnungen zu lösen sind.
19.1
Aufgabenkatalog A
Aufgabe 19A1 Histogramm In einer MATLAB-Simulation wurde mit y = hist(x,[0 1 2 3 4 5]) die Bildschirmausgabe erzeugt y =
2
10
38
42
7
1
a) Zeichnen Sie das Histogramm. b) Geben Sie die Wahrscheinlichkeitsdichtefunktion der approximierenden Normalverteilung analytisch an. Aufgabe 19A2 Rauschsignal und Filterung Mit dem MATLAB-Befehl x = 0.2 + 0.5*randn(M,1); wurde ein Rauschsignal der Länge M erzeugt. a) Geben Sie den linearen Mittelwert und die mittlere Leistung des Rauschsignals an. b) Das Rauschsignal wird in ein System mit der Übertragungsfunktion H ( z)
0.3
z z 0,8
eingespeist. Geben Sie den linearen Mittelwert und die mittlere Leistung des Signals am Systemausgang an. Aufgabe 19A3 Wortlängeneffekte In der digitalen Signalverarbeitung unterscheidet man zwischen Quantisierungsfehlern und Arithmetikfehlern. Erläutern Sie die beiden Begriffe. Wo treten diese Fehler auf, wie werden sie verursacht und welche Auswirkungen haben sie?
19.1 Aufgabenkatalog A
217
Aufgabe 19A4 Zweierkomplement-Darstellung Ergänzen Sie die fehlenden Angaben in Tabelle 19-1. Tabelle 19-1 Zahlendarstellung Dezimal-Darstellung
Zweierkomplement-Darstellung mit 8 Bit 1010 1000
+0.3672 0.3672
Aufgabe 19A5 Reale Systeme a) Das System zum Pol-Nullstellendiagramm in Bild 19-1 soll in Kaskadenform realisiert werden. Fassen Sie die Pole und Nullstellen zu Teilsystemen geeignet zusammen. Hinweis: Markieren Sie die zusammengehörigen Pole und Nullstellen im Bild. b) In welcher Reihenfolge sollten die Teilsysteme angeordnet werden?
Pole/Zero Plot 1 0.8 0.6
Imaginary Part
0.4 0.2 0 -0.2 -0.4 -0.6 -0.8 -1 -1.5
-1
-0.5
0
0.5
Real Part
Bild 19-1 Pol-Nullstellendiagramm
1
1.5
218
19 Lernkontrollfragen zu stochastischen Signalen und realen Systemen
19.2
Aufgabenkatalog B
Aufgabe 13B1 Rauschsignale In Bild 19-2 sind vier Ausschnitte von Musterfolgen stochastischer Prozesse zu sehen. Dabei handelt es sich zweimal um weißes Rauschen. Zwei Musterfolgen sind durch Filterung weißen Rauschens mit einem Tiefpass bzw. einem Hochpass entstanden. Ordnen Sie die beiden gefilterten Signale richtig zu. Begründen Sie Ihre Auswahl.
x1[n] o
1 0
-1
0
20
40
60 no
80
100
120
0
20
40
60 no
80
100
120
0
20
40
60 no
80
100
120
0
20
40
60 no
80
100
120
x2[n] o
1
0 -1
x3[n] o
1
0 -1
x4[n] o
1 0
-1
Bild 19-2 Musterfolgen stochastischer Prozesse
Aufgabe 13B2 Rauschsignale Mit dem MATLAB-Befehl x = 0.2 + 0.9*randn(M,1); wurde ein Rauschsignal der Länge M erzeugt. a) Geben Sie den linearen Mittelwert und die mittlere Leistung des Rauschsignals an. b) Das Rauschsignal wird nun in einen idealen Tiefpass mit dem Frequenzgang H e j:
1 für : S / 2 ® ¯0 sonst
eingespeist. Geben Sie den linearen Mittelwert und die mittlere Leistung des Signals am Tiefpassausgang an.
19.2 Aufgabenkatalog B
219
Aufgabe 13B3 Reale Systeme Was sind kleine und große Grenzzyklen? Wie entstehen sie und was kann gegen Sie unternommen werden? Aufgabe 19B4 Gleitkomma-Darstellung Ergänzen Sie die fehlenden Angaben in Tabelle 19-2. Tabelle 19-2 Zahlendarstellung Dezimal-Darstellung
IEEE Single Precision (normalisiert) 1011 1111 1000 0000 0000 0000 0000 0000
1.625101
Aufgabe 13B5 Reale Systeme a) Die Teilsysteme eines Tiefpasses höherer Ordnung sollen in der Direktform I in Bild 19-3 mit der Arithmetik im 2er-Kompliment-Format realisiert werden. Wie groß ist die Varianz der zusammengefassten Ersatzquelle für das innere Rauschen? b) Welchen Vorteil besitzt die Direktform I im Vergleich zur transponierten Direktform II bzgl. des Überlaufverhaltens? Womit wird der Vorteil erkauft?
x[n]
b0
y[n]
+
D
D b1
a1/2
D
D b2
a2
Bild 19-3 Blockdiagramm der Teilsystems in Direktform I
220
20
Lösungen zu den Versuchen
20.1
Hinweise
Nachfolgend finden Sie Hinweise, Ergebnisse und wo angemessen auch ausführliche Lösungen zu den Aufgaben und Versuchsdurchführungen. Im Rahmen der Vorbereitung dieses Buches sind über 90 Programme und Dateien entstanden, die Sie über die Homepage des Vieweg + Teubner Verlags www.viewegteubner.de kostenlos abrufen können.
20.2
Lösungen: Zeitdiskrete Signale
A2.1, 2, 3 Siehe Bild 20-1 und Bild 20-2; Programm dsplab2_2 Die Signale 4 und 5 haben die Perioden 16 bzw. 7. Das Signal 6 ist aperiodisch
0.5
0 no
0.5
0 -5
5
0 no
0.5
0 -5
5
1
1
1
0.5
0.5
0.5
x 5[n] o
x 4[n] o
0 -5
1
x 3[n] o
x 2[n] o
1
0
0
-0.5
-0.5
-1
-1
-10
0 no
10
0 no
5
5 no
10
0 -0.5
0
5 no
-1
10
0
Bild 20-1 Signalbeispiele (dsplab2_2, stem) 90
3
120
60 2
150
30 1
Im(x7[n]) o
x1[n] o
1
x 6[n] o
A2.4
180
0
330
210
300
240 270 Re(x7[n]) o
Bild 20-2 Signalbeispiel (dsplab2_2, polar)
20.3 Lösungen: Diskrete Fourier-Transformation
221
M2.1
Mit dem Programm dsplab2_2 wurden die Bilder der Signale x1[n] bis x7[n] in Bild 20-1 und Bild 20-2 erzeugt.
M2.2-6
Ausgehend vom Programmbeispiel 2-3 wurden folgende Programme generiert: Audiosignal mit ADSR-Bewertung
dsplab2_3b
Abspielen einer WAVE-Datei
dsplab2_3c
Audioeffekten „Echo“, „Modulation“ und „Zeitumkehr“ dsplab2_3d
20.3
Lösungen: Diskrete Fourier-Transformation
A3.1
Orthogonalität für komplex Exponentielle Für k = mN ist der Exponent mit j2Sm stets ein ganzzahliges Vielfaches von 2S, so dass jeder der N Summanden gleich 1 ist. Für k z mN (insbesondere auch k z 0) folgt für die (endlichen) geometrische Reihe 1 N
1 e j 2S k 1 N e j 2S k / N 1
N 1
§ 2S k · ¦ exp ¨© j N n ¸¹ n 0
0
da der Zähler 0 ist und der Nenner endlich und von 0 verschieden ist. A3. 2
DFT-Paare l
DFT
x3 [n] sin(:0 n)
x4 [n] e j:0n
§ 2S · X1[k ] exp ¨ j no k ¸ N © ¹
DFT
x1[n] G [n n0 ]
l
DFT
l
2S k · 2S k · § § ª j ¨ :0 j ¨ :0 ¸N ¸N « N ¹ N ¹ © © 1 1 e 1 e « 2S k · 2S k · § § 2j « j ¨ :0 j ¨ :0 ¸ ¸ N ¹ N ¹ © « 1 e © 1 e ¬
X 3[k ]
X 4 [k ]
2S k · § j ¨ :0 ¸N N ¹ © 1 e
1 e x5 [n] 1
DFT
l
X 5 [k ]
1 e j 2S k 1 e
A3.3
2S k · § j ¨ :0 ¸ N ¹ ©
j
2S k N
DFT-Paare § 2SO n · DFT x2 [n] cos ¨ ¸ l © N ¹ x4 [n] e j 2SO n / N
DFT
l
X 2 [k ] X 4 [k ]
N G [k O ] G [k ( N O )] 2 N G [k O ]
º » » » » ¼
222
20 Lösungen zu den Versuchen
A3.4
DFT-Spektrum Re(X[k])
Im(X[k]) 2
2 1
k 0
8
8
8
k
0
2
8
2
Bild 20-3 DFT-Koeffizienten
Weil die Zeitfunktion reell ist, müssen der Realteil und der Imaginärteil des Spektrums gerade bzw. ungerade sein, siehe Zuordnungsschema in Tabelle 3-2. Signalerzeugung, DFT und grafische Darstellung siehe dsplab3_1b.
M3.3
Mit dem Begriff Leakage-Effekt (Leck-Effekt) wird das „Ausfliesen“ der DFTKoeffizienten bezeichnet, wenn ein Ausschnitt eines periodischen Signals der DFT unterworfen wird und die DFT-Länge nicht genau ein ganzzahliges Vielfaches der Periode erfasst, siehe Bild 20-4. Es treten mehrere von null verschiedene DFTKoeffizienten auf, obwohl ein Eintonsignal zugrunde liegt. 1
1
0.5
0.5
Im(x2[n]) o
Re(x2[n]) o
M3.1-2
0 -0.5 -1
0
5
10
15 no
20
25
-0.5 -1
30
0
5
10
15 no
20
25
30
0
5
10
15 k o
20
25
30
10 Im(X2[k ]) o
10 Re(X2[k ]) o
0
5 0 -5 -10
5 0 -5 -10
0
5
10
15 k o
20
25
30
Bild 20-4 Leakage-Effekt (dsplab3_1b)
Der Leakage-Effekt wird nicht durch einen Fehler hervorgerufen, sondern ist durch die Segmentierung der Kurzzeit-Spektralanalyse (Blocktransformation) bedingt.
20.3 Lösungen: Diskrete Fourier-Transformation
223
Nach der parsevalschen Gleichung muss die Signalenergie im DFT-Spektrum erscheinen, weshalb außer bei einem Signal gleich der Nullfolge nicht alle DFTKoeffizienten gleich null sein können. Energieanteile von (Fourier-)Spektralkomponenten, die im Frequenzraster des DFT-Spektrums keine direkte Entsprechung haben, tauchen deshalb an anderen Stellen auf. M3.4
Fourier-Synthese, siehe auch Programm zur inverse DFT idft Den Zusammenhang zur Fourier-Reihe zeigen folgende Überlegungen auf: x(t )
1 2 f 1 sin (2m 1) 2S t 2 S m 0 2m 1
¦
1 2 ª 1 1 º «sin 2S t sin 3 2S t sin 5 2S t "» 2 S ¬ 3 5 ¼ 1 2 2 S k
f
1 sin 2S k t k 1,3,5,!
¦
Mit N = 16 Abtastwerten pro DFT-Block, d. h. pro Signalperiode T0, gilt für das Abtastintervall Ts = T0 / N. Damit ergibt sich die Abtastfolge bei auf die Periode T0 normierter Zeit x[n]
x t
1 2 2 S k
nTs
1 2 2 S k
f
1 § 2S · k nT0 ¸ sin ¨ k © N ¹ 1,3,5,!
¦
T0 1
f
1 § 2S k · sin ¨ n¸ k © N ¹ 1,3,5,!
¦
Fourier-Synthese siehe Bild 20-5.
1 Im(x[n]) o
Re(x[n]) o
1 0 -1 0
5
10
0 -1
15
0
5
5 0 -5 0
5
10 k o
10
15
10
15
no
Im(X[k ]) o
Re(X[k ]) o
no
15
5 0 -5 0
5 k o
Bild 20-5 Fourier-Synthese mit N = 16 (dsplab3_2)
224
20 Lösungen zu den Versuchen
M3.5
DFT eines Audiosignals: Rechenzeit ca. 22 Sekunden für DFT der Länge 2048 (PC: 4M-CPU, 1.9 GHz, 512 MB RAM) dft start:
min:sec
22 : 24.943
dft stop:
min:sec
22 : 46.884
Rechenzeit ca. 12 Sekunden für DFT der Länge 2048 (PC: T2300-CPU, 1.66 GHz, 1 GB RAM) dft start:
min:sec
18 : 34.187
dft stop:
min:sec
18 : 45.859
1
s(t) o
0.5 0 -0.5 -1
0
0.05
0.1
0.15
0.2
0.25
t in s o 1
|S(f)| o
0.8 0.6 0.4 0.2 0
0
500
1000
1500
2000 f in Hz o
2500
3000
3500
4000
0
500
1000
1500
2000 f in Hz o
2500
3000
3500
4000
0
|S(f)| o
10
-2
10
Bild 20-6 Audio-Clip und DFT-Spektrum in linearer bzw. logarithmischer Darstellung
20.4 Lösungen: Schnelle Fourier-Transformation
20.4
Lösungen: Schnelle Fourier-Transformation
A4.2
Wachstum der Komplexität
225
Das Wachstum der Komplexität der DFT, in (4.3) abgeschätzt durch die Anzahl der benötigten FLOPs, liefert einen quadratischen Anstieg mit zunehmender DFTLänge. Eine Verdopplung der DFT-Länge bedeutet demzufolge eine Vervierfachung der Anzahl der FLOPs. Für die DIT-Radix-2-FFT folgt mit der Abschätzung (4.14) ein im Wesentlichen linearer Anstieg der Komplexität mit der DFT-Länge. Eine Verdopplung der DFTLänge bedeutet dann eine Verdopplung der Anzahl der FLOPs. Nimmt man an, dass die bei der Ausführung des Algorithmus durch den Rechner verbrauchte Zeit proportional zu der Anzahl der FLOPs ist, so sollte das lineare bzw. quadratische Wachstum an den Rechenzeiten beobachtbar sein. M4. 1
Programm für die DIT-Radix-2-FFT
% Computation oft the decimation-in-time radix-2 fft [OpSc75] % function X=dit2fft(x) % x : time-domain signal % X : dft spectrum of x % dit2fft.m * mw * 05/26/2008
function X = dit2fft(x) X = x; N = length(X); NV2 = N/2; NM1 = N-1; J = 1; % Decimation in time (reverse ordering) for I=1:NM1 if (I<J) T = X(J); X(J) = X(I); X(I) = T; end K = NV2; while (K<J) J = J-K; K = K/2; end J = J + K; end for S=1:log2(N) % Flow graph, number of decimation steps L = 2^S; LV2 = L/2; W1 = 1; W2 = exp(-j*pi/LV2); for J=1:LV2 for I=J:L:N IP = I + LV2; T = X(IP)*W1; % Butterfly X(IP) = X(I) - T; X(I) = X(I) + T; end W1 = W1 * W2; end end
226 M4.3
20 Lösungen zu den Versuchen Mit dem Programm dsplab4_1 wurden die in Tabelle 20-1 angegebenen Rechenzeiten bestimmt. Die resultierenden Wachstumsfaktoren in der Tabelle von ungefähr 4 bzw. 2 bestätigen die Abschätzungen. Die Grafik in Bild 20-7 bestätigt obige Aussagen anschaulich.
2
10
elapsed cpu time, t in s o
dft dit2fft
1
10
0
10
-1
10
8
9
10
11
12 13 14 DFT length, log2(N) o
15
16
17
18
Bild 20-7 CPU-Zeiten für die DFT (dft) und DIT-Radix-2-FFT (dit2fft) in Abhängigkeit von der DFT-Länge (mit dem MATLAB-Befehl cputime geschätzte Werte, PC mit T2300-CPU, 1.66 GHz und 1 GB RAM)
M4.4
Für die DFT des Audiosignals der Dauer 1 s folgt mit der Abtastfrequenz fs = 8 kHz eine DFT-Länge N = 8000. Die nächstmögliche Radix-2-FFT-Länge ergibt sich zu 8192. Dafür ist mit der direkten DFT-Implementierung, dem Programm dft, eine Rechenzeit von etwa 90 s mal 4.3, also ungefähr 6.5 Minuten zu veranschlagen. Mit der DIT-Radix-2-FFT, dem Programm dit2dft, ist eine Rechenzeit von etwa 320 ms erforderlich. Anmerkung: Die DFT-Länge als Zweierpotenz N = 213 lässt sich durch Anfügen von Nullen an das Audiosignal erzwingen, siehe Zero-padding in Abschnitt 5.2.5.
M4.5
Mit dem Programm dsplab4_1b wurde Bild 20-8 für die MATLAB-Built-inFunktion fft bestimmt. In der logarithmischen Darstellung ist wieder der näherungsweise lineare Anstieg der Rechenzeit mit dem Faktor 2 zu erkennen. Anmerkungen: (i) Beim erstmaligen Aufruf der Funktion können sich durch das Laden in den Hauptspeicher merkliche Verzögerungen ergeben. (ii) Bei zu großen DFT-Längen wird der Hauptspeicher ausgeschöpft und für die Auslagerungen auf eine Swap-Datei auf der Festplatte viel zusätzliche Zeit verbrauchen kann. (iii) In der digitalen Bildverarbeitung ist die Effizienz des FFT-Algorithmus von besonderer Bedeutung. Dort wird die FFT oft auf die Zeilen und Spalten eines Bildes angewendet, was den Aufwand entsprechend steigert.
20.4 Lösungen: Schnelle Fourier-Transformation
227
Tabelle 20-1 Simulationsergebnisse mit dem Programm dsplab4_1 ( PC: 4M-CPU, 1.9 GHz, 512 MB RAM ) DFT-Länge N
p
256 512 1024 2048 4096 8192 16384 32768 65526 131072 262144
8 9 10 11 12 13 14 15 16 17 18
dft
dit2fft
CPU-Zeit t in s
Wachstumsfaktor
0.250 1.08 4.75 20.8 89.1
4.3 4.4 4.4 4.3
ti / ti1
CPU-Zeit t in ms
Wachstumsfaktor
40 80 150 320 681 1430 3180 6580 13900
2.0 1.9 2.1 2.1 2.1 2.2 2.1 2.1
ti / ti1
Anmerkungen: (i) Messwerte in der Tabelle gerundet. (ii) PC mit Pentium III, 800 MHz, 384 Mbyte Hauptspeicher dft 1024 in ca. 24 s und dit2fft in ca. 0.181 s.
4
elapsed cpu time in ms o
10
3
10
2
10
1
10
17
18
19
20 21 DFT length, log2(N) o
22
23
24
Bild 20-8 CPU-Zeiten für die MATLAB-Built-in-Funktion fft in Abhängigkeit von der DFT-Länge (mit dem MATLAB-Befehl cputime geschätzte Werte, PC mit T2300-CPU, 1.66 GHz und 1 GB RAM)
228
20 Lösungen zu den Versuchen
20.5
Lösungen: Kurzzeit-Spektralanalyse: Grundlagen
A5.1
Damit genau zwei von null verschiedene DFT-Koeffizienten resultieren, muss für die normierte Kreisfrequenz gelten :0
2S
f0 fs
2S
k0 N
und insbesondere f0 fs
k0 N
für k0 , N `
Die Bedingung kann durch Einsetzen in Beziehung in (5.16) verifiziert werden. A5.2
Messung des Klirrfaktors x(t) 1 1
T0
t
0 T0
2T0
Bild 20-9 Periodisches Signal x(t) (Sägezahn)
Fourier-Reihe x(t )
2 § sin(2S f 0t ) sin(2S 2 f 0 t ) sin(2S 3 f 0 t ) · ¨ "¸ S © 1 2 3 ¹
Klirrfaktor, numerische Auswertung mit dem Programm dsplab5_1d d
1 2 2 1 3 2 1 4 2 " 1 1 2 1 3 1 4 " 2
2
2
| 0.626
Die numerische Berechnung mit der DFT liefert den gerundeten Wert 0.628 wobei bei einer Abtastfrequenz von 1 kHz die DFT-Koeffizienten bis 490 Hz berücksichtigt wurden, siehe Programm dsplab5_1c. M5.1
Abtastfrequenz fs = f0 N / k ; also 50 64 / 4 Bei der Wiederholung mit 60 Hz tritt der Leakage-Effekt sichtbar auf. Hinweis: Siehe auch Programm dsplab5_4
M5.2
Mit dem Programm dsplab5_5b wurde die Grafik zu spektralen Auflösung mit der DFT bei Zweitonsignalen in Bild 20-10 erzeugt. Während im Bild bei Anwendung des Rechteck-Fensters das Zweitonsignal als solches erkannt werden kann, ist dies bei der Anwendung des Blackman-Fensters nicht der Fall. Erst bei einem Unterschied der normierten Kreisfrequenzen von 3':rec oder größer, sind Ähnlichkeiten mit zwei disjunkten Hauptzipfeln, vgl. Bild 5-5, zu
20.5 Lösungen: Kurzzeit-Spektralanalyse: Grundlagen
229
erkennen, so dass ein Zweitonsignal mit :1 = 162S / 128 und :2 = 192S / 128 erkannt wird. Die Wiederholung des Versuches mit Zero-padding auf die DFT-Länge 1024 bringt keine wirkliche Verbesserung, siehe Bild 20-11.
20 k o
25
30
50 0 10
15
20
25
30
|X[k ]| o
15
|X[k ]| o
0 10
40
40
|X[k ]| o
50
40
|X[k ]| o
|X[k ]| o
|X[k ]| o
Tatsächlich ist die spektrale Auflösung des Blackman-Fensters etwa dreimal so groß wie die des Rechteck-Fensters.
40
20 0 10
15
20 k o
25
30
15
20 k o
25
30
15
20 k o
25
30
15
20 k o
25
30
20 0 10
|X[k ]| o
|X[k ]| o
k o 50 0 10
15
20 k o
25
30
50 0 10
15
20 k o
25
30
20 0 10
20 0 10
150 k o
200
250
50 0 50
100
150 k o
200
250
50 0 50
100
150 k o
200
250
50 0 50
100
150 k o
200
250
|X[k ]| o
100
|X[k ]| o
0 50
40
40
|X[k ]| o
50
40
|X[k ]| o
|X[k ]| o
|X[k ]| o
|X[k ]| o
|X[k ]| o
Bild 20-10 Zur Spektralen Auflösung der DFT Betragsspektren der Zweitonsignale mit RechteckFenster (links) und Blackman-Fenster (rechts) für N = 128 (dsplab5_5b)
40
20 0 50
100
150 k o
200
250
100
150 k o
200
250
100
150 k o
200
250
100
150 k o
200
250
20 0 50
20 0 50
20 0 50
Bild 20-11 Zur Spektralen Auflösung der DFT Betragsspektren der Zweitonsignale mit RechteckFenster (links) und Blackman-Fenster (rechts) mit Zero-padding (N=1024) (dsplab5_5c)
230 M5.3
20 Lösungen zu den Versuchen Fensterfolgen Tabelle 20-2 Parameter der Fensterfolgen ungefähre Breite des Hauptzipfels ':m
Dämpfung des größten Nebenzipfels as,dB
bartlett
8S/N
26.5 dB
blackman
12 S / N
58.3 dB
chebwin (D = 60 dB)
10 S / N
60 dB
gausswin (E = 2.5)
13 S / N
43 dB
hamming
8S/N
42 dB
hann
8S/N
31 dB
kaiser (E = 5.46)
8S/N
40 dB
rectwin
4S/N
13 dB
Fensterfolge (Parameter)
20.6
Lösungen: Kurzzeit-Spektralanalyse: Beispiele
A6.1
Abgetastetes Signal
x1[n] cos(2S 0.0871 n) cos(2S 0.1511 n)
A6.2
Normierte Kreisfrequenz
: Z fs
DTMF-Frequenzen und normierte Kreisfrequenzen bei Abtastung mit 8 kHz
A6.3
f in Hz
697
770
852
941
1209
1336
1477
: / 2S
0.0871
0.0963
0.1065
0.1176
0.1511
0.1670
0.185
Frequenzauflösung der DFT, minimale und maximale DFT-Länge
fs , N
'f
A6.4
N min
ª 8 kHz º « » 110 , « 73Hz »
N max
256
DTMF-Frequenzen und zugeordnete Frequenzen gemäß dem DFT-Frequenzraster mit der DFT-Länge N = 256 und Abtastung mit 8 kHz
f in Hz
697
770
852
941
1209
1336
1477
k
22
25
27
30
39
43
47
687.5
781.3
843.8
937.5
1218.8
1343.8
1469
9.5
11.3
8.2
3.5
9.8
7.8
8
fk in Hz | f fk | in Hz
20.6 Lösungen: Kurzzeit-Spektralanalyse: Beispiele
231
DTMF-Signal
M6.1
2
x[n] o
1 0 -1 -2
0
50
100
150 no
200
250
300
Bild 20-12 DTMF-Signal zum Wählzeichen 1 (dsplab6_2)
Die Multiplikation des DTMF-Signals mit der Fensterfolge im Zeitbereich entspricht im Frequenzbereich der Faltung der Spektren. Treten im zeitlich unbegrenzten Signal, wie im Signal x1[n], periodische Anteile auf, so ergeben sich Impulsanteile im Spektrum. Die zeitliche Begrenzung mit einem Fenster führt im Frequenzbereich dazu, dass aufgrund der Faltung an die Stellen der Impulsanteile das Spektrum des Fensters abgebildet wird. Im Falle des Rechteckfensters sind das jeweils siFunktionen die sich gegenseitig überlagern.
M6.2
Die im Abschnitt 5 vorgestellten Fensterfolgen besitzen alle Tiefpasscharakter mit einem Durchlassbereich (Hauptzipfel) um die Frequenz null. Für die Faltung im Frequenzbereich spielt das Spektrum die Rolle einer Impulsantwort. Der Hauptzipfel entfaltet dabei eine glättende Wirkung. Die Spektralanteile in den Schultern des Fensterspektrums werden unterdrückt. Im Frequenzbereich wirkt die Faltung mit dem Spektrum der Fensterfunktion deshalb wie eine Tiefpassfilterung. Das Spektrum des Signalblockes wird entsprechend der Breite des Hauptzipfels verschmiert. Das Frequenzauflösungsvermögen nimmt ab, siehe Bild 20-13.
40
50
1 0.5 0 20
|X[k ]| o
k o 1 0.5 0 20
30
40 k o dial number 8
30
50
50
40 k o dial number 0
50
30
50
40
|X[k ]| o
30
50
40 k o dial number 5
|X[k ]| o
40 k o dial number 7
1 0.5 0 20
30
dial number 3 1 0.5 0 20
1 0.5 0 20
|X[k ]| o
30
50
|X[k ]| o
40 k o dial number 4
|X[k ]| o
1 0.5 0 20
30
dial number 2 1 0.5 0 20
|X[k ]| o
|X[k ]| o |X[k ]| o
1 0.5 0 20
|X[k ]| o
dial number 1 1 0.5 0 20
1 0.5 0 20
30
40 k o dial number 6
50
30
40 k o dial number 9
50
30
50
40 k o
k o
Bild 20-13 Ausschnitte aus den DFT-Betragsspektren der DTMF-Signale (dsplab6_3)
232
20 Lösungen zu den Versuchen Die Form des Fensters hat einen unmittelbaren Einfluss auf die Frequenzauflösung und Robustheit gegen Signalstörungen unterschiedlicher Art.
M6.3
Das im Versuch gewählte Blackman-Fenster besitzt einen relativ breiten Hauptzipfel, so dass das Frequenzauflösungsvermögen im Vergleich zum Rechteckfenster stark abnimmt, siehe Bild 20-14. Minimaler Frequenzabstand der DMFT-Töne 'f min
73 Hz
Frequenzauflösung der DFT (DFT-Frequenzraster) fs N
'f
8000 Hz 256
31.25 Hz
Frequenzauflösung mit Blackman-Fenster (Hauptzipfelbreite) 6 'f DFT
187.5 Hz
40 k o dial number 4
0 20
30
50
40
50
0.5
0 20
0 20
0.5 0 20
30
40 k o dial number 5
30
40
50
50
0.5
0.5
0.5
0 20
0 20
k o dial number 8
40
50
|X[k ]| o
|X[k ]| o
k o dial number 7
30
dial number 3 |X[k ]| o
30
|X[k ]| o
0.5
0 20
dial number 2 0.5
|X[k ]| o
|X[k ]| o |X[k ]| o
dial number 1 0.5
|X[k ]| o
12S f s N 2S
|X[k ]| o
'f m
0.5 0 20
40
50
k o dial number 0 |X[k ]| o
k o
30
0 20
30
40 k o dial number 6
50
30
40 k o dial number 9
50
30
50
40 k o
0.5 0 20
30
40
50
k o
Bild 20-14 Ausschnitte aus den DFT-Betragsspektren der DTMF-Signale mit Blackman-Fenster (dsplab6_3)
A6.5
Frequenzauflösung (DFT-Frequenzraster) und zeitlicher Versatz mit Zahlenwertbeispiel zu speech.wav 'f 't
fs M
16 kHz 512
Ts M OL
31.25 Hz
1 s 512 0.5 = 16 ms 16000
20.6 Lösungen: Kurzzeit-Spektralanalyse: Beispiele M6.4
233
Spektrogramme der Audiosignale [y,fs,bits] = wavread('handel'); specgramdemo(y,fs); [y,fs,bits] = wavread('guitar'); specgramdemo(y,fs);
Bild 20-15 zeigt ein Beispiel für das DTMF-Signal zu den Wählzeichen „3528 1393“. Das DTMF-Signal wurde mit dem Programm dsplab6_4 erzeugt und das Spektrogramm mit dem MATLAB-Programm specgramdemo berechnet und dargestellt.
Bild 20-15 Spektrogramm zum DTMF-Signal für „3528 1393“ (dsplab6_4)
234
20 Lösungen zu den Versuchen
20.7
Lösungen: Lernkontrollfragen zur DFT, FFT und KurzzeitSpektralanalyse
20.7.1
Aufgabenkatalog A
7A1
Signal (Skizze) 1 -6
-4
x[n] 6
-2 0
2
n
4
-1 -2 -3
Bild 20-16 Skizze für das Signal x[n]
7A2
DFT-Spektrum Anmerkung: Das DFT-Fenster beinhaltet genau 2 Perioden der Sinusfolge
Re(X[k])
2
x[n]
Im(X[k])
8
16
1
0 0 0 5
0 0
5
n
15
10
k
15
5
10
k
15
-8
0
Bild 20-17 Skizzen des Signals x[n] und des komplexen DFT-Spektrums X[k]
7A3
a) Hauptzipfelbreite (aus dem Diagramm) ':m | 0.14 S | 4.5 S / N mit N = 32. b) Nebenzipfelamplitude (aus dem Diagramm) Mit der normierten Kreisfrequenz zum Hauptzipfel :0 = 0 und zum größten Nebenzipfel :1 | 0.2 S gilt für das Verhältnis im logarithmischen Maß 20 log10
dB W e j: W e j:1
0
20 log10 W e j:1 dB 20 log10 W e j:0 dB | 19dB 22dB
41dB
20.7 Lösungen: Lernkontrollfragen zur DFT, FFT und Kurzzeit-Spektralanalyse
235
und im linearen Maß
| 10 2041 | 0.0089 W e j: W e j:1
0
7A4
Spektralanalyse, die DFT-Länge muss mindestens sein f N min t s 'f
7A5
200Hz 0.25Hz
800
Echtzeit-FFT Pro Sekunde stehen am Rechner 13 MFLOPs zur Verfügung. Mit der Komplexitätsformel der Radix-2-FFT (4.14) erhält man für eine FFT der Länge N = 1024 die Abschätzung RRadix-2-FFT = 5 1024 10 FLOPS = 51200 FLOPS. Mit 13106 / 51.2103 = 253.9 können 253 Blöcke verarbeitet werden. Da bei einer Überlappung von 50 % jeder Abtastwert zweimal verwendet wird, können pro Sekunde 1024 253 0.5 = 129’536 Abtastwerte mit der FFT verarbeitet werden. Die maximale Abtastfrequenz fs,max beträgt ca. 129.536 kHz.
20.7.2
Aufgabenkatalog B
7B1
Signalzuordnung, siehe Tabelle 7-1
7B2
2
4
6
5
3
1
DFT-Spektrum, Zeitsignal (N = 32) x[n] = cos(n22S/N) + cos(n82S/N) +sin(n22S/N) + sin(n42S/N) = = cos(nS/8) + cos(nS/2) +sin(nS/8) + sin(nS/4)
7B3
Fensterbewertung a) Hauptzipfelbreite ':m = | S / 4 = 8S / N mit N = 32 b) Mit der normierten Kreisfrequenz zum Hauptzipfel :0 = 0 und zum größten Nebenzipfel :1 | 0.2 S gilt für das Verhältnis im logarithmischen Maß 20 log10
dB W e j: W e j:1
0
20 log10 W e j:1 dB 20 log10 W e j:0 dB | 31dB 21dB
53dB
236
20 Lösungen zu den Versuchen und im linearen Maß
| 10 5320 | 0.0022 W e j: W e j:1
0
7B4
Klirrfaktor Die Frequenz der Grundschwingung, der 1. Harmonischen, beträgt f0 = 1 kHz. Da Spektralanteile ab der 9. Harmonischen, d. h. ab 9 kHz, vernachlässigt werden können, ist die Abtastfrequenz fs zur Vermeidung von Aliasing größer oder gleich 18 kHz zu wählen, siehe Abtasttheorem. Für den Klirrfaktor werden hier mit der Näherung, dass die Oberschwingungen im Nenner (5.21) vernachlässigt werden können, die Effektivwerte bzw. Leistungen der Grundschwingung, bei 1 kHz, und der 2. Oberschwingung, bei 3 kHz, benötigt. Bei einer Abtastung mit fs = N 1 kHz und N gleich der DFT-Länge ist das DFTFrequenzraster 'f = 1 kHz. Das Verhältnis der Beträge der DFT-Koeffizienten |X[3]| / |X[1]| liefert dann den gesuchten Indikator. Für eine Radix-2-FFT kommt somit als kürzeste Blocklänge N = 32 in Frage. Anmerkung: N = 16 ist auch möglich, wenn spektrale Überfaltungen in nicht ausgewerteten DFT-Koeffizienten zugelassen werden.
7B5
a) Abszissenbeschriftung, 1024Ts = 1/8 s = 125 ms 0.4
y[n]
0.2 0 -0.2 -0.4
0
100
300
400
500
600
700
800
900
A
15
|Y[k]|
200
1000
fs = 8192 Hz 10
B
5 0
0
50
100
C 150
200
D 250
300
350
400
Bild 20-18 Bildschirmanzeige zu Programmbeispiel 7B-1
b) 1., 2. 3. und 4. Harmonische bei den Frequenzen 525 Hz und 1.05, 1.575 und 2.1 kHz.
20.8 Lösungen: Faltung, Differenzengleichung und LTI-Systeme
20.8
237
Lösungen: Faltung, Differenzengleichung und LTI-Systeme
A8.1 u. 2 Es resultiert das Faltungsprodukt x1[n] x2[n] = {1, 2, 5, 3, 4, 3} . A8.3
Die Länge des Faltungsproduktes beträgt M = N1 + N2 –1 .
M8.2
Siehe Grafik zu dsplab8_1. Die Faltungen der Barker-Codefolgen mit ihren jeweiligen Zeitspiegelungen liefern Folgen, die bis auf eine Ausnahme die Werte r1 und 0 aufweisen. In der Mitte ragt der Maximalwerte gleich der Länge der jeweiligen Barker-Codefolge heraus. In der Nachrichtenübertragungstechnik spricht man dabei von einem MatchedFilterempfänger (Korrelationsempfänger). Das besondere an Barker-Codefolgen ist, dass dabei neben dem Maximum nur Werte betragsmäßig kleiner oder gleich eins auftreten. Dadurch wird es möglich, auch bei einem überlagerten Störsignal die zeitliche Lage der Codefolge relativ zuverlässig zu erkennen und so die Bitsynchronität herzustellen, also beispielsweise den Beginn eines Datenrahmens zu erkennen.
M8.3 u. 4 Goertzel-Algorithmus 1. Ordnung, siehe auch dsplab8_2 % Goertzel-Algorithmus (1st order system) % function y = goertzel_1(x,k,N) % x : time signal % k : index of dft coefficient % N : dft length % y : kth dft coefficient % goertzel_1.m * mw * 05/30/2008 function y = goertzel_1(x,k,N) if length(x)
A8.5
Übertragungsfunktion und Pole und Nullstellen für Goertzel-Algorithmus 1. Ordnung H1 ( z )
A8.6
1 1 a1 z
1
z z a1
z z e
j 2S k N
mit zf = exp( jk2S/N), z0 = 0
Das System ist nicht strikt stabil, da sich der Pol mit |zf| = 1 auf dem Einheitskreis befindet. Da es sich um einen einfachen Pol handelt, ist das System jedoch bedingt stabil.
238
20 Lösungen zu den Versuchen Übertragungsfunktion und Pole und Nullstellen für Goertzel-Algorithmus 2. Ordnung
A8.7
H 2 ( z)
1 b1 z 1
1 a1 z 1 a1 z 2
z 2 b1 z z 2 a1 z a2
z 2 e j 2S k N § 2S k · z 2 2 cos ¨ ¸ z 1 © N ¹
mit zf1,2 = exp(r jk2S/N), z0 = exp(jk2S/N) Man beachte, ein Pol und eine Nullstelle kompensieren sich! A8.8
Das System ist nicht strikt stabil, da sich die Pole (unkompensiert) auf dem Einheitskreis befindet, d. h. |zf1,2| = 1. Da es sich um einfache Pole handelt, ist das System bedingt stabil.
A8.9
Pol-Nullstellendiagramm für den Goertzel-Algorithmus 2. Ordnung
z
Im k2S /N Re
Einheitskreis
Pol und Nullstelle kompensieren sich
Bild 20-19 Pol-Nullstellendiagramm für das System 2. Ordnung für den Goertzel-Algorithmus
M8.5 u. 6 % Goertzel-Algorithmus (2nd order system) % function y = goertzel2(x,k,N) % x : time signal % k : index of dft coefficient % N : dft length % y : kth dft coefficient % goertzel_2.m * mw * 06/03/2008 function y = goertzel_2(x,k,N) if length(x)
20.9 Lösungen: Finite-Impulse-Response-Systeme
239
M8.7 % Goertzel-Algorithmus (2nd order system) % function y = goertzelf(x,k,N) % x : time signal % k : index of dft coefficient % N : dft length % y : kth dft coefficient % goertzel_f.m * mw * 06/03/2008 function y = goertzel_f(x,k,N) if length(x)
20.9
Lösungen: Finite-Impulse-Response-Systeme
A9. 1
Spiegelung der Nullstelle am Einheitskreis (Kehrwert des Betrages)
H 0 g e j:
A9. 2
1
U0
H 0 e j:
Im
Pole und Nullstellen von H1 ( z ) 3 er j 0.696S
1 r j 2
z0 1,2
z
z01
zf 1,2 1
zf 1,2 = 0 (doppelter Pol)
Re
z02
Bild 20-20 Pol-Nullstellendiagramm von H1(z)
A9.3
Das System H1(z) ist maximalphasig, weil alle Nullstellen außerhalb des Einheitskreises der komplexen z-Ebene liegen.
A9.4
Impulsantwort h1[n] = {1, 2, 3}
A9.5
Signalflussgraph D
x[n] 1
D 2
x[n] 3
2
3 y[n]
Direktform I (Transversalfilter)
D
1 D
Direktform II
Bild 20-21 Signalflussgraphen für FIR-Systeme in Direktform
y[n]
240 A9.6
20 Lösungen zu den Versuchen Impulsantworten korrespondierender minimal- und maximalphasiger Systeme Da das System reell ist, gilt vor der Spiegelung z01 = U ejM und z02 = U ejM und nach der Spiegelung 1
z01g
U
e jM
1
1 z02 und z02 g
U
e jM
1 z01
Für die Übertragungsfunktion mit den gespiegelten Nullstellen folgt daraus H g ( z)
z z021 z z011 2
1 1 z02 z 1 z01 z 1 z01 z02 z 2
z 1 1 z 2 z02 z 1 z01 z 1 z01 z02 z 2
1 1 1 1 z z02 z z01 2 z01 z02 z 2 z
1 z01 z02
2
§1· ¨ ¸ H z 1 ©z¹
H z 1
Die Impulsantwort ergibt sich durch Rücktransformation der Übertragungsfunktion. Dabei sind die Sätze der z-Transformation, z. B. in [Wer08b], für die Zeitverschie-
bung, x[n n0 ] l z n0 X ( z ) , und die Zeitumkehr, x[ n] l X z 1 , anzuwenden. hg [n]
A9.7
1 h[ n 2] z01 z02
Für das System mit den gespiegelten Nullstellen folgt H1g ( z ) 1
2
U
1 1 ( z z01 )( z z02 )
z2 cos M z 1
1
U2
z 2
1 1 1 1 z 2 ( z01 z02 ) z z01 z02
z2 2 1 1 z 1 z 2 3 3
und somit für die Impulsantwort h1g[n] = {1, 2/3, 1/3} = 1/3 {3, 2, 1} Die Kontrolle nach A9.6 bestätigt das Ergebnis. A9.8
Gruppenlaufzeit Wir fassen die Beiträge einer Nullstelle U ejM und ihrer Spiegelung am Einheitskreis (1/U) ejM zur Gruppenlaufzeit (9.10) zusammen. Nach kurzer Zwischenrechnung erhalten wir eine Konstante.
20.9 Lösungen: Finite-Impulse-Response-Systeme
U 2 U cos(: M ) 1 2 U cos(: M ) U 2
U 2 U cos(: M ) 1 2 U cos(: M ) U
2
1 2 U cos(: M ) U 2 1 2 U cos(: M ) U 2
241
U 2 U 1 cos(: M ) 1 2 U 1 cos(: M ) U 2
1 U cos(: M ) 2
U 2 U cos(: M ) 1 1
Anmerkung: Tritt die Nullstelle als konjugiert komplexes Paar auf, ergibt sich der Gesamtbeitrag zur Gruppenlaufzeit von 2.
Ein konstanter Beitrag in der Gruppenlaufzeit bedeutet wegen des differentiellen Zusammenhangs (9.9) einen linearen Beitrag zum Frequenzgang der Phase. A9.9
Kaskadenschaltung zu einem linearphasigen System. H2(z) = H1g(z)
Im
mit den gespiegelten Nullstellen des Systems H1(z) z01,2
1 3
z0 1
er j 0.696S
z0 2
z (2) zf 1,2 1
Re
Bild 20-22 Pol-Nullstellendiagramm von H2(z)
A9.10
Kaskadenschaltung von H1(z) und H2(z) = H1g(z)
1 2 z 1 3z 2 13 3 2 z 1 z 2 1 3 8 z 1 14 z 2 8 z 3 3z 4 3
H3 ( z)
H1 ( z ) H1g ( z )
h3[n] = (1/3) {3, 8, 14, 8, 3} A9.11
Frequenzgang und Frequenzgang der Phase von H3(z) H 3 (e j : )
1 3 8e j: 14e j 2: 8e j 3: 3e j 4: 3
1 j 2: e 3e j 2: 8e j: 14 8e j: 3e j 2: 3 1 j 2: e 6 cos(2:) 16 cos(:) 14 3
Da der Term in der Klammer stets positiv ist, gilt für den Frequenzgang der Phase b3(:) = 2:
242
20 Lösungen zu den Versuchen
A9.12
Bei linearem Verlauf des Frequenzganges der Phase treten keine Phasenverzerrungen auf, siehe zum Beispiel [Wer08b].
M9.2
siehe Programm dsplab9_1
M9.3
Die Verzögerung beträgt genau zwei Takte, sie ist damit genauso groß wie die Gruppenlaufzeit, siehe Programm dsplab9_2.
M9.4 u. 5 Das minimalphasige System ist auch das Minimum-delay-System, das maximalphasige System führt zur größten Energieverzögerung, siehe Programm dsplab9_3.
20.10
Lösungen: Infinite-Impulse-Response-Systeme
A10.1
Die Impulsantwort bestimmt sich aus dem Blockdiagramms, wenn man die Werte der Signale an den entsprechenden Stellen Takt für Takt einträgt.
x[n] = {1, 0, 0, 0, …}
D .64
s2[n]
0 0.36 0.512 0.64
D .8
y[n] = {1, 0.8, 1, 0.288, …}
s1[n] 0 0.8 1 0.288
Bild 20-23 Bestimmung der Impulsantwort im Blockdiagramm zu H(z) aus (10.14)
Impulsantwort h[n] zu H(z) aus (9.12)
A10.2
n
x[n]
s2[n]
s1[n]
h[n]
0 1 2 3
1 0 0 0
0 0.36 0.512 0.64
0 0.8 1 0.288
1 0.8 1 0.288
Die Zustandsgrößen beschreiben die inneren Speicher des Systems und müssen deshalb für eine kontinuierliche Verarbeitung gemerkt und wiederverwendet werden, siehe Programm iirdf2t und Testprogramm dsplab10_1 % Filtering for k=1:length(x) y(k) = b(1)*x(k) + SI(1); SI(1) = b(2)*x(k) - a(2)*y(k) + SI(2); SI(2) = b(3)*x(k) - a(3)*y(k); end xf = SI; % final conditions
20.10 Lösungen: Infinite-Impulse-Response-Systeme A10.3
243
Nullstellen und Pole zu H(z) aus (10.14) zf 1,2 = 0.4 r j 0.6928
z0 1,2 = r j
Im
z
1
Re
Bild 20-24 Pol-Nullstellendiagramm zu H(z) aus (10.14)
A10.4
Berechnung der Impulsantwort zu H(z) aus (10.14) durch Partialbruchzerlegung, wobei die Symmetriebeziehungen für konjugiert komplexe Polpaare benutzt werden, z. B. [Wer08b]. H ( z) z
z2 1
* z z zf1 z zf 1
B0 B1 B1* * z z zf1 z zf 1
mit B0
z2 1
lim
1
z o0 ( z z ) ( z z * ) f1 f1
* zf1 zf 1
1 0.64
1.5625
und B1
lim
z o zf1
z2 1 * z ( z zf 1)
0.2813 j 0.7398
Somit ergibt sich für die Übertragungsfunktion H ( z)
B0
B1 z B* z 1 * z zf1 z zf 1
Die Rücktransformation liefert h[n]
n * * n B0 G [n] B1 zf 1 B1 ( zf1 ) u[ n]
1.5625 G [n] 0.8n 0.5626 cos[1.0472n] 1.4794 sin[1.0472n] u[n]
Kontrolle durch Auswerten obiger Gleichung mit MATLAB h [n] = {1, 0.8, 1, 0.288, 0.4096, 0.5120, 0.1475, 0.2097, ...}
244 A10.5
20 Lösungen zu den Versuchen Berechnung der Impulsantwort für einfache Pole, wie z. B. für das System H(z) aus (10.14), siehe Programm dsplab9_2.
b = [1 0 1]; a = [1, -.8 .64]; [r,p,k] = residue(b,a); % partial fraction expansion (residues, poles, % and direct term) n = 0:20; % normalized time variable h = zeros(size(n)); % allocate memory for the impulse response for m=1:length(r) % include all poles h = h + r(m)*p(m).^n; % add pole contribution to impulse response end if isempty(k)~=1 h(1) = h(1) + k; % add contribution of direct term end
A10.6
Berechnung der Sprungantwort für einfache Pole, wie z. B. für das System H(z) aus (10.14). Für die Sprungantwort gilt mit dem Zählerpolynom b(z) und dem Nennerpolynom a(z) des Systems s[n] l H ( z )
z z 1
b z z
z 1 a z
b z z
z az az
.
Die Multiplikation des Nenners mit (z1) kann in MATLAB bei der Eingabe der Koeffizienten des Nennerpolynoms berücksichtigt werden. Mit der Programmzeile a = [a 0]–[0 a]; b = [b 0];
vor dem Befehl residuez erhält man die gesuchte Sprungantwort, siehe Programm dsplab10_2. M10.1
Impulsantwort, siehe Programme dsplab10_1 und iirdf2t
M10.2
Sprungantwort, siehe Programm dsplab10_2
M10.3
Die Impulsantwort besitzt in den ersten vier Werten einen Hauptbereich mit positiven Koeffizienten. Bei der Faltung des Eingangssignals mit der Impulsantwort hat der Hauptbereich eine glättende Wirkung. Das heißt, es werden Frequenzkomponenten mit normierter Kreisfrequenz ab S / 2 relativ gedämpft. Grundsätzlich ist die vollständige Information über die Pole und Nullstellen in der Impulsantwort enthalten. Aus der dominanten Eigenschwingung mit Periode (ungefähr) drei im Bild der Impulsantwort, kann auf ein komplexes Polpaar mit den Phasen r S / 3 geschlossen werden. Entsprechende Frequenzkomponenten werden relativ verstärkt.
M10.4
Siehe Programme dsplab10_3.
20.10 Lösungen: Infinite-Impulse-Response-Systeme M10.5
245
Anhand der Pole und Nullstellen des Systems kann auf die relative Größe des Betrages des Frequenzgangs in gewissen Frequenzabschnitten geschlossen werden. Im Bild ist ein dominantes konjugiert komplexes Polpaar mit der Phase r S / 3 erkennbar. Ein konjugiert komplexes Nullstellenpaar liegt auf dem Einheitskreis mit der Phase r S / 2. Die Phase ist periodisch mit 2S. Die grafischen Darstellung beschränkt sich auf den Hauptbereich [S, S]. Beim Durchgang durch die Nullstelle tritt ein Phasensprung um S , ein Vorzeichenwechsel, auf. Die Gruppenlaufzeit ändert sich dort stark, wo sich der Betragsfrequenzgang stark ändert.
Bild 20-25 Systemgrößen zu H(z) aus (10.14) (dsplab10_3)
246
20 Lösungen zu den Versuchen
Bild 20-26 Impulsantwort und Sprungantwort zu H(z) aus (10.14) (dsplab10_3)
M10.6
Zu den beiden Systemen HBW(z) und HC(z) können prinzipiell ähnliche Aussagen wie oben. Darüber hinaus sind die beiden Systeme typische Tiefpässe: ein Butterworth- bzw. ein Cauer-Tiefpass 4. Ordnung. Deren Eigenschaften werden in Versuch 12 diskutiert.
20.11
Lösungen: Entwurf digitaler FIR-Filter
A11.1
Einschränkungen für linearphasige FIR-Filter
Symmetrie der Impulsantwort h[n] gerade
ungerade
Ordnung der Impulsantwort N
nicht realisierbare Filtertypen
gerade
keine Einschränkung
ungerade
Hochpass, Bandsperre
gerade
Tiefpass, Hochpass, Bandsperre
ungerade
Tiefpass, Bandsperre
20.11 Lösungen: Entwurf digitaler FIR-Filter A11.2
Kenngrößen des Toleranzschemas Durchlasskreisfrequenz :D = 0.34 S Sperrkreisfrequenz
A11.3
247
:S = 0.4 S
Durchlasstoleranz GD = 0.05 Sperrtoleranz
GS = 0.005
Wunsch-Impulsantwort (si-Funktion) hw [n]
:0
S
si :0 n
A11.4
Die Impulsantwort des realen, kausalen FIR-Filters N-ter Ordnung ist eine rechtsseitige Folge der Länge N + 1. Deshalb werden für das reale FIR-Filter die N + 1 wesentlichen Koeffizienten der Wunsch-Impulsantwort symmetrisch um n = 0 genommen (Rechteckfensterung) und bzgl. der normierten Zeit n soweit nach rechts geschoben (zeitliche Verschiebung), bis die Impulsantwort des implementierten FIR-Filters rechtsseitig wird.
A11.5
Impulsantwort – realisierbar und N = 20
hF [n]
:0
S
si :0 > n 10@ u[n] u[n 21]
A11.6
Die Verkürzung (Rechteckfensterung) der Wunsch-Impulsantwort entspricht dem Abbruch der Fourier-Reihe für den Wunsch-Frequenzgang. Dadurch tritt das gibbssche Phänomen mit Überschwingern an den Sprungstellen des Frequenzganges auf, wobei die größten Überschwinger etwa 9% der Sprunghöhe betragen.
M11.1
Berechnung der Impulsantwort und grafischen Darstellung des Betragsfrequenzgangs, siehe MATLAB-Werkzeug fvtool.
% FIR low pass filter design using Fourier approximation % dsplab11_1.m * mw * 05/23/2008 %% Tolerance scheme OmegaP = 0.34; % passband cutoff radiant frequency OmegaS = 0.4; % stopband cutoff radiant frequency DeltaP = 0.05; % passband tolerance DeltaS = 0.005; % stopband tolerance %% Filter parameters N = 20; % filter order OmegaC = .5*(OmegaP + OmegaS); % corner radian frequency %% Impulse response (causal, order N) n = -N/2:N/2; h = OmegaC*sinc(n*OmegaC); fvtool(h) % filter viewer
Zur Überprüfung der Einhaltung des Toleranzschemas in Bild 20-27 werden die Toleranzvorgaben ins logarithmische Maß umgerechnet. MATLAB verwendet im Filter Design and Analysis Tool fdatool für das Toleranzschema im linearen Maß Dpass und Dstop bzw. im logarithmischen Maß die Größen Apass und Astop. Es gilt Dpass = GD = 0.05 und Dstop = GS = 0.005
248
20 Lösungen zu den Versuchen bzw. im logarithmischen Maß 1 GD dB 1 GD
Apass
20 lg
Astop
20 lg G S dB
20 lg
1.05 dB | 0.87 dB 0.95
20 lg 0.005 dB | 46 dB
Die vorgegebenen Toleranzgrenzen werden weder im Durchlass- noch im Sperrbereich eingehalten, siehe Bild 20-27. Dies gilt auch bei Verdopplung der Filterordnung. Die einfache Fourier-Approximation ist wegen des gibbsschen Phänomens nicht geeignet um selektive FIR-Filter, wie Tiefpässe, zu entwerfen. Normalized Frequency: 0.2772217 Magnitude (dB): 0.8550126
Magnitude Response (dB)
0 Normalized Frequency: 0.3408203 Magnitude (dB): -2.010348
-5 -10
Magnitude (dB)
-15
Normalized Frequency: 0.3999023 Magnitude (dB): -14.57245
-20
Normalized Frequency: 0.4604492 Magnitude (dB): -22.07662
-25 -30 -35 -40 -45 -50 0
0.1
0.2
0.3 0.4 0.5 0.6 0.7 Normalized Frequency ( uS rad/sample)
0.8
0.9
Bild 20-27 Betragsfrequenzgang des FIR-Filters mit Fourier-Approximation (dsplab11_1)
M11.2
Hochpass und Bandpassentwurf durch Modulation der Impulsantwort eines Tiefpasses mit einer Kosinusfolge, siehe Programm dsplab11_2
A11.7
Arbeitsblatt zum Tiefpassentwurf mit Fourier-Approximation und Kaiser-Fenster Parameter des Toleranzschemas
GD = 0.05, GS = 0.005, :D = 0.34S, :S = 0.4S Bestimmung des Parameters E und der Filterordnung N
Gmin = 0.005, ': = 0.06S, a = 46.02 dB, E = 4.091, D = 2.651, N = 89 M11.3
Für den Entwurf wurde die Ordnung N = 90 gewählt, siehe Bild 20-28 und Programm dsplab11_3. Das Toleranzschema wird eingehalten.
20.11 Lösungen: Entwurf digitaler FIR-Filter
249
Magnitude Response (dB) 0 Normalized Frequency: 0.3400879 Magnitude (dB) (normalized to 0 dB): -0.07310608 -10
Magnitude (dB) (normalized to 0 dB)
-20
-30
-40
Normalized Frequency: 0.4064941 Magnitude (dB) (normalized to 0 dB): -46.83093
-50
-60
-70
-80 0
0.1
0.2
0.3
0.4 0.5 0.6 0.7 Normalized Frequency ( uS rad/sample)
0.8
0.9
Bild 20-28 Betragsfrequenzgang des FIR-Filters mit Fourier-Approximation und Kaiserfenster (dsplab11_3)
M11.4
M11.5
Mit dem MATLAB-Werkzeug fdatool wurde ein FIR-Tiefpassentwurf mit der Equiripple-Methode mit der Option Minimum order durchgeführt. Es resultiert der Betragsfrequenzgang in Bild 20-29 für ein FIR-Filter der Ordnung N = 54. Das entworfene Filter genügt nicht den Vorgaben im Toleranzschema. Um das Toleranzschema einzuhalten, wird der Entwurf etwas modifiziert. Es wird die Filterordnung N = 56 (Specify order) und die Gewichtung der Bänder Wpass = 1 und Wstop = 10 vorgegeben. Das Ergebnis ist in Bild 20-30 zu sehen. Der Betragsfrequenzgang erfüllt die Anforderungen des Toleranzschemas. Durch das „vollständige“ Ausnutzen der Toleranzen kann das Toleranzschema hier bereits bei einer Filterordnung N = 56 statt 90 für die Fourier-Approximation mit Kaiserfenster realisiert werden. Mit dem MATLAB-Werkzeug fdatool wurde, wie Bild 20-31 zeigt, der Entwurf für das Zweibandfilter durchgeführt.
250
20 Lösungen zu den Versuchen
Magnitude Response (dB) Normalized Frequency: 0.3226318 Magnitude (dB): 0.4849109 0 Normalized Frequency: 0.2878418 Magnitude (dB): -0.5122244
Normalized Frequency: 0.3399658 Magnitude (dB): -0.5078809
-10
Magnitude (dB)
-20
-30
-40
Normalized Frequency: 0.3999023 Magnitude (dB): -44.43421
Normalized Frequency: 0.4324951 Magnitude (dB): -44.83425
-50
0
0.1
0.2
0.3
0.4 0.5 0.6 0.7 Normalized Frequency ( uS rad/sample)
0.8
0.9
Bild 20-29 Betragsfrequenzgang des FIR-Filters mit der Ordnung N = 54 mit der Equiripple-Methode (fadtool, Minimum order) Magnitude Response (dB) Normalized Frequency: 0.3244629 Magnitude (dB): 0.4039917 0 Normalized Frequency: 0.2930908 Magnitude (dB): -0.4236496
Normalized Frequency: 0.3395996 Magnitude (dB): -0.3779662
-10
Magnitude (dB)
-20
-30
-40 Normalized Frequency: 0.3999023 Magnitude (dB): -46.00257
Normalized Frequency: 0.4083252 Magnitude (dB): -46.46704
-50
0
0.1
0.2
0.3
0.4 0.5 0.6 0.7 Normalized Frequency ( uS rad/sample)
0.8
0.9
Bild 20-30 Betragsfrequenzgang des FIR-Filters mit der Ordnung N = 56 mit der Equiripple-Methode (fadtool, Wpass = 1, Wstop = 10)
20.12 Lösungen: Entwurf digitaler IIR-Filter
251
Bild 20-31 Entwurf eines FIR-Zweiband-Filters mit Equiripple-Verhalten mit fdatool
20.12
Lösungen: Entwurf digitaler IIR-Filter
A12.1
Mit a(Z ) dB
10 log10 H ( jZ )
2
§ ª Z º 2 N · Z Z0 ¨ 10 log10 1 « » ¸ | ¨ ¬ Z0 ¼ ¸ © ¹
§Z · 20 N log10 ¨ ¸ © Z0 ¹
wächst die Dämpfung mit etwa 20N dB pro Frequenzverzehnfachung (Dekade) bzw. 6N dB pro Frequenzverdopplung (Oktave), siehe Bild 20-32. A12.2
Entwurfsparameter für den Butterworth-Tiefpass Hilfsparameter
H = 0.470, O = 208.3
Filterordnung
N = 38
3dB-Grenzkreisfrequenz
Z0 = 2S 3.468 kHz
252
20 Lösungen zu den Versuchen
a(Z ) dB
48 N=8
36
N=4
24
N=2
12
N=1
0
1/4
1/2
1
2
4
Z / Z0
16
Bild 20-32 Dämpfungsverhalten von Butterworth-Tiefpässen der Ordnung N (Bode-Diagramm)
A12.3
A12.4
Entwurfsparameter für den Butterworth-Tiefpass mit reduzierten Anforderungen Hilfsparameter
H = 0.484, O = 4.899
Filterordnung
N =3
3dB-Grenzkreisfrequenz
Z0 = 2S 2.547 kHz
Pole des Butterworth-Tiefpasses mit reduzierten Anforderungen Index k Pol
~ s fk
1
2
3
2.547 exp(jS 2/3)
2.547
2.547 exp(jS 2/3)
Im(s) s
Re(s) 2.547
Bild 20-33 Pole in der s-Ebene
A12.5
Übertragungsfunktion des Butterworth-Tiefpasses mit reduzierten Anforderungen H BW TP s
A12.6
b0 ( s sf1 ) ( s sf 2 ) ( s sf3 )
16.52 3
2
s 5.094 s 12.97 s 16.52
Pole des zeitdiskreten Butterworth-Tiefpasses
D
1
Z3dB / Zb
tan
:3dB 2
1 S tan 2.547 10
0.1276
und
z fk
1 D sfk 1 D sfk
20.12 Lösungen: Entwurf digitaler IIR-Filter
A12.7 u. 8
253
Transformationsparameter
D = 0.1276
Pole des zeitdiskreten Systems
zf1 = 0.6253 + j0.3934 , zf2 = 0.5095 , zf3 = zf1*
Pole des zeitdiskreten Butterworth-Tiefpasses in der z-Ebene Im(z) z
Einheitskreis
Re(z)
(3) Nullstelle (dreifach)
1
Ortskurve der Pole (Kreis)
Bild 20-34 Pole und Nullstellen des Butterworth-Tiefpasses in der z-Ebene
A12.9
Übertragungsfunktion des zeitdiskreten Butterworth-Tiefpasses in der z-Ebene H BW TP ( z )
0.0181
z 3 3z 2 3z 1 z 3 1.7600 z 2 1.1829 z 0.2781
Zur Kontrolle des Filterentwurfs wurde das Programm dsplab12_2 erstellt. Neben dem Pol-Nullstellendiagramm und den Frequenzgängen in der s- und zEbene, wurden die untenstehenden Pole und Filterkoeffizienten berechnet. s1 = -1.2500 + j*( 2.1651) s2 = -2.5000 + j*( 0.0000) s3 = -1.2500 + j*( -2.1651) a0 = 1.0000 ; b0 = 0.0000 a1 = 5.0000 ; b1 = 0.0000 a2 = 12.5000 ; b2 = 0.0000 a3 = 15.6250 ; b3 = 1.0000 alpha = 0.129968
M12.1
z1 z2 z3 a0 a1 a2 a3
= 0.6253 + j*( 0.3934) = 0.5095 + j*( 0.0000) = 0.6253 + j*( -0.3934) = 1.0000 ; b0 = 1.0000 = -1.7600 ; b1 = 3.0000 = 1.1829 ; b2 = 3.0000 = -0.2781 ; b3 = 1.0000
Die Lösung von A12.9 lässt sich beispielsweise durch folgende Programmzeile durchführen, fvtool(.0181*[1 3 3 1],[1 -1.76 1.1829 -.2781])
254
20 Lösungen zu den Versuchen
M12.2
IIR-Filterentwurf mit dem Programm dsplab12_1 mit den Entwurfsparametern, siehe normierte Kreisfrequenz : 2S f 20 kHz
Durchlasskreisfrequenz (passband) :D / S
0.34
Sperrkreisfrequenz (stopband) :S / S
0.4
Durchlasstoleranz GD
0.095
Sperrtoleranz GS
0.0048
Bei der Berechnung der Nullstellen des Butterworth-Tiefpasses 30. Ordnung treten numerische Ungenauigkeiten auf, so dass nicht alle 30 berechneten Nullstellen bei z0 = 1 liegen. Vor einer praktischen Anwendung des Filters sollte von Hand eine entsprechende Korrektur der Zählerkoeffizienten vorgenommen werden. Ebenfalls zu beobachten sind numerische Probleme bei der Berechnung der Phase und der Gruppenlaufzeit im Sperrbereich bei sehr großen Dämpfungen, d. h. sehr kleinen Werten des Frequenzganges. Sie sind für die Anwendung bedeutungslos und können ignoriert werden. Wiederholt man den Versuch mit dem MATLAB-Programm fdatool treten die genannten Probleme nicht auf. M12.3
Telefonsprache, siehe dsplab12_4 und Bild 20-35 und Bild 20-36.
Magnitude Response 1 0.9
Magnitude (normalized to 1)
0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 0 0
0.1
0.2
0.3
0.4 0.5 0.6 Normalized Frequency ( uS rad/sample)
0.7
0.8
0.9
Bild 20-35 Betragsfrequenzgang des Butterworth-Bandpasses 6. Ordnung (dsplab12_4)
20.12 Lösungen: Entwurf digitaler IIR-Filter
255
y(t) / y max o
1 0.5 0 -0.5 -1
0
0.2
0.4
0.6
0.8
1 t in s o
1.2
1.4
1.6
1.8
2
0
0.2
0.4
0.6
0.8
1 t in s o
1.2
1.4
1.6
1.8
2
yT(t) / y T,max o
1 0.5 0 -0.5 -1
Bild 20-36 Originales Audiosignal (oben) und Telfonsprache (unten) (dsplab12_4)
M12.4, 5 u. 6 M12.7
Filternetwurf mit dem MATLAB-Werkzeug fdatool
Die Abschätzung der Komplexität der Filter geschieht durch die Zahl der notwendigen Multiplikationen. Bei einer Implementierung in der Direktform II, siehe Bild 12-1, benötigen IIR-Filter der Ordnung N genau 2N + 1 Multiplikationen. Im Falle der FIR-Tiefpässe der Ordnung N ergeben sich N + 1 Multiplikationen, siehe Bild 11-1. Wegen der Symmetrie der Koeffizienten aufgrund der verallgemeinerten linearen Phase kann hier durch eine Realisierung mit Zusammenfassen von jeweils zwei Eingangswerten die Zahl der Multiplikationen etwa halbiert werden. Der Komplexitätsvorteil des Cauer-Tiefpasses verringert sich dann im Vergleich zum FIR-Tiefpass mit Chebyshev-Approximation auf etwa den Faktor 2.2. Eine Entscheidung für eine FIR- oder IIR-Implementierung sollte vor dem Hintergrund der „günstigen“ Eigenschaften von FIR-Filtern und eventueller Implementierungsvorteile auf der Zielhardware, z. B. einem digitaler Signalprozessor, unter Berücksichtigung aller relevanten Faktoren sorgfältig abgewogen werden.
256
20 Lösungen zu den Versuchen
Tiefpass Fourier-Approximation1, 3 2 ,3
Struktur
Ordnung
Zahl der Multiplikationen / Zeitschritt
relative Komplexität
FIR4
92
93 (47)
7.2 (3.6)
4
Chebyshev
FIR
56
57 (29)
4.4 (2.2)
Butterworth
IIR
30
61
4.7
Chebyshev-I
IIR
11
23
1.8
Chebyshev-II
IIR
11
23
1.8
Cauer
IIR
6
13
1
1 Entwurf mit Kaiserfenster; 2 Entwurf mit Equiripple-Methode; 3 Versuch 11; 4 FIR-Filter können auch mittels schneller Faltung realisiert werden, was die Komplexität bei hoher Ordnung deutlich reduzieren kann [Wer08b].
20.13
Lösungen: Lernkontrollfragen zu FIR- und IIR-Systemen
20.13.1 Fragenkatalog A 13A1
Faltung a) x1[n] x2[n] = {1, 3, 1, 5, 1, 1} b) L1 + L2 1 = 23
13A2
Impulsantwort H(z) = 1 + z1 – 2z2 und h[n] = {1, 1, –2} a) Skizze der Impulsantwort
1
0.8
0.6
h[n] o
13A3
0.4
0.2
0
-0.2
-0.4
0
2
4
6
8 no
10
12
14
16
Bild 20-37 Impulsantwort
b) FIR-System der Ordnung 14 mit Tiefpassverhalten und linearer Phase
20.13 Lösungen: Lernkontrollfragen zu FIR- und IIR-Systemen 13A4
Zuordnung der Eigenschaften zu den Systemen Eigenschaften
Systeme c d e f g
13A5
257
stabil
minimalphasig
maximalphasig
Allpass
rekursiv
_ _ _ _
_
_
_
_
_ _ _
Filterentwurf a) Cauer-BP b) Sperrtoleranz 40 dB (fdatool: Astop1 = 40 dB, Apass = 3 dB, Astop2 = 40 dB) c) :Du = 0.4 S und :Do = 0.7 S (fdatool: wstop1 = .3, wpass1 = .4, wpass2 = .7, wstop2 = .8) d) Ordnung N = 8 (Bandpass!) e) Nullstellen z01,2 | exp( r j 0.22S ), z03,4 | exp( r j 0.35S ), z05,6 | exp( r j 0.75S) und z07,8 | exp( r j 0.85S )
20.13.2 Fragenkatalog B 13B1
a) Differenzengleichung y[n] + 0.3 y[n1] 0.5 y[n2] = 0.7 x[n] 0.3 x[n1] b) Blockdiagramm x[n] 0.3 D 0.5
+
0.7 D
+
y[n]
0.3
Bild 20-38 Blockdiagramm (transponierte Direktform II)
13B2
a) Ordnung N = 8 b) Nullstellen verteilt im Sperrbereich – nicht Butterworth, nicht Chebyshev-I c) Cauer-Bandpass – Equiripple-Verhalten im Durchlass- und Sperrbereich, siehe Bild 13-2.
258 13B3
20 Lösungen zu den Versuchen Zuordnen von Begriffen und Systemen bzw. Entwurfsverfahren Systeme
Begriffe
FIR
_ _ _
_
_
_ _
Bilineare Transformation Butterworth-Filter Chebyshev-Approximation Faltung Fourier-Approximation Frequenztransformation Gruppenlaufzeit Instabil Kaiser-Fenster Rekursiv Transversale Struktur Verallgemeinerte lineare Phase
IIR _ _ _ _
_ _ _
_
13B4
Pol-Nullstellendiagramme: links IIR, Bandsperre; rechts FIR, Tiefpass
13B5
Impulsantwort a) Unten Tiefpass, si-förmige Impulsantwort Oben Hochpass, si-förmige Impulsantwort eines Tiefpasses mit cos(Sn) moduliert, siehe Modulationssatz der Fourier-Transformation b) Unten Nulldurchgang der Impulsantwort nach ca. 4 Takten vom Maximum, :c |S/4 Oben berücksichtigt man die Multiplikation der Impulsantwort mit der Kosinusfolge, so ergibt sich für den Tiefpass wieder :c,TP | S / 4 und somit für den Hochpass :c,HP | 3S / 4.
20.14
Lösungen: Kenngrößen stochastischer Signale
A14.1
Schätzwerte der WDF (relative Häufigkeit / Intervallbreite) fi
A14.2
WDF der Normalverteilung (gaußsche Glockenkurve) mit empirischem Mittelwert und empirischer Varianz f ( x)
A14.3
hi M 1 N cmax cmin
§ x x 2 exp ¨ ¨ 2 V 2 2SV 2 © 1
· ¸ ¸ ¹
Das gaußsche Fehlerintegral gibt die Wahrscheinlichkeit an, dass die stochastische Variable X einer normierten Normalverteilung, d. h. N(0,1)-Verteilung, einen Wert kleiner gleich x annimmt. P X d x
) ( x)
20.14 Lösungen: Kenngrößen stochastischer Signale
259
Die Wahrscheinlichkeit für einen Wert größer x ist dann P X ! x 1 ) ( x)
Für die Abschätzung des Messbereiches ist noch die gerade Symmetrie der gaußschen Glockenkurve zu beachten. Der Messbereich wird deshalb sinnvoller Weise symmetrisch um den Erwartungswert gelegt, in der Aufgabe der Wert null. Die Wahrscheinlichkeit den Messbereich zu überschreiten, ist dann gleich der Wahrscheinlichkeit ihn zu unterschreiten. Mit der Vorgabe der Wahrscheinlichkeit von 99.73 % für einen Versuchsausgang innerhalb des Messbereiches, muss demzufolge für die obere Grenze xo gelten 1 0.9973 1 ) ( xo ) 2
Für die obere Messintervallgrenze folgt ) ( x0 ) 1
1 0.9973 2
0.99865
Aus ([BSMM99], Tabelle 21.15.1) erhält man xo = 3 und somit wegen der geraden Symmetrie xu = 3. Mit der Beziehung ) ( x)
1 ª § x ·º «1 erf ¨ ¸» 2 ¬ © 2 ¹¼
kann die obere Messbereichsgrenze auch in MATLAB berechnet werden. Auflösen nach der Fehlerfunktion liefert zunächst
§ x · erf ¨ ¸ © 2¹
2 ) ( x) 1
Mit der MATLAB-Funktion erfinv wird die Gleichung in MATLAB nach x0 gelöst. x0 = sqrt(2)*erfinv(2*0.99865-1) M14.1
Streudiagramme, siehe Programm dsplab14_1 Anhand der Ordinatenbeschriftung vorausgesetzt im oberen Bild werden alle aufgetretenen Werte wider gegeben kann zwischen der Gleichverteilung und der Normalverteilung eindeutig unterschieden werden. Aber auch ohne Achsenbeschriftung lassen sich die unterschiedlichen Verteilungen erkennen. Während bei der Gleichverteilung die Elemente der Musterfolge das Bild, den Amplitudenbereich, eher gleichmäßig ausfüllen, zeigt sich für die normalverteilten Elemente ein deutliches Ausdünnen mit wachsendem Abstand von der Abszisse.
260
20 Lösungen zu den Versuchen
xu[n] o
1
0.5
0
0
50
100
150
200 no
250
300
350
400
0
50
100
150
200 no
250
300
350
400
4 xn[n] o
2 0 -2 -4
Bild 20-39 Streudiagramme zu den mit rand und randn generierten Zufallszahlenfolgen
M14.2
An den Schätzwerten zeigt sich das grundsätzliche Problem der Bestimmung statistischer Kenngrößen. Erst ein hinreichend großer Stichprobenumfang liefert vertrauenswürdige Aussagen. Da in den Schätzfunktionen stochastische Variablen verwendet werden, ist das Ergebnis ebenfalls nur eine Zufallsgröße. In der angewandten Statistik werden Methoden zur Bestimmung von Vertrauensintervallen für einfache Schätzfunktionen angegeben. Schätzwerte des linearen und des quadratischen Mittelwerts einer normierten Normalverteilung bei verschiedenen Stichprobenumfängen Stichprobenumfang Spannweite linearer Mittelwert Standardabweichung Varianz quadratischer Mittelwert
102 4.35 0.0479 0.864 0.747 0.749
103 5.98 0.0472 0.971 0.942 0.944
104 7.55 0.00639 0.999 0.998 0.998
105 8.82 0.00322 1.002 1.005 1.005
Schätzwerte des linearen und des quadratischen Mittelwerts einer normierten Normalverteilung bei einem Stichprobenumfang von 1000 Stichprobe linearer Mittelwert quadratischer Mittelwert
M14.3
1 0.04693 1.011
2 0.0076 0.978
3 0.0017 1.046
4 0.0255 1.039
Schätzung der eindimensionalen WDF, siehe auch Programm histogram [c,f,m1,m2] = histogram(randn(1,1e3),10,-3,3,' ');
Mit zunehmendem Stichprobenumfang liegen die Schätzwerte im Mittel näher bei der theoretisch erwarteten gaußschen Glockenkurve. Soll eine unbekannte WDF geschätzt werden, so ist je nach Anwendung ein geeigneter Kompromiss zwischen Stichprobenumfang und Intervallteilung zu finden. Generell kann ein Histogramm mit einer relativ feinen Intervallteilung aufgenommen werden, da eine nachträgliche Vergröberung, also ein Zusammenfassen von Intervallen, einfach möglich ist.
rel. frequency o
20.14 Lösungen: Kenngrößen stochastischer Signale # samples
1000
# bins
10
261
span linear mean standard deviation variance quadratic mean
6.0794 -0.0082929 1.0035 1.007 1.0071
0.4 0.3 0.2 0.1 0 -3
-2
-1
0 xo
1
2
3
Bild 20-40 Schätzwerte und Histogramm (histogram)
M14.4
Die zunehmende Verfeinerung der Histogram-Intervalle (Klasseneinteilungen) führt zu größeren Schwankungen in den Ergebnissen. Schließlich werden manche Intervalle gar nicht mehr getroffen.
M14.5
WDF eines Sprachsignals Das nachfolgend abgebildete Histogramm wurde mit den Programmzeilen [y,FS] = wavread('speech'); [c,f,m1,m2] = histogram(y,20,-.45,.4,'gauss');
bestimmt, siehe Bild 20-41. Hinweis: Wertebereich für das Histogramm im Befehl axis geeignet einstellen.
rel. frequency o
Im Vergleich zu der WDF der Normalverteilung, die als Referenz mit eingezeichnete ist, treten im Sprachsignal viel häufiger sehr kleine Werte auf, die ihre Ursache in den so genannten Mikropausen zum Luftholen während des Sprechens haben. Moderne Sprachcodierverfahren verfügen über eine Pausendetektion, um die Übertragung von Daten zu reduzieren (Datenkompression). # samples
30000
# bins
20
span linear mean standard deviation variance quadratic mean
1.813 0.0048504 0.17793 0.031658 0.031681
6 4 2 0
-0.4
-0.3
-0.2
-0.1
0 xo
0.1
0.2
0.3
0.4
Bild 20-41 Histogramm des Sprachsignals speech.wav
262
20 Lösungen zu den Versuchen
% Estimation of the probability density function, the linear % and quadratic mean and the variance of a random sequence % using MATLAB command hist % function [m1,m2] = histogram(x,M,MIN,MAX,TXT) % x : random sequence (sequence under test) % M : number of histogram bins % MIN : minimum value for histogram bin centers (class centers) % MAX : maximum value for histogram bin centers (class centers) % TXT : string ('gauss') - optional % histogram.m * mw * 06/10/2008 function [c,f,m1,m2] = histogram(x,M,MIN,MAX,TXT) if nargin==4 TXT = 'bar'; end N = length(x); % number of samples span = max(x)-min(x); % span m1 = mean(x); % estimate of linear mean s2 = var(x,1); % variance (normalized by 1/N) stdev = std(x,1); % standard deviation (normalized by 1/N) m2 = m1^2 + s2; % estimate of quadratic mean % 1-dim. probability density function (pdf) d = (MAX-MIN)/(M-1); % bin width c = MIN + d*(0:M-1); % bin centers h = hist(x,c); % histogram % Relative frequency (estimate of probability density function (pdf)) f = h/(d*N); % Gaussian bell function if strcmp(TXT,'gauss') x = MIN:.1:MAX; % abscissa g = (1/sqrt(2*pi*s2))*exp(-((x-m1).^2)/(2*s2)); end % Numerical and graphical output FIG = figure('Name','histogram : empirical data',... 'NumberTitle','off','Units','normal','Position',[.4 .4 .45 .45]); subplot(2,1,1) axis([1 100 0 100]); axis('off') text(0,70,'# samples'); text(20,70,num2str(N)) text(0,50,'# bins'); text(20,50,num2str(M)) text(40,70,'span'); text(70,70,num2str(span)) text(40,55,'linear mean'); text(70,55,num2str(m1)) text(40,40,'standard deviation'); text(70,40,num2str(stdev)) text(40,25,'variance'); text(70,25,num2str(s2)) text(40,10,'quadratic mean'); text(70,10,num2str(m2)) % Graphical output of estimated pdf and gaussian bell function if strcmp(TXT,'gauss') subplot(2,1,2),plot(x,g,':',c,f,'o'), grid else subplot(2,1,2),bar(c,f), grid end axis([MIN MAX 0 1.2/sqrt(2*pi*s2)]) xlabel('{\itx} \rightarrow'), ylabel('rel. frequency \rightarrow')
20.14 Lösungen: Kenngrößen stochastischer Signale A14.4
263
Empirischer Korrelationskoeffizient N 1 ¦ ( xn x ) ( yn y ) N 1 n 1
rxy
s x2 s 2y
mit den empirischen Mittelwerten 1 N ¦ xn N n1
x
;
1 N ¦ yn N n1
y
und den empirischen Varianzen s x2
N 1 2 ¦ yn y N 1 n 1
; s 2y
Streudiagramme, siehe Bild 20-42 Im Streudiagramm links oben ergibt sich ein deterministischer Zusammenhang. Die Wertepaare liegen auf einer Geraden mit der der Steigung 1, das entspricht einem empirischen Korrelationskoeffizienten ebenfalls gleich 1. Im Streudiagramm rechts oben gruppieren sich die Wertepaare entlang der Winkelhalbierenden. Es herrscht eine starke lineare Abhängigkeit zwischen den stochastischen Variablen X1 und X2. Das Streudiagramm links unten zeigt eine rotationssymmetrische Wolke für die Wertepaare. Ein linearer Zusammenhang zwischen den stochastischen Variablen X1 und X3 ist nicht erkennbar.
4
4
2
2 x2 o
x1 o
Das Streudiagramm rechts unten zeigt wieder einen linearer Zusammenhang. Da sie Steigung der gedachten Geraden negativ ist, ist hier der empirische Korrelationskoeffizient der stochastischen Variablen X1 und X4 negativ.
0 -2 -4 -4
0 -2
-2
0
2
-4 -4
4
-2
0 x1 o
2
4
-2
0 x1 o
2
4
x1 o 4
4
2
2 x4 o
x3 o
M14.6
N 1 2 ¦ xn x N 1 n 1
0 -2 -4 -4
0 -2
-2
0 x1 o
2
4
-4 -4
Bild 20-42 Streudiagramm (dsplab14_2)
264 M14.7
20 Lösungen zu den Versuchen Empirische Korrelationskoeffizienten Empirische Korrelationskoeffizienten zu den Signalen x1[n] bis x4[n] (dsplab14_2) 1 2 3 4 Signal i
U1i M14.8
1.000
0.736
0.044
0.734
Bidimensionale WDF einer Normalverteilung in (14-1), dsplab14_3 Für x = x1 und y = x1 liegen alle Messwert-Paare auf der Winkelhalbierenden (y = x). Die Höhenlinien fallen alle auf die Winkelhalbierende. Für x = x1 und y = x2 liegen alle Messwert-Paare häufiger in der Nähe Winkelhalbierenden (y = x). Die Höhenlinien sind Ellipsen mit der großen Achse auf der Winkelhalbierenden, siehe auch Bild 14-5. Für x = x1 und y = x3 Wie bei den anderen Beispielen, fällt zum ersten die bidimensionale WDF aus dem Ursprung heraus monoton. Damit sind kleine Folgenelemente wahrscheinlicher als große. Zum zweiten ist die bidimensionale WDF rotationssymmetrisch. Dies schließt insbesondere die gerade Symmetrie bzgl. der beiden Variablen ein. Betrachtet man nur die Vorzeichen der Paare aus x und y so sind die Kombinationen „+ +“, „+ “, „ +“ und „ “ gleichwahrscheinlich. Aus dem Vorzeichen eines Folgenelements lässt sich nicht auf das Vorzeichen des andern schließen. Die zugrunde liegenden stochastischen Variablen scheinen keine gegenseitigen Bindungen aufzuweisen. a) Es ergeben sich kreisförmige Höhenlinien. b) Die bidimensionale WDF ist rotationssymmetrisch wg. (a), d. h. eine gerade Funktion in x und in y. In der bidimensionalen WDF dürfen deshalb die Variablen x1 und x2 nicht in linearer Form auftreten. Dies ist sinnvoller Weise nur der Fall, wenn der Korrelationskoeffizient U gleich null ist. c) Mit U = 0 sind die stochastischen Variablen X und Y unkorreliert. Weil sie auch noch normalverteilt sind, sind sie zusätzlich unabhängig. Dies kann anhand der bidimensionalen WDF (14.1) schnell gezeigt werden, da für U = 0 die bidimensionale WDF in das Produkt zweier eindimensionaler WDFen übergeht. Für x = x1 und y = x4, ähnlich wie für y = x2 aber um 90° gedreht.
M14.9
Test auf Korreliertheit des Zufallszahlengenerators randn Schätzwerte für die AKF RXX[l] der durch den MATLAB-Befehl randn erzeugten Zufallszahlenfolge für den Stichprobenumfang N N RXX[0] max( |RXX[l]| ) für l = 1, 2, ..., 20 104 105 106
0.9906 0.9986 1.002
0.0207 0.0052 0.0015
Die Schätzwerte der AKF zeigen keine besonderen Auffälligkeiten, die der Annahme widersprechen, es handle sich um eine unkorrelierte Zufallszahlenfolge.
20.15 Lösung: Stochastische Signale und LTI-Systeme
265
Mit dem Programm dsplab14_4 wurde die AKF und das LDS des Sprachsignals in speech.wav bestimmt, siehe untenstehendes Bild.
M14.11
Die drei leistungsmäßig am deutlichsten ausgeprägten Spektralkomponenten liegt bei : / S | 0.018, 0.037 und 0.055 (Zoom). Es handelt sich um harmonische Anteile. Bei einer Abtastfrequenz von fa = 16 kHz entspricht die Frequenz der ersten Harmonischen, der Grundfrequenz des Sprachsignals, f0 | 144 Hz. Eine ausgeprägte „Spektrallinie“ bedeutet im Zeitbereich einen periodischen Anteil. In der AKF muss demzufolge eine periodischer Anteil mit der normierten Periode (1/144) / (1/16000) | 110 auftreten. Tatsächlich sind in der AKF neben dem immer vorhanden Maximum bei l = 0 auch bei l | 110 und 220 ausgeprägte lokale Maxima zu sehen. Als Bereich relativ starker Korrelation ergibt sich aus dem Bild (Zoom) die Kohärenzdauer tc = 9 / 16000 s | 0.56 ms.
R[l] / R[0] o
1 0.5 0 -0.5 -1
0
50
100
150
200 lo
250
300
350
400
S(: ) / R[0] o
60 40 20 0
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
: / So
Bild 20-43 Autokorrelationsfolge R[l] und Leistungsdichtespektrum S(:) des Sprachsignals speech.wav (dsplab14_4)
20.15
Lösung: Stochastische Signale und LTI-Systeme
A15.1
Lineare Abbildung X = sqrt(0.5)*randn(1,N) + 0.3;
A15.2
% mean = 0.3, variance = 0.5
Die WDF nach Addition zweier unabhängiger, gleichverteilter stochastischer Variablen ergibt sich aus der Faltung der WDF der Gleichverteilung mit sich selbst entsprechend der Faltung zweier Rechteckimpulse.
266
20 Lösungen zu den Versuchen fX (x)
1 x 0
1
2
Bild 20-44 WDF der Summe zweier unabhängiger, in [0,1] gleichverteilter stochastischer Variablen
M15.1, 2, 3 u. 4 Siehe folgende Programmzeilen und zugehörige Bildschirmanzeigen. x = rand(1e6,1)+rand(1e6,1); [c,f,m1,m2] = histogram(x,40,0,2,'no'); x = zeros(1e6,1); for k=1:10 x = x + rand(1e6,1); end [c,f,m1,m2] = histogram(x,40,0,10,'gauss'); [c,f,m1,m2] = histogram(sqrt(.5)*randn(1e6,1)+.3,40,-2,3,'gauss'); % x1 = sqrt(.5)*randn(1e6,1) + .3; x2 = sqrt(.5)*randn(1e6,1) + .3; [c,f,m1,m2] = histogram(x1+x2,40,-2,3,'gauss');
A15.3
Berechnung der AKF im Zeitbereich Weil am Eingang ein weißes Rauschsignal anliegt, kann die AKF mit (15.10) berechnet werden. Die benötigte Zeit-AKF des kausalen Systems Rhh[l] wird aus der rechtsseitigen Impulsantwort h[n] bestimmt. Durch inverse z-Transformation, z. B. mittels Korrespondenztabelle, erhält man aus der Übertragungsfunktion die rechtsseitige Impulsantwort h[n] 0.3 0.8n u[n]
mit der Sprungfolge u[n]. Die Zeit-AKF ergibt sich dann aus Rhh [l ]
h[l ] h[l ]
f
¦ h[n] h[l n]
n 0 f
¦ 0.3 0.8n 0.3 0.8l n u[l n]
n 0
f
0.32 0.8l ¦ 0.82n u[l n] n 0
Die Berechnung vereinfacht sich, wenn die normierte Zeitvariable l auf nicht negative Werte beschränkt wird ( l t 0 ); d. h. zunächst nur der rechtsseitige Anteil der Zeit-AKF bestimmt wird. In diesem Fall ist die Sprungfunktion stets gleich eins und die Summe reduziert zur bekannten geometrischen Reihe. f
Rhh [l t 0] 0.32 0.8l ¦ 0.82n n 0
0.32 0.8l
1 1 0.64
1 0.8l 4
20.15 Lösung: Stochastische Signale und LTI-Systeme
267
Da die Zeit-AKF des Systems eine gerade Folge ist gilt Rhh [l ]
1 l 0.8 4
Die gesuchte AKF bei normiertem Eingangssignal ist schließlich RYY [l ] V X2 Rhh [l ]
A15.4
V X2 4
0.8
l
Berechnung der AKF im Bildbereich Für die Rücktransformation ist es günstig die Partialbruchzerlegung in folgender Form zu verwenden )( z ) z
H ( z ) H ( z 1 ) z
0.32
z 1 1 z 0.8 z 1 0.8
0.32 1 1 0.8 z 0.8 z 1.25
0.32 1 · § 1 ¨ ¸ 0.8 0.45 © z 0.8 z 1.25 ¹
so dass sich ergibt )( z )
0.32 z · § z ¨ ¸ 0.8 0.45 © z 0.8 z 1.25 ¹
Transformiert man nur den kausalen Anteil, d. h. nur den Pol im Einheitskreis, so resultiert Rhh [l t 0]
1 0.8l 4
und damit weiter wie in Aufgabe A15.2. Im(z) z
1
Re(z)
Bild 20-45 Pol-Nullstellendiagramm der z-Transformierten der AKF RYY[l]
A15.5
Statistische Kenngrößen am Systemausgang Linearer Mittelwert: PX = 1/2 und PY = PX H(1) = 3/4
268
20 Lösungen zu den Versuchen Die Berechnung des zweiten Moments, des quadratischen Mittelwerts und der mittleren Leistung, am Systemausgang gestaltet sich nicht ganz so einfach, da am Systemeingang zwar ein unabhängiger aber nicht mittelwertfreier Prozess anliegt. Es liegt kein weißer Prozess vor, der die Anwendung von (15.10) erlauben würde. Stattdessen ist die ursprüngliche Faltungsbeziehung in Tabelle 15-1 mit der AKF des Eingangsprozesses RXX[l] anzuwenden. Die AKF des Eingangsprozesses kann mit der Definitionsgleichung in Tabelle 14-4 berechnet werden, wobei die Unabhängigkeit der stochastischen Variablen Xn und Xnl für l z 0 gilt. Für l = 0 sind sie identisch.
RXX [l ]
E ( X n X n l )
°° E ( X n ) E ( X n l ) ® 1 °E X 2 n °¯ 3
1 lz0 4 l
0
Damit lässt sich für die AKF des unkorrelierten Prozesses schreiben RXX [l ]
m2 X P X2 G [l ] P X2
1 1 G [l ] 12 4
V X2
Der Impulsanteil spiegelt die Varianz und die Konstante das Quadrat des linearen Mittelwertes des Prozesses wider. Für die AKF am Systemausgang gilt R XX [l ] Rhh [l ]
RYY [l ]
V X2 G [l ] P X2 Rhh [l ]
V X2 Rhh [l ] P X2
f
¦
n f
Rhh [n]
Mit f
¦
n f
Rhh [n]
S XX (:
0)
H 2 (1)
erhält man RYY [l ] V X2 Rhh [l ] P X2 H 2 (1)
und daraus die gesuchten Größen m2X = 1/3
m2Y
V X2 Rhh [0] P X2 H 2 (1)
PY2
V Y2
VX2 = 1/12
V Y2
V X2 Rhh [0]
1 1 12 4
1 48
1 9 48 16
28 48
7 12
20.15 Lösung: Stochastische Signale und LTI-Systeme
269
Abbildung einfacher Kenngrößen durch das LTI-System H1(z)
A15.6
P
m2
V2
Eingang
1/2
1/3
1/12
Ausgang
3/4
7/12
1/48
Berechnung der Zeit-AKF mit MATLAB b = [.3 0]; a = [1 -.8]; h = impz(b,a,51); % impulse response Rhh = conv(h,flipud(h)); % time acf shifted to the right by M-1 stem(-50:50,Rhh,'full'), grid
A15.7
Berechnung der Leistungsübertragungsfunktion mit MATLAB Phi = abs(freqz(b,a,Ndft,'whole')).^2;% power transfer function
M15.5
Mit den Programmzeilen b = [.3 0]; a = [1 -.8]; x = rand(1e6,1); y = filter(b,a,x); [c,f,m1,m2] = histogram(y,40,-.5,1.5,'gauss')
wurden bei einem Stichprobenumfang von 106 die Schätzwerte ermittelt Linearer Mittelwert
0.7497
Quadratischer Mittelwert
0.5830
Varianz
0.0209
Die Werte harmonieren gut mit den berechneten Werten in Tabelle 15-2. Das aufgenommene Histogramm entspricht im Rahmen der Ablesegenauigkeit einer gaußschen Glockenkurve. M15.6
Wird der Stichprobenumfang bei der Schätzung der AKF zu klein (z. B. nur 104) gewählt und/oder werden bei der Berechnung des LDS aus den Schätzwerten der AKF nicht alle wesentlichen Koeffizienten der AKF erfasst (z. B. nur 11 Koeffizienten), so ergeben sich im Grafen des geschätzten LDS deutliche Abweichungen zum berechneten LDS. Obendrein zeigt sich, dass die Simulation mit der gleichverteilten Zufallszahlenfolge rand zu relativ stark schwankenden Ergebnissen führt. Die Messung der AKF und des LDS sollte deshalb bevorzugt mit mittelwertfreien Zufallszahlenfolgen erfolgen, siehe Programm dsplab15_1.
M15.7
Zeit-AKF und Leistungsübertragungsfunktion des Systems H2(z) siehe Bild 20-46. Beim System H3(z) handelt es sich um einen Allpass mit konstanter Leistungsübertragungsfunktion. Beim Durchgang durch einen Allpass ändert der Prozess seine Korrelation nicht.
270
20 Lösungen zu den Versuchen
R[l] / R[0] o
1 0.5 0 -0.5
S(: ) / max(S(: )) o
-1
0
5
10
15
20
0
0.1
0.2
0.3
0.4
25 lo
30
35
40
45
50
0.5
0.6
0.7
0.8
0.9
1
1
0.5
0
: / So
Bild 20-46 Schätzungen der Zeit-AKF und der Leistungsübertragungsfunktion zum System H2(z) mit dem Programm dsplab15_1 % Estimation of the auto-correlation function (acf) and computation % of the power density spectrum (pds) using the estimated acf and % the dft with zero-padding % dsplab15_1.m * mw * 06/12/2008 M = 51; % number of acf coefficients N = 1e6; % number of signal samples per block Ndft = 256; % dft length b = [0.06 0.12 0.06]; % numerator coefficients H2 a = [1 -1.3 0.845]; % denominator coefficients H2 % b = [0.845 -1.3 1]; % numerator coefficients H3 % a = [1 -1.3 0.845]; % denominator coefficients H3 x = randn(1,N); % normally distributed random signal y= filter(b,a,x); % filtering Ryy = xcorr(y,M,'unbiased'); % auto-correlation sequence %% Compute pds from acf estimates with zero-padding to length Ndft Syy = fft([Ryy zeros(1,Ndft-2*M+1)]); Syy = abs(Syy); % compensate for numerical impairments %% Compute analytical values h = impz(b,a,M); % impulse response Rhh = conv(h,flipud(h)); % time acf Phi = abs(freqz(b,a,Ndft,'whole')').^2; % power transmission function %% Graphics FIG1=figure('Name','dsplab15_1: estimates of acf and pds','NumberTitle','off',... 'Units','normal','Position',[.4 .4 .45 .45]); subplot(2,1,1), plot(0:M-1,Rhh(M:2*M-1)/Rhh(M),0:M1,Ryy(M+1:2*M)/Ryy(M+1),'o'), grid axis([0 M-1 -1 1]); xlabel('{\itl} \rightarrow'),ylabel('{\itR}[{\itl}] / {\itR}[0] \rightarrow') hold on
20.15 Lösung: Stochastische Signale und LTI-Systeme
271
subplot(2,1,1), stem(0:M-1,Ryy(M+1:2*M)/Ryy(M+1),'full') hold off f = 2*(0:Ndft/2-1)/Ndft; subplot(2,1,2), plot(f,Phi(1:Ndft/2)/max(Phi),f,Syy(1:Ndft/2)/max(Syy),'ok','LineWidth ',1), grid xlabel('\Omega / \pi \rightarrow'),ylabel('{\itS}(\Omega) / max({\itS}(\Omega)) \rightarrow') axis([0 1 0 1]);
Bidimensionale WDF und zugehörige Höhenlinien für den Prozess am Systemausgang bei Verschiebung l = 4, siehe Bild 20-47 und dsplab15_2.
M15.8
In Bild 20-47 erkennt man die negative Korrelation zwischen den beiden stochastischen Variablen X1 = X[n] und X2 = X[n+1], die aus der AKF in Bild 20-46 mit RXX[1] / Rhh[0] | 0.7 abgelesen werden kann. X1 und X2 treten deshalb bevorzugt mit ungleichen Vorzeichen auf, d. h. „+ “ und „ +“. Dies ist aus der bidimensionalen WDF deutlich daran zu erkennen, dass ihre Funktionswerte bei der Nebendiagonale (im Bild, y = x) der (x1, x2)-Ebene relativ am größten sind, d. h. entsprechende Wertepaare häufiger auftreten. Der Korrelationskoeffizient, d, h. hier der entsprechende Wert der AKF, bestimmt die Form der Höhenlinien. Im unkorrelierten Fall sind die Höhenlinien Kreise; und ist der Korrelationskoeffizient negativ, dann sind die Höhenlinien linksgeneigte Ellipsen.
2 1 0. 0
0.05
0.8
1
yo
0
0. 05 0.
-0.5
01
-1 1
2 0 -1
my
-2
-2
0
-1 xo
1
0.2
00.1 . 15 0.05 0.01
-1.5 -2 -2
0.01
0 2
5 0. 0 .1 0 5 0.01.2
0.2
01 0.
0.4
00. 1 0.0 . 25 0. 5 1
5 0. 10.1
0.5
1 0.0
f(x,y) o
0.6
0.0 1
0.05 0.1 0.2
1.5
-1.5
-1
-0.5
0 xo
0.5
1
1.5
2
Bild 20-47 Bidimensionale WDF der stochastischen Variablen am Filterausgang von H2(z) für die Verschiebung l = 4 bei weißem gaußschen Rauschen am Eingang und ihre Höhenlinien (dsplab15_2)
M15.8
Streudiagramme für den Prozess am Systemausgang bei Verschiebung l = 1, 2, …, 6, siehe Bild 20-48 und dsplab15_3. Die Streudiagramme zeigen besonders anschaulich den Zusammenhang der Folgenelemente in der Musterfolge. Die oben, anhand der bidimensionalen WDFen, getroffenen Aussagen bestätigen sich hier.
272
20 Lösungen zu den Versuchen
20.16
Lösungen: Analog-Digital-Umsetzung
M16.1
Das Audiosignal speech liegt mit der Abtastfrequenz fs = 16 kHz vor. Mit einem Unterabtastfaktor von 16, d. h. der Grenzfrequenz (fs / 2) / 16 = 500 Hz ist die Sprache noch verständlich, siehe Programm dsplab16_1.
1
1
0.5
0.5
0.5
0 -0.5 0 x[n] o
1
x[n + 5] o
x[n + 4] o
-0.5 -1 -1
0 x[n] o
0 -0.5 -1 -1
1
1
1
0
-1 -1
0
0 x[n] o
1
0.5 0 -0.5 -1 -1
0 x[n] o
1
0 x[n] o
1
1 x[n + 6] o
-1 -1
x[n + 3] o
1 x[n + 2] o
x[n + 1] o
Anmerkung: Für eine verlässliche Aussage benötigen Sie eine Ihnen unbekannte Sprachprobe, da Sie die Verständlichkeit bei bekanntem Text nicht wirklich testen können. In der Audiotechnik unterscheidet man zwischen Satz- und Silbenverständlichkeit.
0 x[n] o
1
0
-1 -1
Bild 20-48 Streudiagramme für die stochastischen Variablen am Filterausgang von H2(z) für die Verschiebung l = 1, 2, …, 6 bei weißem gaußschen Rauschen am Eingang (dsplab15_3)
M16.2
Die Abtastung der Kosinussignale mit 1 kHz und 7 kHz mit der Abtastfrequenz von 8 kHz zeigt, dass die beiden abgetasteten Signale nicht unterschieden werden können, siehe auch Programme dsplab16_1b und c. Sie ist nur durch Einhalten des Abtasttheorems zu vermeiden, siehe auch Aliasing-Effekt. Bei der Abtastung eines 4-kHz-Kosinussignals mit der Abtastfrequenz von 8 kHz geht im Allgemeinen die Amplitudeninformation verloren. Beispielsweise ist je nach Phasenlage eine Abtastung 1, 1, 1, 1, 1, 1, 1, … oder in den Nulldurchgängen 0, 0, 0, 0, ... möglich. Anmerkung: Bei realer Abtastung ergeben sich gewisse zeitliche Schwankungen zwischen den Abtastzeitpunkten, Phasenjitter genannt.
A16.2
Bestimmung des Maschinen-Epsilons mit MATLAB x = 1; n = 0; % initial values while 1 + x > 1 x = x/2; n = n + 1; end fprintf('No. of iterations %g , machine epsilon %g \n ',n1,2*x)
20.16 Lösungen: Analog-Digital-Umsetzung A16.3
273
Zweierkomplement-Format
Wortlänge
w
8 bit
16 bit
Kleinste positive Zahl (LSB)
2(w/bit1)
27 = 7.8125103
215 | 3.0518105
Größte positive Zahl (1LSB)
12(w/bit1)
0.9921875
| 0.999969482
Kleinste negative Zahl
1
1
1
Dynamik (1LSB)/LSB
(12(w/bit1)) / 2(w/bit1) | 2 w/bit1
127
32768
LSB/2
28 = 3.90625103
216 | 1.5259105
Präzision
A16.4
Beispiele für das Zweierkomplement-Format mit w = 8 bit
x
x2c
[x]Q
x
x2c
[x]Q
0.996
7FHex
0.9921875
0
00Hex
0
0.125
10Hex
0.125
0.125
F0Hex
0.125
0.004
01Hex
0.0078125
1
80Hex
1
Theoretisch
Single Precision
Double Precision
2 Emax (1 M f ,max )
| 2128
| 21024
A16.5
Normalisierte Zahlendarstellung nach IEEE 754-1985
Größte positive Maschinenzahl
|2
Kleinste positive Maschinenzahl (normalisiert)
2 Emin
Kleinste Maschinenzahl1 größer 1 (normalisiert)
1 2 wM
Dynamik Präzision2
| 2
| 3.4028 10
| 1.7976 10308
2126
21022 38
| 1.1755 10 bit
Emax 1 Emin
2
38
wM bit 1
| 2.2251 10308
1 + 223
1 + 252 7
| 1+1.1921 10
| 1+2.2204 1016
| 2254
| 22046
| 2.8948 1076 224
253
| 5.9605 108
| 1.1102 1016
1
f0 = 1 und f1, f2, ... = 0
2
Aussteuerungsunabhängiger Quantisierungsfehler aufgrund der Wortlänge der Mantisse
274
20 Lösungen zu den Versuchen
M16.3 u. 4 MATLAB-Maschinenzahlen eps
= 2.220446049250313e-016
realmin = 2.225073858507201e-308 realmax = 1.797693134862316e+308
Die Werte entsprechen den Angaben zum Zahlenformat nach IEEE 754-1985 in der Vorbereitung Hinweis: Bildschirmanzeige mit MATLAB-Befehl format long e. M16.5
Quantisierungskennlinien und Fehlersignale, siehe Programme dsplab16_2, b und c 1
[x]Q o
0.5 0 -0.5 -1 -1
-0.8
-0.6
-0.4
-0.2
0 xo
0.2
0.4
0.6
0.8
1
-0.8
-0.6
-0.4
-0.2
0 xo
0.2
0.4
0.6
0.8
1
0.4
'o
0.2 0 -0.2 -0.4 -1
Bild 20-49 Quantisierung mit Abschneiden eines sinusförmigen Signals für w = 3 bit (dsplab16_2c)
M16.6
Quantisierungsfehler und SNR, siehe Programm dsplab16_3 u. b Das Sprachsignal scheint bei einer Wortlänge von 4 Bits noch verständlich zu sein.
20.17
Lösungen: Reale digitale Filter: Koeffizientenquantisierung
A17.1
Zweierkomplement-Darstellung mit der Wortlänge w in bit. xq = round(x*2^(w-1)) / 2^(w-1);
A17.2
Abschätzung der maximalen Frequenzgangsabweichung (L = N +1 = 21) Wortlänge w Quantisierungsintervallbreite Q maximale Frequenzgangabweichung
8 bit 7
2
16 bit 215
< 0.082
< 0.000320
(21.7 dB)
(69.8 dB)
20.17 Lösungen: Reale digitale Filter: Koeffizientenquantisierung
275
Beim Entwurf selektiver Filter kann durch die Quantisierung der Koeffizienten der Frequenzgang des implementierten Filters das Toleranzschema verletzen. Speziell im Sperrbereich bedeuten obige Abweichungen, dass die minimale Sperrdämpfung im ungünstigsten Fall 21.7 dB bzw. 69.8 dB nicht überschreitet. A17.3
Die verallgemeinerte lineare Phase eines FIR-Filters beruht auf der Symmetrie der Koeffizienten. Weil Koeffizienten mit gleichen Werten bei der Quantisierung gleich behandelt werden, bleibt diese Eigenschaft erhalten.
M17.1
Die Koeffizienten des idealen Filters können beispielsweise mit dem Programm qant2c.m quantisiert werden. Die Filterkoeffizienten werden in der Datei h.mat zur Verfügung gestellt. Sie können mit dem Befehl load h in den Workspace geladen werden: Impulsantwort des idealen Systems h, des quantisierten Systems hq und des Fehlersystems hd. Mit fvtool(h,1,hq,1,hd,1) werden die Impulsantworten gemeinsam an das Filteranalyse- und Designwerkzeug von MATLAB übergeben und können dort ausgewertet werden, siehe Bild 20-50. Die Grafik des Betragsfrequenzgangs zeigt, dass der maximale Fehler im Durchlassbereich bei : = 0 entsteht mit H(1) < 1.04. Die größte Abweichung im Sperrbereich ist 0.015 (36.5 dB). Damit wird eine Sperrdämpfung von mindestens 36.5 dB eingehalten. Sie ist deutlich höher als die Fehlerabschätzung (17.4) mit 0.082 (21.7 dB) anzeigt. Die im Toleranzschema geforderte Sperrdämpfung von 47 dB wird jedoch um eine Größenordnung unterschritten. Impulsantworten zum FIR-Tiefpassentwurf Auszug für n = 0, 1, 2 und 3 n 0
Equiripple-FIR-Design, h[n] 0.0053550324027329
1
0.0139252761666236
2
0.0138426203120336
3
0.0006013881525067
Wortlänge 8 Bits, [h[n]]Q
Fehlersystems, hd[n]
0.0078125 0.0156250 0.0156250 0
0.0024575 0.0016997 0.0017824 0.0006014
Bei der Wortlänge von 16 Bits ist die Abweichung relativ gering. Aus (17.4) folgt bei einer Filterordnung von N = 20 eine Sperrdämpfung von 20log10(212016) dB | 69.8 dB. Damit ist theoretisch eine Sperrdämpfung des realen Systems von mindestens 69.8 dB erreichbar. Verdoppelt man die Filterordnung, so ergibt sich in der Abschätzung eine Degradation von 6 dB. Wird das Toleranzschema nicht erfüllt, so können die Toleranzen beim Entwurf etwas enger vorgegeben werden. Damit lassen sich häufig die ursprünglichen Vorgaben mit 16-Bit-Koeffizienten einhalten; Allerdings bei höherer Filterordnung und damit Mehraufwand bei der Realisierung. Im Beispiel wird das Toleranzschema auch mit den 16-Bit-Koeffizienten eingehalten.
276
20 Lösungen zu den Versuchen
Bild 20-50 Betragsfrequenzgang des idealen Systems, des quantisierten Systems (8 Bits) und des Fehlersystems (fvtool)
M17.2
Siehe ausführliches Beispiel in der Versuchsvorbereitung A17.4 und fdatool, quant2cIIR, sos2tf, fvtool und sos2.mat Es ergibt sich ein System 8. Ordnung. Bei Quantisierung der Koeffizienten in Kaskadenform auf die Wortlänge von 8 Bits treten erhebliche Abweichungen auf. Der Durchlassbereich ist nicht mehr flach, siehe Bild 20-51. Nach Skalierung des Betragsfrequenzgangs auf 1 beträgt er an der normierten Durchlasskreisfrequenz, : = 0.4S, nur etwa 0.89. Die Sperrdämpfung von 80 dB wird nicht eingehalten. Sie erreicht nur noch ca. 63 dB. Der Vergleich der Lagen der Pole und Nullstellen vor und nach der Quantisierung lässt in Bild 20-52 deutliche Verschiebungen erkennen. (fvtool(bq,aq,b,a)) Bei der Wortlänge von 16 Bits wird das Toleranzschema im Rahmen der Ablesegenauigkeit eingehalten. Erst nach Anwenden der Lupen-Funktion werden geringe Abweichungen sichtbar.
20.17 Lösungen: Reale digitale Filter: Koeffizientenquantisierung
277
Magnitude Response (dB) 0
Ideal system
-10
Quantized system, w = 8 bit
-20
Magnitude (dB) (normalized to 0 dB)
-30
-40
-50
-60
-70
-80
-90
-100
0
0.1
0.2
0.3
0.4 0.5 0.6 Normalized Frequency (uS rad/sample)
0.7
0.8
0.9
Bild 20-51 Betragsfrequenzgänge für das auf die Wortlänge von 8 Bits quantisierte System und für das nichtquantisierte System (fvtool) Pole/Zero Plot 1
0.8
0.6
0.4
2 Imaginary Part
0.2
0
-0.2
2
-0.4
-0.6 Zeros Poles -0.8
Quantized zeros Quantized poles Unit circle
-1 0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
Real Part
Bild 20-52 Pol-Nullstellendiagramm für das auf die Wortlänge von 8 Bits quantisierte System und für das nichtquantisierte System (fvtool)
278
20 Lösungen zu den Versuchen
20.18
Lösungen: Reale digitale Filter: Quantisierte Arithmetik
A18.1
Kleiner Grenzzyklus, siehe Bild 20-53 Zustandsgrößen kleiner Grenzzyklus mit Periode 6 n
0
1
2
3
4
5
6
x1[n]
0.2
0
0.2
0.2
0
0.2
0.2
x2[n]
0.2
0.2
0
0.2
0.2
0
0.2
s2 / LSB 4 3
4
2 4
5 0
4
1
s1 / LSB
n = 0, 6, 12, ...
4
Bild 20-53 Kleiner Grenzzyklus
A18.2
Großer Grenzzyklus, siehe Bild 20-54 Zustandsgrößen mit Überlaufkennlinie Großer Grenzzyklus mit Periode 8 n 0 1 2 3 4 5
A18.3
s2[n] 0.5 0.3 0.4 0.4 0.4 0.5
s1[n] 0.5 0.7 0.7 0.6 0.8 0.4
n 6 7 8 9 10 11
s2[n] 0.2 0.6 0.2 0.5 0.4
s1[n] 0.9 0.4 0.8 0.6 0.7
Inneres Geräusch Bei der Simulation dürfen keine Überläufe auftreten, da sonst der lineare Charakter des Systems verloren geht. Treten Überläufe auf, so ist der Skalierungsfaktor c zu verkleinern.
20.18 Lösungen: Reale digitale Filter: Quantisierte Arithmetik
279
s2 1
1/2
n = 2, 10, …
4 8 6
0 1
1/2
1
1/2
s1
3 1/2
5 9
7
1
Bild 20-54 Großer Grenzzyklus
M18.1
Beispiele für kleine Grenzzyklen in einem Block 2. Ordnung mit Runden nach der Multiplikation auf die Wortlänge von 16 Bits bei kleiner Impulserregung mit 16*LSB. Angegeben sind die kleinsten und größten Werte, ymin bzw. ymax, und die Periode der Grenzzyklen, siehe auch Bild 20-55.
Polwinkel M
ymin / LSB
ymax / LSB
Periode
0°
118
118
1
30°
11
11
12
60°
5
5
28
90°
5
5
4
Anmerkung: Variiert man die Amplitude der Impulserregung, oder wählt andere Polwinkel, so schwanken die Amplituden und Perioden der Grenzzyklen stark.
Im Falle des Betragsabschneidens konnten keine kleinen Grenzzyklen beobachtet werden.
280
20 Lösungen zu den Versuchen
y[n] / LSB o
20 10 0 -10 -20
0
20
40
60
-5 -5
-4
-3
-2
80
100 120 140 no limit cycle with periode 28
160
180
200
3
4
5
s 2[n] / LSB o
5
0
-1 0 1 s 1[n] / LSB o
2
Bild 20-55 Kleiner Grenzzyklus (dsplab18_1, phi = 120°)
M18.2
Beispiele für Grenzzyklen in einem Block 2. Ordnung mit Zweierkomplement-Überlauf und Runden der Multiplikationsergebnisse bei „großer“ Impulserregung mit der Amplitude 0. 75. Angegeben sind die kleinsten und größten Werte, ymin bzw. ymax, und die Periode der Grenzzyklen für eine Wortlänge von 16 Bits. Polwinkel M
ymin / LSB
ymax / LSB
Periode
0°
23319
22618
24
30°
25689
24742
33
60°
90°
Im Falle des Betragsabschneidens und mit Sättigungskennlinie konnten keine großen Grenzzyklen beobachtet werden.
20.18 Lösungen: Reale digitale Filter: Quantisierte Arithmetik M18.3
281
Inneres Rauschen eines Blockes 2. Grades, siehe Bild 18-4, mit Zähler Koeffizienten b0 = 0.9375, b1 = b2 = 0, Polradius Uf = 0.95 und der Wortlänge von 16 Bits bei Wortlängenverkürzung durch Runden (Signallänge N = 105) Leistung des inneren Rauschens in dB Polwinkel Mf
theoretisch
geschätzt
0°
60.1
60.1
30°
80.0
80.1
60°
84.8
84.8
89°
86.0
86.0
90°
90.8
90.7
Bei dem Polwinkel 90° liegen die beiden konjugiert komplexen Pole auf der imaginären Achse. Ihre Realteile und somit auch der Koeffizient a1 sind gleich null. Dadurch reduziert sich die Zahl der effektiven inneren Rauschquellen, siehe auch Bild 18-7, in der Simulation von 6 auf 2. Die Leistung des inneren Rauschens am Systemausgang nimmt um den Faktor 3 bzw. im logarithmischen Maß um ca. 4.7 dB ab. Inneres Geräusch eines Blockes 2. Ordnung, siehe Bild 16-4, mit Zähler Koeffizienten b0 = 0.9375, b1 = b2 = 0, Polradius Uf = 0.95, Polwinkel Mf = 30° und Wortlängenverkürzung durch Runden (Signallänge N = 105) Wortlänge 16 bit 14 bit 12 bit 10 bit
Leistung des inneren Rauschens 80.3 dB 70.8 dB 58.7 dB 46.7 dB
Die Leistung des inneren Geräusches nimmt mit wachsender Wortlänge ab, gemäß der Faustformel (16.19) um 6 dB pro zusätzlichem Bit Wortlänge. M18.4
Inneres Rauschen des Cauer-Tiefpasses 6. Ordnung Die Simulationen ergeben eine Differenz von 4.6 dB in den Leistungen der inneren Geräusche. Durch ungünstige Wahl der Reihenfolge kann sich das innere Geräusch mehr als verdoppeln. Man spricht auch von einem Verlust bzw. Gewinn von mehr als einem halben Bit an Präzision. Leistung des inneren Rauschens Ni eines Cauer-Tiefpasses 6. Ordnung in Kaskadenform mit quantisierter Arithmetik bei der Wortlänge von 16 Bits (Signallänge N = 105) Reihenfolge Ni in dB
123
132
213
231
312
321
78.0
80.8
76.9
76.2
79.7
76.9
282
20.19
20 Lösungen zu den Versuchen
Lösungen: Lernkontrollfragen zu stochastischen Signalen und realen Systemen
20.19.1 Aufgabenkatalog A 19A1
a) Histogramm, siehe Bild 20-56 45 40 35
h(x) o
30 25 20 15 10 5 0
0
1
2
3
4
5
xo
Bild 20-56 Histogramm
b) Approximierende Wahrscheinlichkeitsdichtefunktion der Normalverteilung Linearer Mittelwert P = 2.45 und Varianz V 2 = 0.77 WDF der Verteilung N(2.45, 0.77) f ( x)
19A2
§ > x 2.45@2 exp ¨ ¨ 2 0.77 2S 0.77 © 1
· ¸ ¸ ¹
a) Linearer Mittelwert PX = 0.2 und Varianz V X 2 = 0.25 b) Linearer Mittelwert am Systemausgang
PY = PX H(1) = 0.5 Mittlere Leistung bei weißem Eingangsprozess (Varianz), siehe auch A15.3
V Y 2 = V X 2 Rhh[0] = 0.25 0.25 0.80 = 0.0625 Mittlere Leistung am Systemausgang m2Y = V Y 2 + PY 2 = 0.0625 + 0.25 = 0.3125 19A3
Quantisierungsfehler sind Fehler, die bei der Umwandlung reeller Zahlen in Maschinenzahlen aufgrund der begrenzten Wortlänge gemacht werden; im engeren Sinne bei der A/D-Umsetzung und der Darstellung der Filterkoeffizienten. Letzteres wirkt sich auf die Übertragungsfunktion und die Impulsantwort. Quantisierungsfehler können bei IIR-Systemen zur Instabilitäten führen. Arithmetikfehler sind Fehler, die sich durch Wortlängeneffekte nach arithmetischen Operationen im System während des laufenden Betriebs ergeben. Nach der
20.19 Lösungen: Lernkontrollfragen zu stochastischen Signalen und realen Systemen
283
Multiplikation führt die Wortlängenverkürzung zum inneren Rauschen und eventuell zu kleinen Grenzzyklen. Bei der Addition können Überläufe und gegebenenfalls große Grenzzyklen auftreten. 19A4
Zweierkomplement-Darstellung 0.6875d = 1010 10002c +0.3672d = 0101 11102c 0.3672d = 1010 00102c
19A5
a) 4 Teilsysteme, siehe Bild 20-57
Pole/Zero Plot 1 0.8
Teilsystem 1
Teilsystem 2
0.6
Imaginary Part
0.4
Teilsystem 3 Teilsystem 4
0.2 0 -0.2 -0.4 -0.6 -0.8 -1 -1.5
-1
-0.5
0
0.5
1
1.5
Real Part
Bild 20-57 Pol-Nullstellendiagramm
b) In steigender oder abfallender Ordnung: 1, 2, 3 und 4 bzw. 4, 3, 2 und 1.
20.19.2 Aufgabenkatalog B 19B1
Weißes Rauschen: x2[n] und x4[n], regeloses Signal, keine Bindungen erkennbar Tiefpass-Rauschen: x3[n], starke positive Korrelation aufeinanderfolgender Werte Hochpass-Rauschen: x1[n], starke negative Korrelation aufeinanderfolgender Werte (aufeinanderfolgende Vorzeichenwechsel), Einhüllende erkennbar wie bei Amplitudenmodulation eines Tiefpass-Signals mit einem Träger mit normierter Trägerkreisfrequenz bei S.
284 19B2
20 Lösungen zu den Versuchen a) Linearer Mittelwert PX = 0.2 und Varianz V X 2 = 0.81 b) Linearer Mittelwert am Systemausgang
PY = PX H(1) = 0.2 Mittlere Leistung bei weißem Eingangsprozess (Varianz)
V Y 2 = V X 2 Rhh[0] = 0.81 0.5 = 0.405 mit S /2
Rhh [0]
1 1d : 2S S³/ 2
1 2
Mittlere Leistung am Systemausgang m2Y = V Y 2 + PY 2 = 0.405 + 0.2 = 0.605 19B3
a) Als kleine Grenzzyklen bezeichnet man periodische Schwingungen an den Systemausgängen die durch Wortlängenverkürzungen nach Multiplikationen im System entstehen. Durch Aufrunden wird dem System Energie zugeführt, so dass trotz abgeklungener Erregung (zero-input limit cycle) am Ausgang eine periodische Schwingung in der Größe weniger Quantisierungsintervallbreiten (granular limit cycle) beobachtet werden kann. Als Gegenmaßnahme wird in der Regel das Betragsabschneiden angewendet, so dass kleine Grenzzyklen meist vermieden werden. Weitere Gegenmaßnahmen sind das Zufallsrunden oder spezielle Filterstrukturen. b) Als große Grenzzyklen bezeichnet man periodische Schwingungen die durch Überläufe nach Additionen entstehen, auch Überlaufschwingungen (overflow oscillations) genannt. Die Amplituden der großen Grenzzyklen nehmen in etwa den darstellbaren Wertebereich ein. Als Gegenmaßnahme werden beispielsweise Sättigungskennlinien eingesetzt.
19B4
aus s = 1, e7, …, e0 = 0111 1111 und Mf = 0 folgt die Dezimal-Darstellung 1 2127127 (1+0) = 1 aus 1.625 = 1 + 0.625 folgt s = 0, E = 0 und Mf = 1010 … und weiter 1011 1111 1101 0000 0000 0000 0000 00002 = BFD0 0000hex
19B5
a) Varianz nach Zusammenfassen der inneren Rauschquellen
V 2 = 8 Q2 / 12 mit Q = 2(w/bit1) b) Vorteil: Es gibt nur eine Additionsstelle, so dass Überläufe bei einer Zwischenaddition kompensiert werden können. Für die Realisierung bietet sich ein Akkumulator mit verlängerter Wortlänge an. Eine Wortlängenverkürzung nach der Multiplikation ist dann erst für den Ausgangswert notwendig. Nachteil: Es werden vier Speicherplätze für die inneren Größen benötigt.
285
Formelzeichen und Abkürzungen Konstanten und Variablen 'f ':m : :S , :D
Bkl G N Ni Q Ri Ts X, Y as,dB ak bl d f fs m2 n rxy s = V + jZ s2 t w wN
DFT-Frequenzauflösung /-raster Hauptzipfelbreite (main lobe width) normierte Kreisfrequenz (normalized radian frequency) normierte Sperr- bzw. Durchlasskreisfrequenz (normalized stop/passband cutoff frequency) Formparameter des Kaiser-Fensters Sperr- bzw. Durchlasstoleranz (stop/passband tolerance) linearer Mittelwert ((linear) mean) Korrelationskoeffizient (correlation coefficient) Varianz (variance) Kreisfrequenz Koeffizient der Partialbruchzerlegung (partial fraction expansion) Gewinn (gain) Filterordnung (filter order) Leistung des inneren Geräusches Quantisierungsintervallbreite (quantization stepsize) Rauschzahl für das innere Rauschen (Geräusch) Abtastintervall (sampling interval/period) stochastische Variablen Nebenzipfeldämfung (side lobe attenuation) Nennerkoeffizient von H(z) (denominator coefficient) Zählerkoeffizient von H(z) (numerator coefficient) Klirrfaktor (distortion) Frequenz (frequency) Abtastfrequenz (sampling frequency) quadratischer Mittelwert (quadratic mean) normierte Zeitvariable (normalized time variable) empirischer Korrelationskoeffizient komplexe Variable der Laplace-Transformation empirische Varianz (empirical variance) Zeit (time) Wortlänge in bit (wordlength) komplexer Faktor der DFT
x , x2
linearer/ quadratischer Mittelwert (linear/ quadratic mean)
E GS , GD P U V2 Z
jM
z = Ue z 0 , zf
komplexe Variable der z-Transformation mit Absolutbetrag (Modul) und Winkel oder Phase (Argument) Nullstelle bzw. Pol von H(z) (zero/pole)
286
Formelzeichen und Abkürzungen
Signale und Funktionen G[n] Wg(:)
Gruppenlaufzeit (group delay)
)(x)
gaußsches Fehlerintegral
)hh(z) erf(x)
z-Transformierte der Zeit-AKF zu h[n] Fehlerfunktion (error function)
H(ej:)
Frequenzgang (frequency response)
j: 2
|H(e )| H(z) Rhh [l] RXX [l]
Impulsfolge (unit sample sequence, unit impulse sequence)
Leistungsübertragungsfunktion Übertragungsfunktion für zeitdiskrete Systeme (transfer function) Zeit-AKF zu h[n] (deterministic acf) AKF (acf)
LDS (pds) SXX (:) V(X), Var(X) Varianz (variance) X(ej:) X[k] X[n]
Fourier-Spektrum einer Folge DFT-Spektrum stochastischer Prozess (stochastic process)
a(:)
Dämpfungsfrequenzgang (attenuation, loss function)
b(:) fX (x) fXY(x,y) h[n] s[n] s1[n], s2[n] u[n] w[n] x[n]
Phasenfrequenzgang (phase response) WDF (pdf) Verbund-WDF Impulsantwort ((unit) impulse response) Sprungantwort ((unit) step response) Zustandsvariable (state-space variable) Sprungfolge (unit step sequence) Fensterfolge (window sequence) zeitdiskrete Funktion/Signal, Folge (discrete-time signal, sequence)
Operatoren und Transformationen [.]Q *
quantisierter Wert (quantized value) Faltungsoperator, Faltungsstern (convolution operator, asterisk)
x[n]
Zeitmittelwert (time average)
Cov(X) D(.) E(.)
Kovarianz (covariance) Verzögerungsoperator (delay operator) Erwartungswert (expected value, ensemble average)
x[n] l X[k] DFT-Paar (DFT pair) x[n] l X(z) z-Transformationspaar (z-transform pair)
Formelzeichen und Abkürzungen
287
Abkürzungen AKF
Autokorrelationsfunktion (autocorrelation function, acf)
BIBO
bounded input bounded output
BP
Bandpass (bandpass)
BS
Bandsperre (bandstop)
BW-TP
Butterworth-Tiefpass
DFT
diskrete Fouriertransformation (discrete Fourier transform)
DGL
lineare Differenzengleichung (linear difference equation)
DSP
digitaler Signalprozessor / digitale Signalverarbeitung (digital signal processor/ processing)
DTMF
Dial-Tone Multi-Frequency
FFT
schnelle Fouriertransformation (fast Fourier transform)
FIR
finite impulse response
FLOP
Gleitkomma-Operation (floating point operation)
HP
Hochpass (highpass)
IDFT
inverse DFT (invers DFT)
IIR
infinite impulse response
LDS
Leistungsdichtespektrum (power density function, pds)
LSB
least significant bit
LTI
linear und zeitinvariant (linear time-invariant)
MAC
Multiply-and-Accumulate
SNR
Signal-Quantisierungsgeräusch-Verhältnis, Signal-Rausch-Verhältnis (signal-tonoise ratio)
SOS
Block 2. Ordnung (second order system)
TP
Tiefpass (lowpass)
WDF
Wahrscheinlichkeitsdichtefunktion (probability density function, pdf)
dB
Dezibel (decibels)
288
Literaturverzeichnis Zur digitalen Signalverarbeitung liegt eine unüberschaubare Vielzahl von Veröffentlichungen vor. Seit einiger Zeit erscheinen immer mehr Bücher die intensiv MATLAB verwenden. Auf der Web-Seite von The MathWorks, mathworks.com/support/books, findet man eine umfangreiche Zusammenstellung von weiteren relevanten Büchern. Eine Übersicht über aktuelle Themen in der digitalen Signalverarbeitung findet man in der alle zwei Monate erscheinenden Fachzeitschrift IEEE Signal Processing Magazine des Institute of Electrical and Electronics Engineers (IEEE), ieee.org .
[ABRW07] A. Angermann, M. Beuschel, M. Rau, U. Wohlfarth: Matlab – Simulink – Stateflow. Grundlagen, Toolboxen, Beispiele. 5. Aufl. München: Oldenburg Verlag, 2007 [Bod05] H. Bode: MATLAB-SIMULINK. Analyse und Simulation dynamischer Systeme. 2. Aufl. Stuttgart: B. G. Teubner Verlag, 2005 [BMOP94] C. S. Burrus, J. H. McClellan, A: V. Oppenheim, T. W. Parks, R. W. Schafer, H. W. Schuessler: Computer-Based Exercises for Signal Processing Using MATLAB. Englewood Cliffs, NJ: Prentice Hall, 1994 [BSMM99] I.N. Bronstein, K.A. Semendjajew, G. Musiol, H. Mühlig: Taschenbuch der Mathematik. 4. Aufl. Frankfurt am Main: Verlag Harri Deutsch, 1999 [Dob01] G. Doblinger: MATLAB – Programmierung in der digitalen Signalverarbeitung. Weil der Stadt: J. Schlembach Fachverlag, 2001 [Fet86] A. Fettweis: „Wave digital filters: Theory and practice.“ Proc. IEEE, 74, 1986, S. 270-327 [GrGr06] F. Grupp, F. Grupp: MATLAB 7 für Ingenieure. Grundlagen und Programmierbeispiele. 4. Aufl. München: Oldenburg Verlag, 2006 [GRS05] B. Girod, R. Rabenstein, A. Stenger: Einführung in die Systemtheorie. Signale und Systeme in der Elektrotechnik und Informationstechnik. 3. Aufl. Stuttgart: B.G. Teubner Verlag, 2005 [Grü93] D. C. v. Grünigen: Digitale Signalverarbeitung : Grundlagen und Anwendungen: Beispiele und Übungen mit MATLAB. Berlin: vde-Verlag, 1993 [Grü04] D. C. v. Grünigen: Digitale Signalverarbeitung. 3. Aufl. München: Fachbuchverlag Leipzig, 2004 [Hay99] M. H. P. Hayes: Digital Signal Processing. Schaum’s Outline Series. New York: McGraw-Hill, 1999 [HoBr02] J. Hoffmann, U. Brunner: Matlab & Tools für die Simulation dynamischer Systeme. Bonn: Addison-Wesley Verlag, 2002 [Hof98] J. Hoffmann: MATLAB und SIMULINK : Beispielorientierte Einführung in die Simulation dynamischer Systeme. Bonn: Addison-Wesley-Longman Verlag, 1998 [HoQu07] J. Hoffmann, F. Quint: Signalverarbeitung mit MATLAB und Simulink: Anwendungsorientierte Simulationen. München: Oldenbourg Verlag, 2007 [Hsu95] H. P. Hsu: Signals and Systems. Schaum’s Outline Series. New York: McGrawHill, 1995
Literaturverzeichnis [KaKr06]
[Kar04] [LBSL97] [Lük95] [Mar92] [MaWi98] [MeHo04] [Mey06] [MSY98] [Mit06] [Nus00] [OpSc89] [OpWi97]
[OSB99]
[PaMc72]
[Pra02] [PrMa07]
289
K.-D. Kammeyer, K. Kroschel: Digitale Signalverarbeitung. Filterung und Spektralanalyse mit MATLAB-Übungen. 6. Aufl. Wiesbaden: B. G. Teubner Verlag, 2006 U. Karrenberg: Signale - Prozesse - Systeme. Eine multimediale und interaktive Einführung in die Signalverarbeitung. 4. Aufl. Berlin: Springer-Verlag, 2004 P. Lapsley, J. Bier, A. Shoham, E. A. Lee: DSP Processor Fundamentals. Architectures and Features. New York: IEEE Press, 1997 H. D. Lüke: Signalübertragung. Grundlagen der digitalen und analogen Nachrichtenübertragungssysteme. 6. Aufl. Berlin: Springer-Verlag, 1995 A. Mar (Hrsg.): Digital Signal Processing Application Using the ADSP-2100 Family. Englewood Cliffs, NJ: Prentice-Hall, 1992 V. K. Madisetti, D. B. Williams: The Digital Signal Processing Handbook. Boca Raton, FL: CRC Press, 1998 B. Meffert, O. Hochhuth: Werkzeuge der Signalverarbeitung. Grundlagen, Anwendungsbeispiele, Übungsaufgaben. München: Pearson Studium, 2004 M. Meyer: Signalverarbeitung. Analoge und digitale Signale, Systeme und Filter. 4. Aufl. Wiesbaden: Vieweg Verlag, 2006 J. H. McClellan, R. W. Schafer, M. A. Yoder: DSP First: A Multimedia Approach. Upper Saddle River, NJ: Prentice Hall, 1998 S. K. Mitra: Digital Signal Processing. A Computer-Based Approach. 3. Aufl. New York: McGraw-Hill, 2006 Patrice Nus: Praxis der digitalen Signalverarbeitung mit dem DSP-Prozessor 56002. Aachen: Elektor-Verlag, 2000 A. V. Oppenheim, R. W. Schafer: Discrete-time Signal Processing. Upper Saddle River, NJ: Prentice Hall, 1989 A. V. Oppenheim, A. S. Willsky: Signals and Systems. 2. Aufl. London: Prentice-Hall International, 1997 * deutsche Übersetzung: Signale und Systeme. Weinheim: VCH Verlagsgemeinschaft, 1989 A. V. Oppenheim, R. W. Schafer, J. R. Buck: Discrete-time Signal Processing. 2. Auflage. Upper Saddle River, NJ: Prentice Hall, 1999 * deutsche Übersetzung: Zeitdiskrete Signalverarbeitung. 2. Aufl. München: Pearson Studium, 2004 T. W. Parks, J. H. McClellan: „Chebyshev Approximation for Nonrecursive Digital Filters with linear Phase.“ IEEE Trans. Audio Electroacoustics, AU-20, No. 3, August 1972, S. 189-194 T. W. Parks, J. H. McClellan: „A Program for Design of Linear Phase Finite Impulse Response Filters.“ IEEE Trans. Audio Electroacoustics, AU-20, No. 3, August 1972, S. 195-199 R. Pratap: Getting Started with MATLAB. A Quick Introduction for Scientists and Engineers. Oxford: Oxford University Press, 2002 J. G. Proakis, D. G. Manolakis: Digital Signal Processing. Priciples, Algorithms, and Applications. 4. Aufl. Upper Saddle River, NJ: Prentice Hall, 2007
290 [RoMu87] [Sch73] [Sch94]
[Sch08] [StBr96] [Ste03] [Ste07] [TiSc99] [Wen05] [Wer06a] [Wer06b] [Wer08a]
[Wer08b] [Zöl05]
Literaturverzeichnis R. A. Roberts, C. T. Mullis : Digital Signal Processing. Reading, MA: AddisionWesley Verlag, 1987 H. W. Schüßler: Digitale Systeme zur Signalverarbeitung. Berlin: SpringerVerlag, 1973 H. W. Schüßler (Hrsg.): Praktikum Digitale Signalverarbeitung. Erlangen: Skriptum des Lehrstuhls für Nachrichtentechnik, Nr. 11, Universität ErlangenNürnberg, 1994 H. W. Schüßler: Digitale Signalverarbeitung 1 - Analyse diskreter Signale und Systeme. 5. Aufl. Berlin: Springer-Verlag, 2008 V. Stonick, K. Bradley: Labs for Signals and Systems Using MATLAB. Boston, Ma.: PWS Publ. Comp., 1996 S. D. Stearns: Digital Signal Processing with Examples in MATLAB. Boca Raton, FL: CRC Press, 2003 U. Stein: Einstieg in das Programmieren mit MATLAB. München: Carl Hanser Verlag, 2007 U. Tietze, Ch. Schenk: Halbleiter-Schaltungstechnik. 11. Aufl. Berlin: Springer Verlag, 1999 A. Wendemuth: Grundlagen der digitalen Signalverarbeitung. Ein mathematischer Zugang. Berlin: Springer Verlag, 2005 M. Werner: Nachrichtenübertragungstechnik. Analoge und digitale Verfahren mit modernen Anwendungen. Wiesbaden: Vieweg Verlag, 2006 M. Werner: Nachrichtentechnik. Eine Einführung für alle Studiengänge. 5. Aufl. Wiesbaden: Vieweg Verlag, 2006 M. Werner: Digitale Signalverarbeitung mit MATLAB-Praktikum. Zustandsraumdarstellung, Lattice-Strukturen, Prädiktion und adaptive Filter. Wiesbaden: Vieweg Verlag, 2008 M. Werner: Signale und Systeme. Lehr- und Arbeitsbuch. 3. Aufl. Wiesbaden: Vieweg+Teubner Verlag, 2008 U. Zölzer: Digitale Audiosignalverarbeitung. 3. Aufl. Wiesbaden: Teubner Verlag, 2005
291
Sachwortverzeichnis A absolute Häufigkeit 151 Abtastfolge 16, 172 Abtastfrequenz 20, 173 Abtastintervall 16, 51, 173 Abtasttheorem 52, 173 Abtastung 51, 172 Addition 199 ADSR-Profil 22 Allpass 170, 242 Allpass-Transformation 135 Aliasing 52, 173 Analog-Digital-Umsetzung 173 analoges Signal 20 Arcustangens-Verzerrung 135 Arithmetikfehler 176 Audiosignal 20, 69, 154, 161, 163, 173 Autokorrelationsfolge (AKF) 155, 167
B Bandpass-Filter, Bandsperre 119, 121, 126, 136 Barker-Codefolge 81 Bartlett-Fenster 62 Betragsabschneiden 201 Betragsfrequenzgang 92, 96, 177 BIBO-Stabilität 90, 91 bidimensionale WDF 150, 159, 170 bilineare Transformation 134 Bit-reversal-Adressierung 42 Blackman-Fenster 62 Blockdiagramm 81, 87, 107, 194 Block 2. Ordnung 181 Bode-Diagramm 132 Butterfly 40 Butterworth-Tiefpass 129, 130
C Cauer-Tiefpass 129, 183 Chebyschev-Approximation 123 Chebyschev-Tiefpass I / II 129, 139, 187
D Dämpfungsfrequenzgang 92, 96
Decimation-in-frequency (DIF) -Algorithmus 46 Decimation-in-time (DIT)-Zerlegung 38 DIT-Radix-2-FFT 40 Digital-Analog-Umsetzung 173 digitaler Signalprozessor (DSP) 186, 193 Digitalisierung 172 Direktform I 81 Dispersion o Varianz DFT-Frequenzauflösung /-raster 67 DFT-Koeffizient 28 DFT-Spektrum 28 Differenzengleichung 90, 91 digitales Signal 20 diskrete Fourier-Transformation (DFT) 26 Double Precision 176 3dB-Grenzfrequenz 130 DTMF-Signal 66 Durchlassbereich, -kreisfrequenz, -toleranz o Toleranzschema Dynamik 179
E Echtzeit 36, 76 EEG-Signal 76 Eigenfunktion 89, 91 Eingangs-Ausgangsgleichung im Bildbereich 90 im Frequenzbereich 89 im Zeitbereich 91 elliptischer Tiefpass o Cauer-Tiefpass empirische Kovarianz 158 empirischer Korrelationskoeffizient 158 empirische Varianz 150 Energiefolge 104 Entwurfsvorschrift im Frequenzbereich o Toleranzschema Equiripple-Methode, -Verhalten 124 ergodisch, Ergodizität 151 Exponent 176 Exponentielle 18, 165
292
Sachwortverzeichnis
F
I
Faltung 81, 89 Fehlersignal 180 Fehlerfrequenzgang, -system 187 Fensterfolge 51, 60 Fensterung 50, 122 Festkomma-Format 175, 178, 186 Festkomma-Prozessor 186 Filter Design and Analysis Tool (fdatool) 126, 141, 194 Filter Viewer (fvtool) 114, 134, 194 Finite-Impulse-Response(FIR)-System 95, 116, 187 FIR-Tiefpass 117 Fliegendreck-Bild o Streudiagramm Folge 16 Formparameter (Kaiser-Fenster) 122 Frequenzbereich 27 Frequenzgang 91, 92, 118, 167, 187 Frequenzgruppe 66 Frequenz-Transformation 135 Fourier-Approximation 120 Fourier-Reihe 27, 33, 56 Fourier-Transformation 27
IEEE 754-1985-Format 176 Infinit-Impulse-Response (IIR) -System 105, 124, 179 Impulsantwort 88, 92, 107, 167, 176, 187 impulsinvariante Transformation 134 Impulsfolge 18 Impulskamm 51 inneres Geräusch/ Rauschen 202 In-place-Verfahren 40
G Gauß-WDF 150 gaußsches Fehlerintegral 152 gleichförmige Quantisierung 174 Gleitkomma-Format 175, 186 Gleitkomma-Operationen 37 Gleitkomma-Prozessor 175, 186 gibbssches Phänomen 120 Goertzel-Algorithmus 85 granulares Rauschen 175 Grenzzyklus (groß, klein) 200, 201 Gruppenlaufzeit 92, 97
H Hamming-Fenster 64, 65, 70, 158 harmonische Analyse 26 Häufigkeitsverteilung 150 Hauptzipfel 54 Histogramm 150 Hochpass-Filter 119, 136
K Kaiser-Fenster 64, 122 kanonische Struktur 106 Kaskadenform 190 Kausaler Pol 130 kausales System 90 Kausalität 91 Klirrfaktor, -Messung 56, 79 Koeffizientenquantisierung 187 Kohärenzdauer 161 Komplexität 37 Korrelation 154 Korrelationskoeffizient 150, 154 Kosinusfolge 18 Kovarianz 154 Kreisfrequenz 18 Kreuzkorrelationsfolge (KKF) 155, 156, 167 Kurzzeit-Spektralanalyse 50, 69
L Leakage-Effekt 33, 59 Least Significant Bit (LSB) 178 Leistung 155 Leistungsdichtespektrum (LDS) 155, 156, 167 Leistungsübertragungsfaktor 167 Leistungsübertragungsfunktion 167 lineare Abbildung 164 lineare Differenzengleichung 86, 90 lineare Phase (verallgemeinerte) 118 linearer Mittelwert 150, 153, 167 lineares zeitinvariantes System (LTISystem) 88
Sachwortverzeichnis
293
M
Q
Mantisse 176 Maschinenzahlen 173, 175 maximalphasiges kausales System 92 Mehrfrequenzwahlverfahren 66 minimalphasiges kausales System 92 Minimum-delay-System 104 mittleres Fehlerquadrat, mittlerer quadratischer Fehler 120 Moment n-ter Ordnung 150 Monte-Carlo-Simulation 151 Multiband-Filter 126 Multiplikation 200 Multiply-and-Accumulate (MAC) 116 Musterfunktion/ -folge 148
quadratischer Mittelwert 150, 1567 Quantisierung 173, 175 Quantisierungs bereich 175 fehler 175, 186 geräusch 180 kennlinie 173, 175 intervall/-breite 175
N Nebenzipfel 54 Nennerkoeffizienten 90 nichtrekursives System 95 normalisierte Form 176 normalverteilte stochastische Variable 150 normierte o Kreisfrequenz normierte stochastische Variable 150 normierte Zeitvariable 16 Nullstelle 90, 92, 95
O orthogonale stochastische Variablen 154 Orthogonalität 31
P parsevalsche Gleichung 31 Partialbruchzerlegung 107 periodischer Impulskamm 51 Periodogramm 157 Phasenfrequenzgang 92, 97 Pol 90, 92, 95, 105 Polausdünnung 193 Pol-Nullstellen-Aufteilung 127, 191 Pol-Nullstellendiagramm 92, 169, 181 Potenz-Tiefpass o Butterworth-Tiefpass Präzision 179 Pseudofaltung 157 Pseudozufallszahl 151
R Radix-2-FFT 36, 41 Rauschzahl 203 Realisierung o Musterfolge Rechteckfenster 53 rechtsseitige Folge 17 reellwertiges System 90, 96 Remez-Algorithmus 123 Repräsentant 175 Runden 201 Rundungsgeräusch, - rauschen 201
S Sättigungskennlinie 175, 200 Scharmittelwert 150 Schätzwert 149 schnelle Fourier-Transformation (FFT) 36 schwach ergodischer Prozess 151 schwach stationärer Prozess 151 s-Ebene 130 6dB-pro-Bit-Regel 181 Signal 16 Signalflussgraph 92 Signalflussgraph der FFT 38 Signal-Quantisierungsgeräusch-Verhältnis Signal-to-noise ratio (SNR) 180 Significant o Mantisse si-Interpolation 173 Single Precision 177 Sinusfolge 18, 31 Spannweite 153 spektrale Auflösung 54 Spektrogramm 69 Sperrbereich, -kreisfrequenz, -toleranz o Toleranzschema Spiegelung am Einheitskreis 92 Sprungantwort 91
294 Sprungfolge 18 sprunginvariante Transformation 134 Standardabweichung 150 stationär, Stationarität 151 stochastischer Prozess 148 stochastische Variable 148 Streudiagramm (Scatter-Diagramm) 153, 171 Streuung o Varianz System 88
T Tapped-delay-line Struktur o TransversalFilter Telefontastatur 66 Tiefpass 118, 128, 136 Toleranzschema /-schlauch 117 transponierte Direktform II 92, 106, 191 Transversal-Filter 116, 188
U Übergangsbereich o Toleranzschema Überlaufkennlinie 199 Überlaufschwingung o großer Grenzzyklus Übersteuerung 175 Übertragungsfunktion 90, 91, 107 unabhängig, Unabhängigkeit 150 unkorrelierte stochastische Variablen 154, 155 unkorrelierter Prozess 155 Untersteuerung 175
Sachwortverzeichnis
V Varianz 150, 153 Verbund-WDF 150, 159 verallgemeinerte lineare Phase 118 Vorzeichen 176
W Wahrscheinlichkeitsdichtefunktion (WDF) 150 Wasserfalldiagramm 69 weißes Rauschen 155 Window Design and Analysis Tool (window) 63 Wortlänge 20, 175, 178, 175
Z Zählerkoeffizient 90 z-Ebene 92, 131 Zeit-Autokorrelationsfunktion 156, 167 zeitdiskret 16 Zeit-Frequenz-Darstellung 21, 69 zeitkontinuierlich 16 Zeit-Kreuzkorrelationsfunktion 156 Zeitmittelwert 150 zentraler Grenzwertsatz 165 Zero-padding 58 z-Transformation 90 Zufallszahlen 151 Zuordnungsschema der DFT 31 Zustandsvariable 106, 205 Zweiband-Filter 125 Zweierkomplement-Format 178, 188