505 70 4MB
German Pages 294 [306] Year 2008
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 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 Befehls durch den Rechner.
zur Übernahme des
>> 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 frühere Eingaben wieder in die Kommandozeile laden und danach bearbeiten.
können Sie
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 Nun schließen Sie das Kommando mit einem Semikolon ab. >> 4*(4-3+2/4);
holen Sie sie wieder hervor.
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 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 , 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 Befehls durch den Rechner. >> help pi Sie erhalten die kurze Erklärung
zur Übernahme des
4
1 Erste Schritte in MATLAB PI
3.1415926535897....
PI = 4*atan(1) = imag(log(-1)) = 3.1415926535897.... und der ArkustangensIn der zweiten Zeile ist der Zusammenhang zwischen der Zahl Funktion 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 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 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 (1 4 + 7 5 + 3 6) 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: Überlastung des Arbeitsspeichers unstrukturierte Programme unzumutbare Programmlaufzeiten 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
1/2
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= , && 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
2 n
1 sin (2n 1) 2 0 2n 1
t
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 die wichtigen Signale Impulsfolge, Sinus- und Kosinusfolge und Exponentielle analytisch und grafisch darstellen einfache MATLAB-Befehle zur Erzeugung und bildlichen Darstellung von Signalen anwenden mit MATLAB Audiosignale generieren und hörbar machen die Bedeutung der Abtastfrequenz für Audiosignale erklären 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)
für das Abtastintervall Ts =
sinus function 1 0.5 x(t)
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 -0.5 -1
0
5
10
15
10
15
t in s 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]
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.
(2.4)
/4
0 -0.5 -1
0
5 n
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: Impulsfolge und Sprungfolge [ n]
1 für n 0 sonst
0
u[n]
1 für n 0 sonst
0
Sinus- und Kosinusfolge mit der normierten Kreisfrequenz 2.7182... x[n] sin( n) x[n] e j
n
cos( n)
(2.5)
(2.6)
und der eulerschen Zahl e =
(2.7) j sin( n)
(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] x3 [n] [n 3] . x1[n]
x2[n]
x3[n]
1
1
1
0
0
0
−1 −5
0
n
−1 −5
5
[n − 3] und
[n] , x2 [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(2 n 16) , x5 [n] cos(2 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 j
4
.
Im
x7[n]
−4
−3
−5
−2
n=0 −1
1
2
Re
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
2−9/12
d1
2−7/12
e1
2−5/12
f1
g1
2−4/12
2−2/12
a1
h1
c2
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 440 2+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 die Definitionsgleichungen der DFT und IDFT angeben die Begriffe harmonische Analyse, DFT-Spektrum und DFT-Koeffizient sowie die Zusammenhänge erläutern den prinzipiellen Zusammenhang zwischen den DFT-Koeffizienten und den transformierten Zeitsignalen erklären für Sinus- und Kosinussignale das DFT-Spektrum und umgekehrt berechnen für eine periodische Kosinusfolge die DFT-Länge so bestimmen, dass das DFT-Spektrum genau zwei von null verschiedene DFT-Koeffizienten aufweist 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.
aperiodische Zeitfunktion
periodische Zeitfunktion
Tabelle 3-1 Signaldarstellung im Zeit- und im Frequenzbereich − Fourier-Analyse zeitkontinuierliche Funktionen
zeitdiskrete Funktionen
Fourier-Reihe
diskrete Fourier-Transformation (DFT)
x(t ) 1 T0
ck
k − t0 T0
ck e jk
0t
x(t ) e− jk
1 N
x[n]
N −1
kn / N
k 0
N −1
0t dt
X [k ] e j 2
X [k ]
x[n] e− j 2
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 k 0 mit frequenzen k 2 / N, k = 0 : N−1, mit der norder Grundkreisfrequenz 0 = 2 /T0 und der mierter Grundkreisfrequenz 2 / N und der Periode T0 des Zeitsignals Periode N des Zeitsignals Fourier-Transformation
x(t )
1 2
X(j )
Fourier-Transformation (für Folgen)
X ( j ) e j td
−
−
x[n]
x(t ) e− j t dt
) allgemeines Spektrum
1 2
X ej
2
X ej
n −
ej
n
d
x[n] e− j n
) periodisches Spektrum mit Periode 2
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, 1, 2, ... ein unendlich ausgedehntes Linienspektrum zu den Kreisfrequenzen k 0 erzeugt, ordnet die DFT wegen der Periodizität der Exponentialfunktion exp(−j2 k/N) den N Elementen einer Periode der Folge genau N Spektrallinien für k = 0, 1, ..., N−1 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 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, ..., N−1 ist die Folge der DFT-Koeffizienten N −1
X [k ]
kn x[n] wN
für k = 0, 1, 2, ..., N−1
(3.1)
n 0
mit dem komplexen Faktor wN
e− j 2 / N
(3.2)
Die inverse DFT (IDFT), liefert wieder die ursprüngliche Folge. x[n]
1 N −1 − kn X [k ] wN Nk 0
1 N −1 2 kn X [k ] cos Nk 0 N
j sin
2 kn N
(3.3)
Die Folge x[n] und ihr DFT-Spektrum X[k] bilden ein DFT-Paar. DFT
x[n]
(3.4)
X [k ]
Beispiel DFT einer Kosinusfolge
Ein grundlegendes Beispiel liefert die DFT der Kosinusfolge x[n] cos
8
n
(3.5)
Sie soll der DFT der Länge N = 32 unterworfen werden. 31
X [k ]
cos n 0
8
n e
−j
2 nk 32
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 ]
1 31 j 16 2− k n e 2n 0
die in dem Ausdruck resultieren
−j
e 16
2 k n
für k = 0:31
(3.7)
3.2 Grundlagen
29 2− k
1 1− e 2 j 2− k 1 − e 16 j2
X [k ]
1− e
− j2
2 k
−j
2 k
für k = 0:31
1 − e 16
(3.8)
Die Untersuchung der Brüche zeigt, dass die Zähler null sind, da in den Exponenten stets ein ganzzahliges Vielfaches von 2 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
[k − 2]
[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. 1 Im(x[n]}
Re(x[n])
1
0
-1
0
5
10
15 n
20
25
-1
30
0
5
10
15 n
20
25
30
0
5
10
15 k
20
25
30
10 Im(X[k ])
10 Re(X[k ])
0
0 -10 0
5
10
15 k
20
25
30
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 Nk 0
j sin k n
für n = 0:N−1
(3.10)
mit den normierten Kreisfrequenzen k
2 k N
für k = 0:N−1
(3.11)
30
3 Diskrete Fourier-Transformation
Durch Koeffizientenvergleich ergibt sich der Zusammenhang cos
da cos x
2 K n N
cos(− x)
DFT
N 2
[k − K ]
[k − ( N − K )]
für k = 0:N−1
(3.12)
cos(2 − 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
al X l [k ]
l
x[n − m]
Zyklische Verschiebung Modulation ( wN
e− j 2
/N
DFT
nl wN x[n]
)
Spiegelung
x[−n]
Konjugiert komplexe Folge
x*[n]
DFT
DFT
x1[n] x2 [n] N −1
x[n]
Parsevalsche Gleichung
2
n 0
Zuordnungsschema e: gerade (even) o: ungerade (odd) r: reell (real) i: imaginär (imaginary)
(3.14)
X [k l ]
(3.15)
X [−k ]
(3.16)
X *[−k ]
(3.17)
DFT
X 1[ k ] X 2 [ k ]
(3.18)
N 1 X1[k ] * X 2 [k ] N
(3.19)
1 N
(3.20)
x1[n] * x2 [n]
Multiplikation
mk wN X [k ]
DFT DFT
N
Zyklische Faltung
(3.13)
l
DFT
N −1
X [k ]
2
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. 2 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:N−1 und 0 , jeweils das DFT-Spektrum der Länge N an. 0 0
n0 < N−1 bzw. #
Hinweis: Beispiel und A3.1. x1[n]
[n − n0 ]
1 1− e 2 j 1− e j
DFT
x2 [n] cos(
x3 [n] sin( x4 [n] e j
0 n)
X 2 [k ]
0−
2 k N N
1− e
2 k 0− N
−j
1− e
−j
0
0
2 k N N 2 k N
0 n) 0n
x5 [n] 1
A3.3
Geben Sie für den Sonderfall X2[k], X3[k] und X4[k] an.
2
0
N mit
{1, 2, ..., N−1} die Spektren #
Hinweis: Orthogonalität der komplexen Exponentiellen. x2 [n] cos
x3[n] sin
n N n
2
x4 [n] e j 2
A3.4
2
N
DFT
X 3[ k ]
N 2j
[k − ] − [k − ( N − )]
n/ N
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 2 , 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
1
1
0
1
Re(X[k])
1
2.707
0
1.293
Im(X[k])
0
−8
−2.121
1
−1
−1
6 0
0
1.293
0
2.707
0
2.121
−1
x[n]
−2.121
5
Re( X[k] )
Im( X[k] )
2
2
−4
k 0
4
8
−8
−4
−2
7
−1
2.121
k 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 = 4 / 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.5 / N. 2 N mit {1, 2, ..., N−1} gewählt wird, verändern sich die Wenn 0 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
2 m
1 sin (2m 1) 2 0 2m 1
t
(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 den Begriff Komplexität und seine Bedeutung in der digitalen Signalverarbeitung am Beispiel der DFT und FFT erklären den Radix-2-FFT-Algorithmus entwickeln und erläutern 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 ]
nk x[n] wN
für k = 0:N−1
(4.1)
n 0
mit den komplexen Faktoren nk wN
e
−j
2 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 N−1 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. N −1
X [k ]
nk x[n] wN
N −2
nk x[n] wN
n 0,2,!
n 0
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
(2 m 1) k x[2m 1] wN
(4.6)
m 0
Berücksichtigt man noch die Umformungen für die komplexen Faktoren 2mk wN
mk wM
(4.7)
und (2 m wN
1) k
k mk wN wM
(4.8)
so resultieren zwei Transformationen der halben Länge des Signals. M −1
X [k ]
mk x[2m] wM
m 0
k wN
M −1
mk x[2m 1] wM
(4.9)
m 0
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:M−1
(4.10)
und M −1
X [k ]
mk u[m] wM
k wN
m 0
M −1
mk v[m] wM
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 wM
M)
mk mM wM wM N
mk wM
(4.12)
1
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 8 N log2(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[0] X[1]
DFT
x[6]
4
u[3]
X[2] X[3] w83
x[1] x[3]
v[0]
V[0]
v[1]
V[1]
DFT
Bild 4-1
x[5]
v[2]
x[7]
v[3]
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
4
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, …, 2s−1−1
(4.13)
Damit erhält man den Butterfly in Bild 4-3 rechts. Knoten
Knoten
Knoten
Knoten
m
m
m
m
m+2s−1
m+2s−1
wl s 2 m+2s−1
wl s 2
s −1
wl s 2
−1
m+2s−1
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, ... , 2s−1 − 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 s 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] −1
X[4]
w81
X[5]
−1
−1
w82
X[6]
−1
−1
w83
−1
X[7]
x[1] −1
x[5] x[3]
−1
x[7] Stufe 1
−j Stufe 2
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 N−1 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
210
00102
310
00112
10002
810
01002
410
11002
1210
00102
210
b.-r. b.-r. b.-r.
410
01002
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 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> [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. H1 ( z )
k
r1
1 − p1 z
−1
r2
1 − p2 z
−1
k
r1 z z − p1
r2 z z − p2
(10.10)
Es resultiert H1 ( z ) 1.3514
(−0.1757 − j 3.6459) z z − (0.7 j 0.5)
( −0.1757 j 3.6459) z 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 z − 0.5
5z 2
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
1 − 0.8 z −1 0.64 z −2
(10.14)
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 z
1,2
Re
=
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:
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.
− 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?
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 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
− System „Cauer“ HC ( z)
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
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.15)
(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 wichtige Vorteile von FIR-Filtern nennen die Entwurfsvorschriften für digitale Filter im Frequenzbereich anhand eines Toleranzschemas erläutern die Grundgleichung der Fourier-Approximation angeben mit MATLAB einen Filterentwurf mit Fourier-Approximation und Fensterbewertung durchführen für einen Tiefpass den Entwurf mit einem Kaiser-Fenster vornehmen und dazu die erforderliche Filterordnung abschätzen den Unterschied zwischen der Fourier- und der Chebyshev-Approximation anhand einer Skizze erklären mit dem MATLAB-Programm fdatool FIR-Filter entwerfen und analysieren 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
bN−1
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 Symme. trie des Betragsfrequenzganges auf den (normierten) Frequenzbereich 0
118
11 Entwurf digitaler FIR-Filter
Für den Betragsfrequenzgang nach Bild 11-2 liegt im Durchlassbereich die Anforderung 1−
H ej
D
1
D
S
für
für 0
D
(11.1)
und im Sperrbereich die Anforderung H ej
(11.2)
S
vor. Die maximal zulässigen Abweichungen vom Wunschverlauf D und 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+
D
1−
D
c
2
D
d
S
D
e
S
Ein zulässiger Frequenzgang des Betrags
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 , 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 ) 2
1+
1−
−
D
D
zulässiger Frequenzgang
D
2
S
S S
D
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
gerade: h[n] = h[N−n]
keine Einschränkung
ungerade: h[n] = −h[N−n]
N ungerade
H(z = −1) = 0
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 D und die Sperrtoleranz S 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. 2
f fs
für 0
f
fs 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
5%
minimale Sperrdämpfung
Sperrkreisfrequenz
S
=
Durchlasskreisfrequenz
D
=
Durchlasstoleranz
D
=
Sperrtoleranz
S
=
46.02 dB
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 H ej
n −
h[n] e − j
n
(11.4)
mit den Koeffizienten der Impulsantwort als Fourier-Koeffizienten h[n]
1 2
−
H ej
ej
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
0 0
(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 = bzw. /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. 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
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 I0 wK [n]
1 − n 2 ( N 2)2 I0
0
für n
N 2
für n
N 2
(11.7)
Das Kaiser-Fensters enthält die modifizierten Besselfunktion erster Art der Ordnung Null I0 mit dem Formparameter . Letzterer eröffnet die Möglichkeit eine Anpassung an das Toleranzschema vorzunehmen. 9 [KaKr02]. Die Wahl für beruht auf empirischen Erfahrungen mit typisch Werten 4 Die im Folgenden vorgestellte Methode liefert zu einem Tiefpassentwurf mit vorgegebenem Toleranzschema den Formparameter und die Filterordnung N. Die Filterordnung wird erfahrungsgemäß auf 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 .
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
D
=
Sperrtoleranz
S
=
Durchlasskreisfrequenz
D
=
Sperrkreisfrequenz
S
=
Formparameter
und Filterordnung N
minimale Toleranz
min
Breite des Übergangsbereiches
Δ
=
21dB
adB < 50dB 0.07886
D, S)
−
D
min
adB − 21 dB
0
D = (adB / dB − 7.95) / 14.36
Filterordnung1
N=2 D/Δ
Δ
= =
adB =
0.4
adB − 21 dB
adB < 21dB Hilfsgröße
dB
min
adB − 8.7 dB
0.1102
adB > 50 dB
0.5842
1
S
adB = −20 lg
Hilfsgröße (in dB)
Formparameter des KaiserFensters für
= min(
|nächst größere oder gleiche ganze Zahl
= D= 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 1
0.8
e d
h[n]
f
0.4
0.6
0.2
0.4
0 g
0.2 0
−0.2
i h
0
0.2
0.4
0.6
/
−5
n 0
5
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
Magnitude Specifications
Units Apass Astop
) Equiripple ) Hz ) 20000 ) 3400 ) 4000 ) db ) 0.869 ) 46
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.16 zu erzielen? Wird das Toleranzschema überall eingehalten? 0.1
|H(ej )|
0.06
1 .8 .01
0.02
.01
0 0
.16 .2
.8 .86
.4 .44 .56 .6
1
/ 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 wichtige Vor- und Nachteile von IIR-Filtern aufzählen die Entwurfsvorschriften für digitale IIR-Filter im Frequenzbereich anhand eines Toleranzschemas erläutern die drei Schritte der IIR-Standardapproximation vorstellen den Unterschied zwischen einem Butterworth-, Chebyshev- und Cauer-Tiefpassfilter anhand einer Skizze des Betragsfrequenzganges erklären für eine Anwendung ein Entwurfsverfahren auswählen und die Wahl begründen 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
bN−1
y[n] D
D −aN−1
−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 D
Übergangsbereich
1−
D
Sperrbereich S S D
S
Bild 12-2 Toleranzschema für den Betragsfrequenzgang zum Entwurf eines IIR-Tiefpasses mit den Entwurfsparametern: normierte Durchlasskreisfrequenz D, normierte Sperrkreisfrequenz S, Durchlasstoleranz D und Sperrtoleranz S
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)
Equiripple-Verhalten im Durchlassbereich und monoton fallend im Übergangs- und Sperrbereich
„mittel“
monoton fallend im Durchlass- und Übergangsbereich und EquirippleVerhalten im Sperrbereich
„mittel“
- nur moderate Signalverzerrungen aufgrund des Phasenganges im Durchlassbereich / relativ breiter Übergangsbereich / relativ große Filterordnung
. Eigenschaften zwischen Butterworth- und CauerFilter, gutes Sperrverhalten . Filterordnung mittel
Übergangsbereich
Chebyshev-I
Bemerkungen
Chebyshev-II
. 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 ( j )
1
2
0
mit der Filterordnung N und der 3dB-Grenzkreisfrequenz 20 log10
(12.1)
2N
1
0.
H BW −TP ( j 0 ) dB 3 dB max H BW −TP ( j )
(12.2)
Da im Nenner (12.1) eine Potenzfunktion von steht, spricht man von einem Potenzfilter. Wie man sich durch Einsetzen von s = j überzeugen kann, resultiert aus der Zerlegung
H BW −TP ( s ) H BW −TP (− s )
1 1
s j
2N
(12.3)
0
wieder die Leistungsübertragungsfunktion (12.1). Die Pole in (12.3) liegen gleichmäßig verteilt auf dem Mittelpunktskreis der s-Ebene mit Radius 0 sl
0
exp j
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 k 1
s−s k
(12.5)
12.3 Entwurf eines Butterworth-Tiefpasses
131
Im(s) s s s
1
Re(s)
/N
2
kausale Pole für H(s) s
0
antikausale
3
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 0 und die Filterordnung N. Zu deren Bestimmung wird die Hilfsvariable N D
(12.6)
0
mit der Durchlasskreisfrequenz tion in der Form
D
eingeführt. Dann resultiert die Leistungsübertragungsfunk-
H BW −TP j
1
2
1
(12.7)
2N
2
D
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 j
1
2 D
(12.8)
2
1
Die Sperrkreisfrequenz eingesetzt gilt H BW −TP j S
1
2 2
1
1 2N
S
D
1
2
(12.9)
Da die Hilfsgrößen und durch das Toleranzschema vorgegeben werden, kann aus der Ungleichung die gesuchte Filterordnung N bestimmt werden. N
log log
(12.10) S
D
132
12 Entwurf digitaler IIR-Filter H BW −TP ( j ) 1
2 −1/ 2
1
0.6
Bezugspunkte zur Dimensionierung
0.4
1
2 −1/ 2
0.2
0 0 D
S
Bild 12-4 Toleranzschema zur Dimensionierung des Butterworth-Tiefpasses
Die 3dB-Grenzkreisfrequenz leitet sich mit der gefundenen Filterordnung aus (12.6) her. D
0
12.3.4 A12.1
(12.11)
N
Vorbereitende Aufgaben − Butterworth-Tiefpass 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 0 durch.
48 a in dB 36 24 12
1/4
1/2
1
2
4
8
16
/
0
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
D
= 0.095
Sperrtoleranz
S
= 0.0048
Durchlasskreisfrequenz
D
=2
Sperrkreisfrequenz
S
=2
Hilfsparameter
=
3dB-Grenzkreisfreq.
0
Hilfsparameter Filterordnung
A12.3
3.4 kHz
= N =
4 kHz
=
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 Durchlasstoleranz
D
= 0.1
Durchlasskreisfrequenz
D
=2
Hilfsparameter Filterordnung
A12.4
= N =
2 kHz
Sperrtoleranz
S
= 0.2
Sperrkreisfrequenz
S
=2
Hilfsparameter
=
3dB-Grenzkreisfreq.
0
5 kHz
=
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 b = 2 1 kHz .
s
b
; die Bezugskreis-
Tabelle 12-4 Pole des Butterworth-Tiefpasses mit reduzierten Anforderungen Index k Pol
A12.5
~ s
1
2
3
k
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/
b
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: 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.
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
s
1 z
−1
und
z
1 s 1− s
\
für
(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
z
bilineare
Re(s)
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 = j bzw. z = ej in (12.12). Man erhält nach kurzer Zwischenrechnung
1
tan
2
und
2 arctan
für
\
(12.13)
Es ist offensichtlich, dass die Abbildung der sich von − bis + 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 k und Nullstellen 0l eines Tiefpasses auf die Pole z k und Nullstellen z0l eines Wunschsystems als Tiefpass (TP), Hochpass (HP), Bandpass (BP) oder Bandsperre (BS)
Frequenz-Transformation der Pole und Nullstellen
Entwurfsparameter c,
sin z
TP
z
HP
1
−
p − 2
z1,2
−
p 2
−q
mit den Hilfsvariablen BP
p q
−2 ( ( − 1)
1
−1 1
−
z1,2
p 2
p 2
2
cot
−q
p q
2 (1 − ) (1 − ) − − 1
−
(1 ) (1 − )
−
−1 −1
c, z
2 c,
−
c, z
2 o, z
cos
o, z
u,z
2
−
−
u, z
2 u, z
tan
2
c,
2
mit der gewünschten oberen und unteren normierten Eckkreisfrequenz des BP o,z bzw. u,z
mit den Hilfsvariablen BS
c,
cos
o, z
c, z
2
cos
1)
( 1) ( − 1)
c,
cos
2
c, z
2
sin
1
−
tan
cos
o, z
cos
o, z
o, z
u,z
2
− 2
−
u, z
2 u, z
tan
c,
2
mit der gewünschten oberen und unteren normierten Eckkreisfrequenz der BS o,z bzw. u,z
12.3 Entwurf eines Butterworth-Tiefpasses
12.3.7 A12.6
137
Vorbereitende Aufgaben − Transformation Entwerfen Sie durch bilineare Transformation des Butterworth-Tiefpasses nach A12.3 einen Tiefpass im Zeitdiskreten. Die normierte 3dB-Grenzkreisfrequenz soll dabei 3dB = / 5 sein. Hinweis: Verwenden Sie für die Pole direkt die normierten dimensionslosen Größen s k aus A12.4. Tabelle 12-6 Pole des zeitdiskreten Butterworth-Tiefpasses Transformationsparameter
=
A12.7
Pole des zeitdiskreten Systems
z
1
=
z
2
=
z
3
=
Skizzieren Sie das Pol-Nullstellendiagramm des zeitdiskreten Systems aus A12.6. Beachten Sie dabei, dass bei der bilinearen Transformation, die Nullstellen für s 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 P = 0.095 und S = 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 si h[n] 0
4
(n − 7)
für n = 0:14 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 c
stabil
minimalphasig
maximalphasig
Allpass
rekursiv
d e
f
g
(2)
Im
(2)
Re
Im
Re
z
Re
System e
z
Re
System f
z
Im
z
System d
Im
z
System c
Im
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 Normalized Frequency (
0.6 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
FIR
IIR
Bilineare Transformation Butterworth-Filter Chebyshev-Approximation Faltung Fourier-Approximation Frequenz-Transformation Gruppenlaufzeit Instabil Kaiser-Fenster Rekursiv Transversale Struktur Verallgemeinerte lineare Phase
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 -1.5
5
-1 -1.5
-1
-0.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 die Begriffe stochastische Variable, stochastischer Prozess und Musterfunktion anhand eines Beispiels erklären 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 den Begriffe Korrelation anhand des Korrelationskoeffizienten und der Korrelationsfunktion erklären und seine Bedeutung aufzeigen den Begriff des weißen Rauschens für zeitdiskrete Signale erläutern 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. 2
x1[n]
n
0 -2 2
x2[n]
n
0 -2 2
x3[n]
n
0 -2 2
x4[n]
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 Y. 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)
E X
quadratischer Mittelwert (Moment 2. Ordnung)
−
E X2
m2
−
2
Var ( X ) −
1 2 3
x−
x
x 2 f ( x)dx
2
m2 Dispersion1, Streuung, Varianz (2. Zentralmoment)
x f ( x)dx
x2
xn n 1
N
1 N
xn2
n 1
2
E [X − ]2 2
N
1 N
empirische Varianz3
s2
f ( x)dx
1 N −1
N
xn − x
2
n 1
Ü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/(N−1) 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 1
f XY ( x, y ) 2
x y
exp −
1− 2 1
2 1− 2
( x − x )( y − y ) ( x − x )2 −2 2 x
x y
( y − y )2
(14.1)
2 y
mit dem Korrelationskoeffizienten . 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 ) 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 = h(k)
absolute Häufigkeiten der Amplituden der Stichprobe
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 M N-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
−
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)
E [ X1 − 1 ] [ X 2 − 2 ]
(14.7)
Von besonderer Bedeutung sind die Kovarianz Cov( X1 , X 2 )
und der Korrelationskoeffizient
14.4 Korrelation stochastischer Prozesse
12
155
Cov( X1 , X 2 ) 1
(14.8)
2
Der Korrelationskoeffizient ist als Erwartungswert des Produkts der standardisierten stochastischen Variablen definiert. Durch die Normierung erhält man stets −1
1
(14.9)
Je größer der Betrag des Korrelationskoeffizienten, umso größer ist die lineare Abhängigkeit zwischen den stochastischen Variablen. Für = 1 nehmen die stochastischen Variablen X1 und X2 mit Wahrscheinlichkeit eins den gleichen Wert an. Ist der Korrelationskoeffizient
= 0, sind die stochastischen Variablen unkorreliert.
Anmerkung: Für normalverteilte stochastische Variablen folgt aus unkorreliert auch unabhängig, wie einsetzen von = 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 ]
2
[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 ( )
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]
1 0 -1 -2 -3
0
10
20
30
40
50 n
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)
Leistungsdichtespektrum (LDS)
1
Zeitautokorrelationsfolge
x[n l ]x[n]
x1 x2 f X n X m ( x1 , x2 )dx1dx2
− −
mit l = m − n
S XX ( ) RXY [l ]
Kreuzkorrelationsfolge (KKF)
E Xn Xm
l −
lim N
R XX [l ]e− j l
N 1 x[n l ]x[n] 2N 1 n −N
Periodogramm Zeitkreuzkorrelationsfolge
E X nYm
x[n l ] y[n] − −
x1 x2 f X nYm ( x1 , x2 )dx1dx2 mit l = m − n
lim N
N 1 x[n l ] y[n] 2N 1 n −N
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
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[n−k]
Die Signalblöcke überlagern sich dabei mittig um n ni ni+N−1 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
1i
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 0.15
5 0. 0
0 4
5 0.0
-2 4 2
0
-3
0. 0 5
0.0 1
0
-2 y
01 0.
01 0.
2
5 0.1
0. 1
0. 1
-1
0.1
0.0 1
0
0.05
0. 0 5
0.1 y
f(x,y)
1
-2 -4
-4
x
-4 -4
-3
-2
-1
0
1
2
3
x
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 den linearen Mittelwert und die Varianz einer stochastischen Variablen durch eine lineare Abbildung einstellen den linearen Mittelwert und die Varianz am Ausgang eines LTI-Systems berechnen Die Zeit-Autokorrelationsfunktion und die Leistungsübertragungsfunktion eines LTI-Systems berechnen die Autokorrelationsfunktion und das Leistungsdichtespektrum am Ausgang eines LTI-Systems angeben 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.
fX (x)
fY (y)
−2
Fläche = 1
Fläche = 1
1/3
1/6
−2
x 0
2
4
y 0
2
4
Bild 15-1 WDF vor und nach der Abbildung Y = 2 X
Dementsprechend ergibt sich für die allgemeine lineare Abbildung
Y
a X
(15.1)
b
die neue WDF
1 fX a
fY ( y )
y −b a
(15.2)
Für den linearen Mittelwert und die Varianz folgt aus der Erwartungswertbildung Y
a
2 Y
und
b
X
a2
2 X
(15.3)
Addition zweier stochastischer Variablen Die Addition zweier stochastischer Variablen Y
X1
X2
(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. fY ( y )
−
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 Y
a X1
b X2
und
2 Y
a2
2 X1
b2
2 X2
(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 und den Varianzen 2. Nach dem Grenzwertsatz von Lindeberg-Levy [BSMM99] erhalten wir mit der Abbildung Y
für N
1 N
N
Xi −
(15.8)
i 1
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 ]
2 X
[l ] Rhh [l ]
2 X
Rhh [l ]
(15.9)
und für das LDS die Leistungsübertragungsfunktion des Systems. SYY ( )
2 X
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
Impulsantwort (reell, rechtsseitig)
h[n] e − j
H (e j )
Frequenzgang
n
0
n
n 0
Zeitautokorrelationsfunktion
Rhh [l ]
(Zeit-AKF)
h[l ] h[−l ]
h[ n] h[l n] n 0
Leistungsübertragungsfunktion
hh (
Leistungsübertragungsfaktor
Rhh [0]
(Energie der Impulsantwort)
1 2
−
2
H ej
)
hh (
h 2 [ n]
)d n 0
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 Linearer Mittelwert Quadratischer Mittelwert Autokorrelationsfolge (AKF) Leistungsdichtespektrum (LDS) Kreuzkorrelationsfolge (KKF)
)
Ausgang Y
X
m2Y
m2X
X
RYY [0]
RXX [l ]
RYY [l ]
S XX ( )
SYY ( ) RXY [l ]
H (1)
RXX [l ] Rhh [l ] S XX ( )
RXX [l ] h[l ]
hh (
)
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 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. " Lösungsansatz
Partialbruchzerlegung
Rhh [l ]
h[l ] h[−l ]
hh ( z )
H ( z ) H z −1
hh ( z )
AKF „rechter Teil“
RYY [l
gesuchte AKF
RYY [l ]
0]
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) m2
2
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 y y y y y
die notwendigen Verarbeitungsschritte der Analog-Digital-Umsetzung anhand eines Blockschaltbildes skizzieren das Abtasttheorem angeben und seine Bedeutung erklären die Quantisierung anhand der Quantisierungskennlinie erläutern 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 das Gleitkomma-Format und das Festkomma-Format vorstellen und bezüglich der Dynamik und Präzision bewerten 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)
digitales Signal
x[n] = x(t = nTs)
Abtastung
Abtastintervall Ts
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 | 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 fs
1 2 fg
(16.1)
Die so abgetastete Funktion kann aus den Abtastwerten durch die si-Interpolation fehlerfrei rekonstruiert werden. x(t )
n −
x(nTs ) si f s
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
2
− w bit −1
(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
−1/2
1/4 0 −1/4
1/2
1
x
0.7
0.5
0
−0.25
−1.1
−3/4 −1
0
−1
Sättigungskennlinie
[x]Q 3/4
Beispiele
1/2 −1/2
[x]Q
−0.2
−1/2
−1
x
1/4 0 −1/4
1
x
−1/2
x
[x]Q
1.1
0.75
0.7
0.75
0
0
−0.2
−3/4 −1
0
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 Mf
2−52
51 i 0
fi 2i
(16.6)
16.4 Quantisierung
177 31 30
Single Precision 63 62
Double Precision
s
Vorzeichen s 1 Bit
s
23 22
e7 … e0
0
f22 … f0 0
52 51
f51 f50
e10 … e0
…
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 2−2 (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, ), -Inf (negativer Überlauf, − ) 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 2−23 2Emin bzw. 2−52 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) Typ
Exponent
Normalisiert1
1
e < emax
Mantisse
fm, …, f0
1 + Mf
(−1) s 2 E (1 M f ) (−1) s 2 Emin M f
Denormalisiert
0, …, 0
fm, …, f0
Mf
02
0, …, 0
0, …, 0
−
NaN
emax
1, …, 1
Inf, -Inf2
emax
0, …, 0
1 2
Reelle Zahl mit E = e − Bias
Mf
0
−
−
−
−
Signifikant: 1 + Mf
0 und -0 werden ebenso wie Inf und -Inf durch das Vorzeichenbit s = 0 bzw. s = −1 unterschieden
Formatbeispiele
m
emax
Single Precision
22
255
Double Precision
51
2047
Emin
−126
−1022
Emax = emax−1−Bias
Bias
127
127
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 2−i mit ai
0,1
für −1 x 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 i 1
ai 2−i
2− w bit 1 mit ai
0,1
für −1 x 1 − 2− w/bit
1
(16.12)
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
2−2
2−4
2−6
(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 1−2−w/bit wird der größte darstellbare Wert 1−2-(w/bit−1) 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
2
x(t ) dt 0
1 3
(16.16)
[x(t)]Q 1
3/4
x(t)
1/2
−T0/2
1/4 0
−1/4
T0/2
t
−1/2 −3/4
Δ(t) = [x(t)]Q − x(t)
−1
Q/2 −Q/2
t
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 3
Q 2
2
Q2 12
2−2 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
10 log10 22 w bit dB = 20 dB
w log10 2 dB bit
6
w dB 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 S N
6 dB
w dB bit
(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. #
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.
Hinweis: (1+ ) mit > 0, wenige Programmzeilen genügen.
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 (1−LSB)
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 die Fehlerquellen bei realen digitalen Filtern nennen eine Abschätzung für die maximale Frequenzgangsabweichung durch Quantisierung der Koeffizienten bei FIR-Filtern angeben mit MATLAB den tatsächlichen Fehler durch Quantisierung der Koeffizienten bei FIR-Filtern bestimmen die Wirkung der Koeffizientenquantisierung von IIR-Filtern auf den Frequenzgang anhand des PolNullstellendiagramms erläutern den Effekt der Polausdünnung anhand einer Skizze in der z-Ebene veranschaulichen ein IIR-Filter höherer Ordnung in eine für die Realisierung günstige Kaskadenform umwandeln mit MATLAB den tatsächlichen Fehler durch Quantisierung der Koeffizienten bei IIR-Filtern bestimmen 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
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
Befehlssatz (Assembler) Optimierungsmöglichkeiten Entwicklungszeit 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, HQ e j
H ej
− Hd 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 1−LSB. 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
( 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 x 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[10−l] 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.
2
H(ej )
D
= 0.04
1 0.8 0.6 0.4 0.2
2
S
= 0.008
0 -0.2
0
0.6 D/
= 0.2
0.4 =
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 a0
b1 z −1 " bN z − N
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−1
bN
b2
D
b1
b0
D −aN−1
−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)
c)
Re(z)
Re(z) 1
z
1
Re(z) 1
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. e j
z 1
j 0
* z02
(17.7)
0 cos 0
2 0 2
(17.8)
z 2 und z01
e
0
Eingesetzt in die Übertragungsfunktion erhält man b0 b1 z −1 b2 z −2 1 a1 z −1 a2 z −2
H ( z)
b0
1− 2
1− 2
cos
Die Realisierung des Blockes 2. Ordnung im üblichen Zweierkomplement-Format erfordert die Quantisierung der Filterkoeffizienten. HQ ( z)
b0
b1
Q
1
a1
Q
Q z −1
−1
z
b2 a2
Q
Q z −2
−2
(17.9)
z
Wegen −2 Re z 1
a1
und a2
z
2
(17.10)
1
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 0
2 und 0
a1
a2
(17.11)
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 z
und
Q
a2 Q
2 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
Re(z)
0.5
1
Bild 17-8 Mögliche Lagen der komplexen Pole ( ) 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
|HTP(ej )| 1
D
= 0.05
S
0.02 0
D
= 0.3
0.4 =
= 0.001
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)
Gi
b0i a0i
b1i z −1 b2i z −2
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.04
D
= 0.02
S
= 0.1
S
= 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 y y y y y y
das Überlaufverhalten der Addition anhand der Zweierkomplement-Überlaufkennlinie und der Sättigungskennlinie erläutern die Vor- und Nachteile der Wortlängenverkürzung durch Runden und Betragsabschneiden nennen die Entstehung kleiner Grenzzyklen erklären und ihre Auswirkungen auf das Verhalten der Systeme abschätzen die Entstehung großer Grenzzyklen erläutern und ihre Auswirkungen auf das Verhalten der Systeme abschätzen den Effekt des inneren Rauschens erklären ein Blockschaltbild zur Schätzung der Leistung des inneren Rauschens skizzieren und erläutern 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 −1
ZweierkomplementÜberlaufkennlinie
−1 1
−1
Sättigungskennlinie
−1
[x]Q
0
x
1
[x]Q
0
x
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 = 2−1 + 2−7 = 0100 00012c
und
x2 = 0.0078125d = 2−7 = 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 = 2−8 + 2−14 = 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
1/2
−2Q
x 2Q
−1/2 −1
1
−1
−2Q
x −1/2
2Q
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/bit−1) zu 1 −2 w bit 2 3
Q2 12
2 r
(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.
x[n] Rauschquelle r[n]
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.
b
2
r
y[n] = b x[n] + r[n] Bild 18-3 Ersatzschaltbild für die Multiplikation mit Wortlängenverkürzung durch Runden
x[n]
2
2
b2
5
r
2
b1
b0
r
D −a2
2
r
D
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 2
Rauschquelle
D
r
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 2 yr
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 Ri ,0
hi [n] n 0
2
1 2 j
v
H i ( z ) H i z −1
z 1
dz z
(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 = 2 und a1 = −2 Re(z ). 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 = 90°
10
= 0.95 0.9
5
0.8 0.6
0 0
20
40
60
80
100 120
in Grad 180
Bild 18-6 Rauschzahl Ri,0 eines reellwertigen Systems 2. Ordnung in Abhängigkeit von dem Betrag des Polpaares und der Phase
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]
2
2
b2
5
r
b1
2
2
r
b0
r
D
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 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
s1[n]
0.2
0
s2[n]
−0.2
−0.2
2
3
4
−0.2
5
6
0.2
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
−2
0 −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 Und für die Zustandsgrößen, gelten die Werte s1[0] = 0.5 und s2[0] = 0.5.
0.
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
n=0
0.5
−1
−0.5
0
2
0.5
1
s1
−0.5
3
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 = 0 .95 und = 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
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 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
Zweierkomplement-Format
Wortlänge
w
Kleinste positive Zahl (LSB) Größte positive Zahl (1−LSB) Kleinste negative Zahl Dynamik (1−LSB)/LSB
8 bit
2−(w/bit−1)
2−7 = 7.8125 10−3
1−2−(w/bit−1) (1−2−(w/bit−1)) / 2−(w/bit−1) 2 w/bit−1 LSB/2
16 bit
2−15
0.9921875
−1
Präzision
A16.4
273
3.0518 10−5
0.999969482
−1
−1
127
32768
2−8 = 3.90625 10−3
2−16
1.5259 10−5
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.004
01Hex
0.0078125
A16.5
−0.125
−0.125
F0Hex
−1
80Hex
−1
Single Precision
Double Precision
Normalisierte Zahlendarstellung nach IEEE 754-1985
Theoretisch Größte positive Maschinenzahl
2 Emax (1 M f ,max )
2
Kleinste positive Maschinenzahl (normalisiert)
2 Emin
Kleinste Maschinenzahl1 größer 1 (normalisiert)
1 2− wM
Dynamik Präzision2
2
21024 38
3.4028 10 2−126
−38
1.1755 10 bit
Emax 1− Emin
2
2128
− wM bit −1
1 + 2−23
−7
1+1.1921 10
1.7976 10308 2−1022
2.2251 10−308 1 + 2−52
1+2.2204 10−16
2254
22046
2.8948 1076 2−24
5.9605 10−8
2−53
1.1102 10−16
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
0.5 0 -0.5 -1 -1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
0
0.2
0.4
0.6
0.8
1
x 0.4
Δ
0.2 0 -0.2 -0.4 -1
-0.8
-0.6
-0.4
-0.2 x
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 2−15
< 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
0.0078125 0.0156250 0.0156250 0
−0.0024575 −0.0016997 −0.0017824 0.0006014
Fehlersystems, hd[n]
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 20 log10(21 20−16) 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.4 , 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 Normalized Frequency (
0.6 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 x1[n] x2[n]
0
1
0.2
0
−0.2
2
−0.2
3
4
5
6 0.2
−0.2
−0.2
0
0.2
0
0.2
0.2
0
−0.2
s2 / LSB 4 3
−4
4
2
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
−1
0
−1/2
s1
−1/2
3 5 9
1
1/2
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 0° 30° 60° 90°
ymin / LSB
ymax / LSB
Periode
118
118
1
11
12
5
28
5
4
−11 −5 −5
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
20
y[n] / LSB
10 0 -10 -20
0
20
40
60
-5 -5
-4
-3
-2
80
100 120 140 n limit cycle with periode 28
160
180
200
3
4
5
s 2[n] / LSB
5
0
-1 0 s 1[n] / LSB
1
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 0° 30° 60° 90°
ymin / LSB
ymax / LSB
Periode
−25689
22618
24
24742
33
−
−
−
−23319 −
−
−
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 = 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
theoretisch −60.1
geschätzt
−80.0 −84.8
−80.1 −84.8
0° 30° 60°
−60.1
−86.0
89°
−86.0
−90.8
90°
−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 Koeffi= 0.95, Polwinkel = 30° und Wortzienten b0 = 0.9375, b1 = b2 = 0, Polradius lä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
1−2−3 −78.0
1−3−2 −80.8
2−1−3 −76.9
2−3−1 −76.2
3−1−2 −79.7
3−2−1 −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 30
h(x)
25 20 15 10 5 0
0
1
2
3
4
5
x
Bild 20-56 Histogramm
b) Approximierende Wahrscheinlichkeitsdichtefunktion der Normalverteilung
− Linearer Mittelwert
= 2.45 und Varianz
− WDF der Verteilung N(2.45, 0.77) 1
f ( x)
19A2
2
0.77
exp −
a) Linearer Mittelwert
X
x − 2.45
2
= 0.77
2
2 0.77
= 0.2 und Varianz
2 X
= 0.25
b) Linearer Mittelwert am Systemausgang Y
=
H(1) = 0.5
X
Mittlere Leistung bei weißem Eingangsprozess (Varianz), siehe auch A15.3 2 Y
=
2
Rhh[0] = 0.25 0.25 0.80 = 0.0625
X
Mittlere Leistung am Systemausgang m2Y =
19A3
2 Y
+
2 Y
= 0.0625 + 0.25 = 0.3125
− 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
Teilsystem 1
Teilsystem 2 0.8 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 .
284 19B2
20 Lösungen zu den Versuchen a) Linearer Mittelwert
X
= 0.2 und Varianz
2 X
= 0.81
b) Linearer Mittelwert am Systemausgang Y
=
H(1) = 0.2
X
Mittlere Leistung bei weißem Eingangsprozess (Varianz) 2 Y
=
2
Rhh[0] = 0.81 0.5 = 0.405
X
mit 1 2
Rhh [0]
/2 − /2
1d
1 2
Mittlere Leistung am Systemausgang m2Y = 19B3
2 Y
+
2 Y
= 0.405 + 0.2 = 0.605
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 2127−127 (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 2
= 8 Q2 / 12 mit Q = 2−(w/bit−1)
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 Δ
Bkl G N Ni Q Ri Ts X, Y as,dB ak bl d f fs m2 n rxy s= +j 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)
m
S
S
,
,
D
D
2
z= z0 , z
j
e
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 [n]
Impulsfolge (unit sample sequence, unit impulse sequence)
g(
)
Gruppenlaufzeit (group delay)
(x)
gaußsches Fehlerintegral
hh(z) erf(x)
z-Transformierte der Zeit-AKF zu h[n] Fehlerfunktion (error function)
H(ej ) j
Frequenzgang (frequency response) 2
|H(e )| H(z) Rhh [l] RXX [l]
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]
X[k] DFT-Paar (DFT pair)
x[n]
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 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 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 Cauer-Tiefpass empirische Kovarianz 158 empirischer Korrelationskoeffizient 158 empirische Varianz 150 Energiefolge 104 Entwurfsvorschrift im Frequenzbereich 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 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 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 Butterworth-Tiefpass Präzision 179 Pseudofaltung 157 Pseudozufallszahl 151
R Radix-2-FFT 36, 41 Rauschzahl 203 Realisierung 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 Mantisse si-Interpolation 173 Single Precision 177 Sinusfolge 18, 31 Spannweite 153 spektrale Auflösung 54 Spektrogramm 69 Sperrbereich, -kreisfrequenz, -toleranz 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 Varianz System 88
T Tapped-delay-line Struktur TransversalFilter Telefontastatur 66 Tiefpass 118, 128, 136 Toleranzschema /-schlauch 117 transponierte Direktform II 92, 106, 191 Transversal-Filter 116, 188
U Übergangsbereich Toleranzschema Überlaufkennlinie 199 Überlaufschwingung 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