329 28 4MB
German Pages 318 [328] Year 2012
Martin Werner Digitale Signalverarbeitung mit MATLAB®
Martin Werner
Digitale Signalverarbeitung mit MATLAB® Grundkurs mit 16 ausführlichen Versuchen 5., durchgesehene und aktualisierte 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.
Das in diesem Werk enthaltene Programm-Material ist mit keiner Verpflichtung oder Garantie irgendeiner Art verbunden. Die Autoren übernehmen infolgedessen keine Verantwortung und werden keine daraus folgende oder sonstige Haftung übernehmen, die auf irgendeine Art aus der Benutzung dieses Programm-Materials oder Teilen davon entsteht. Höchste inhaltliche und technische Qualität unserer Produkte ist unser Ziel. Bei der Produktion und Auslieferung unserer Bücher wollen wir die Umwelt schonen: Dieses Buch ist auf säurefreiem und chlorfrei gebleichtem Papier gedruckt. Die Einschweißfolie besteht aus Polyäthylen und damit aus organischen Grundstoffen, die weder bei der Herstellung noch bei der Verbrennung Schadstoffe freisetzen.
1. Auflage 2001 2. Auflage 2003 3. Auflage 2006 4. Auflage 2009 5., durchgesehene und aktualisierte Auflage 2012 Alle Rechte vorbehalten © Vieweg +Teubner Verlag | Springer Fachmedien Wiesbaden GmbH 2012 Lektorat: Reinhard Dapper | Walburga Himmel Vieweg+Teubner Verlag ist eine Marke von Springer Fachmedien. Springer Fachmedien 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: AZ Druck und Datentechnik, Berlin Gedruckt auf säurefreiem und chlorfrei gebleichtem Papier Printed in Germany ISBN 978-3-8348-1473-9
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 Operation. Die digitale Signalverarbeitung macht unser Leben bequemer, sicherer und produktiver. Kenntnisse in der digitalen Signalverarbeitung sind deshalb zu einem wichtigen Bestandteil in vielen technisch-wissenschaftlichen Berufen geworden. Das Buch „Digitale Signalverarbeitung mit MATLAB“ stellt 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) Entwurf digitaler Filter (2 Versuche) Stochastische Signale (2 Versuche) Reale Systeme, A/D-Umsetzung und Wortlängeneffekte (3 Versuche) Zu jedem Versuch gibt es Lernziele und eine kompakte Einführung. Die Versuchsvorbereitung ist wichtiges Element des Praktikums und baut idealerweise auf erste Erfahrungen in 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 Versuchsdurchführungen. Am Ende des Buches findet sich ein ausführlicher Lösungsteil. Zu den übergreifenden thematischen Abschnitten stehen Lernkontrollfragen für eine Rückschau und Wiederholung bereit. 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 einfachen 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 viele 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 konnte der Einführungsteil „Erste Schritte in MATLAB“ kurz gehalten werden. Technische Hinweise und Softwarekompatibilität Alle Programme wurden mit MATLAB Version 7.11 (R2010b) getestet. Da aus didaktischen Gründen nur einfache Befehle verwendet wurden, sollten die Programme auch mit etwas älteren oder neueren MATLAB 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 vielen Jahren mit großem 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 Juli 2011
Martin Werner
VII
Inhaltsverzeichnis 1
Erste Schritte in MATLAB .............................................................................................. 1 1.1 Programmstart und einfache Befehle ....................................................................... 1 1.1.1 MATLAB-Entwicklungsumgebung .......................................................... 1 1.1.2 Einfache arithmetische Operationen .......................................................... 1 1.1.3 Konstanten und Variablen ......................................................................... 3 1.1.4 MATLAB help-Kommando .................................................................... 4 1.1.5 Vektoren und Matrizen .............................................................................. 4 1.1.6 Vordefinierte MATLAB-Funktionen und einfache Grafiken .................... 9 1.2 Schreiben eines MATLAB-Programms im Editor/ Debugger-Window .... 10 1.2.1 MATLAB-Editor ..................................................................................... 10 1.2.2 Programmkontrolle und logische Operatoren .......................................... 12 1.2.3 Verkettete Programme und Unterprogramme .......................................... 13 1.3 MATLAB HELP und MATLAB DEMO................................................................. 15
2
Zeitdiskrete Signale ........................................................................................................ 18 2.1 Elementare zeitdiskrete Signale ............................................................................. 18 2.1.1 Grundlagen .............................................................................................. 18 2.1.2 Vorbereitende Aufgaben .......................................................................... 21 2.1.3 Versuchsdurchführung............................................................................. 22 2.2 Audiosignale .......................................................................................................... 22 2.2.1 Töne, Klänge und Geräusche ................................................................... 22 2.2.2 Beispiel: Synthese eines Audiosignals .................................................... 23 2.2.3 ADSR-Profil ............................................................................................ 24 2.2.4 Harmonische ............................................................................................ 26 2.2.5 Vorbereitende Aufgaben .......................................................................... 26 2.2.6 Versuchsdurchführung............................................................................. 26
3
Diskrete Fourier-Transformation (DFT) ...................................................................... 29 3.1 Grundlagen ............................................................................................................ 29 3.1.1 Diskrete Fourier-Transformation ............................................................. 30 3.1.2 Eigenschaften der diskreten Fourier-Transformation .............................. 34 3.2 Vorbereitende Aufgaben ........................................................................................ 36 3.3 Versuchsdurchführung ........................................................................................... 37
4
Schnelle Fourier-Transformation (FFT)....................................................................... 40 4.1 Komplexität ........................................................................................................... 40 4.2 Radix-2-FFT-Algorithmus ..................................................................................... 41 4.3 Programmierung der DIT-Radix-2-FFT ................................................................ 46 4.3.1 Ordnen der Eingangsfolge ....................................................................... 46 4.3.2 Signalverarbeitung im Signalflussgraphen .............................................. 49 4.4 Vorbereitende Aufgaben ........................................................................................ 51 4.5 Versuchsdurchführung ........................................................................................... 53
VIII
Inhaltsverzeichnis
5
Kurzzeit-Spektralanalyse: Grundlagen ........................................................................ 55 5.1 Grundlagen ............................................................................................................ 55 5.1.1 Abtastung ................................................................................................. 56 5.1.2 Spektrum des zeitdiskreten Signals ......................................................... 58 5.1.3 Fensterung ............................................................................................... 59 5.1.4 Diskrete Fourier-Transformation ............................................................. 62 5.1.5 Auffüllen mit Nullen ................................................................................ 64 5.1.6 Leckphänomen ......................................................................................... 66 5.1.7 Fensterfolgen ........................................................................................... 66 5.2 Vorbereitende Aufgaben ........................................................................................ 68 5.3 Versuchsdurchführung ........................................................................................... 69
6
Kurzzeit-Spektralanalyse: Beispiele .............................................................................. 72 6.1 Mehrtonsignal ........................................................................................................ 72 6.1.1 Mehrfrequenzwahlverfahren .................................................................... 72 6.1.2 Vorbereitende Aufgaben ......................................................................... 73 6.1.3 Versuchsdurchführung ............................................................................. 74 6.2 Audiosignale .......................................................................................................... 75 6.2.1 Kurzzeit-Spektralanalyse ......................................................................... 75 6.2.2 Vorbereitende Aufgaben .......................................................................... 76 6.2.3 Versuchsdurchführung ............................................................................. 79
7
Lernkontrollfragen zur DFT, FFT und Kurzzeit-Spektralanalyse ............................ 82 7.1 Aufgabenkatalog A ................................................................................................ 82 7.2 Aufgabenkatalog B ................................................................................................ 84 7.3 Auswahlfragen ....................................................................................................... 86
8
Faltung, Differenzengleichungen und Systeme............................................................. 88 8.1 Faltung ................................................................................................................... 88 8.1.1 Grundlagen .............................................................................................. 88 8.1.2 Vorbereitende Aufgaben .......................................................................... 90 8.1.3 Versuchsdurchführung ............................................................................. 91 8.2 Differenzengleichung 1. Ordnung.......................................................................... 92 8.2.1 Goertzel-Algorithmus 1. Ordnung ........................................................... 92 8.2.2 Versuchsdurchführung ............................................................................. 95 8.3 Lineare zeitinvariante Systeme .............................................................................. 95 8.3.1 Impulsantwort und Frequenzgang von LTI-Systemen ............................. 95 8.3.2 Lineare Differenzengleichung und z-Transformation .............................. 97 8.3.3 Goertzel-Algorithmus 2. Ordnung ......................................................... 100 8.3.4 Vorbereitende Aufgaben ........................................................................ 101 8.3.5 Versuchsdurchführung ........................................................................... 102
9
Finite-duration-impulse-response-Systeme (FIR-Systeme) ....................................... 103 9.1 Eigenschaften von FIR-Systemen ........................................................................ 103 9.2 Vorbereitende Aufgaben ...................................................................................... 107 9.3 Versuchsdurchführung ......................................................................................... 112
Inhaltsverzeichnis
IX
10
Entwurf digitaler FIR-Filter ........................................................................................ 114 10.1 FIR-Filterstruktur................................................................................................. 114 10.2 Entwurfsvorschriften im Frequenzbereich ........................................................... 116 10.2.1 Toleranzschema für den Tiefpassentwurf .............................................. 116 10.2.2 Vorbereitende Aufgaben ........................................................................ 117 10.3 Fourier-Approximation ........................................................................................ 118 10.3.1 Fourier-Reihe des Frequenzganges ........................................................ 118 10.3.2 Vorbereitende Aufgaben ........................................................................ 119 10.3.3 Versuchsdurchführung........................................................................... 119 10.4 Fourier-Approximation mit Fensterung ............................................................... 120 10.4.1 Glättung durch Fensterung .................................................................... 120 10.4.2 Vorbereitende Aufgaben ........................................................................ 121 10.4.3 Versuchsdurchführung........................................................................... 121 10.5 Chebyshev-Approximation .................................................................................. 121 10.5.1 Equiripple-Methode ............................................................................... 121 10.5.2 Versuchsdurchführung........................................................................... 123
11
Infinite-duration-impulse-response-Systeme (IIR-Systeme) ..................................... 128 11.1 Einfluss der Pole auf den Frequenzgang .............................................................. 128 11.2 Blockdiagramm ................................................................................................... 129 11.3 Impulsantwort ...................................................................................................... 131 11.4 Partialbruchzerlegung mit MATLAB .................................................................. 131 11.5 Vorbereitende Aufgaben ...................................................................................... 133 11.6 Versuchsdurchführung ......................................................................................... 136
12
Entwurf digitaler IIR-Filter ......................................................................................... 138 12.1 IIR-Filter .............................................................................................................. 138 12.2 Entwurf eines Butterworth-Tiefpassfilters ........................................................... 139 12.2.1 Toleranzschema und Filtertyp ............................................................... 139 12.2.2 Zeitkontinuierliches Butterworth-Tiefpassfilter .................................... 141 12.2.3 Dimensionierung des zeitkontinuierlichen Butterworth-Tiefpassfilters 142 12.2.4 Vorbereitende Aufgaben Butterworth-Tiefpassfilter .......................... 143 12.2.5 Bilineare Transformation ....................................................................... 145 12.2.6 Frequenztransformation ......................................................................... 146 12.3.7 Vorbereitende Aufgaben Transformation ........................................... 148 12.3.8 Versuchsdurchführung........................................................................... 149 12.3 Entwurf digitaler Tiefpassfilter nach Standardapproximationen analoger Tiefpassfilter ........................................................................................................ 150
13
Lernkontrollfragen zu FIR- und IIR-Systemen ......................................................... 154 13.1 Aufgabenkatalog A .............................................................................................. 154 13.2 Aufgabenkatalog B .............................................................................................. 157 13.3 Auswahlfragen ..................................................................................................... 160
14
Kenngrößen stochastischer Signale ............................................................................. 162 14.1 Stochastischer Prozess ......................................................................................... 162 14.2 Zufallssignale....................................................................................................... 166 14.2.1 Zufallszahlen am Digitalrechner ............................................................ 166 14.2.2 Vorbereitende Aufgaben ........................................................................ 167
X
Inhaltsverzeichnis
14.3
14.2.3 Versuchsdurchführung ........................................................................... 168 Korrelationsfunktion stochastischer Prozesse ...................................................... 170 14.3.1 Korrelation, Korrelationsfunktion und Leistungsdichtespektrum .......... 170 14.3.2 Weißes Rauschen ................................................................................... 171 14.3.3 Schätzung der Autokorrelationsfunktion ............................................... 172 14.3.4 Schätzung des Leistungsdichtespektrums .............................................. 173 14.3.5 Vorbereitende Aufgaben ........................................................................ 174 14.3.6 Versuchsdurchführung ........................................................................... 175
15
Stochastische Signale und LTI-Systeme ...................................................................... 179 15.1 Lineare Abbildung stochastischer Signale ........................................................... 179 15.1.1 Grundlagen ............................................................................................ 180 15.1.2 Vorbereitende Aufgaben ........................................................................ 181 15.1.3 Versuchsdurchführung ........................................................................... 182 15.2 Abbildung stochastischer Signale an LTI-Systemen ........................................... 182 15.2.1 Grundlegende Beziehungen ................................................................... 182 15.2.2 Vorbereitende Aufgaben ........................................................................ 184 15.2.3 Versuchsdurchführung ........................................................................... 185
16
Analog-Digital-Umsetzung ........................................................................................... 188 16.1 Digitalisierung ..................................................................................................... 188 16.2 Abtastung ............................................................................................................. 189 16.2.1 Abtasttheorem ........................................................................................ 189 16.2.2 Vorbereitende Aufgaben ........................................................................ 190 16.2.3 Versuchsdurchführung ........................................................................... 191 16.3 Quantisierung ....................................................................................................... 191 16.3.1 Quantisierungskennlinie ........................................................................ 191 16.3.2 Maschinenzahlen ................................................................................... 193 16.3.3 Quantisierungsfehler .............................................................................. 196 16.3.4 Vorbereitende Aufgaben ........................................................................ 198 16.3.5 Versuchsdurchführung ........................................................................... 200
17
Reale digitale Filter: Koeffizientenquantisierung ...................................................... 203 17.1 Wortlängeneffekte ............................................................................................... 203 17.2 FIR-Filter mit quantisierten Koeffizienten .......................................................... 204 17.2.1 Fehlermodell und Fehlerfrequenzgang .................................................. 204 17.2.2 Vorbereitende Aufgaben ........................................................................ 206 17.2.3 Versuchsdurchführung ........................................................................... 206 17.3 IIR-Filter mit quantisierte Koeffizienten ............................................................. 207 17.3.1 Kaskadenform ........................................................................................ 207 17.3.2 Koeffizientenquantisierung und Polausdünnung ................................... 209 17.3.3 Vorbereitende Aufgaben ........................................................................ 211 17.3.4 Versuchsdurchführung ........................................................................... 215
18
Reale digitale Filter: Quantisierte Arithmetik............................................................ 217 18.1 Quantisierte Arithmetik ....................................................................................... 217 18.1.1 Addierer Überlauf und große Grenzzyklen......................................... 217 18.1.2 Multiplizierer Inneres Rauschen und kleine Grenzzyklen .................. 218 18.1.3 Nichtlineares Blockdiagramm für ein System 2. Ordnung .................... 222 18.2 Vorbereitende Aufgaben ...................................................................................... 223 18.3 Versuchsdurchführung ......................................................................................... 226
Inhaltsverzeichnis
XI
19
Lernkontrollfragen zu stochastischen Signalen und realen Systemen ..................... 234 19.1 Aufgabenkatalog A .............................................................................................. 234 19.2 Aufgabenkatalog B .............................................................................................. 236 19.3 Auswahlfragen ..................................................................................................... 238
20
Lösungen zu den Versuchen......................................................................................... 240 20.1 Vorbemerkungen ................................................................................................. 240 20.2 Lösungen: Zeitdiskrete Signale ........................................................................... 240 20.3 Lösungen: Diskrete Fourier-Transformation ....................................................... 241 20.4 Lösungen: Schnelle Fourier-Transformation ....................................................... 245 20.5 Lösungen: Kurzzeit-Spektralanalyse: Grundlagen .............................................. 247 20.6 Lösungen: Kurzzeit-Spektralanalyse: Beispiele .................................................. 249 20.7 Lösungen: Lernkontrollfragen zur DFT, FFT und Kurzzeit-Spektralanalyse ...... 254 20.7.1 Aufgabenkatalog A ................................................................................ 254 20.7.2 Aufgabenkatalog B ................................................................................ 255 20.7.3 Auswahlfragen ....................................................................................... 257 20.8 Lösungen: Faltung, Differenzengleichung und LTI-Systeme .............................. 257 20.9 Lösungen: Finite-duration-impulse-response-Systeme ........................................ 260 20.10 Lösungen: Entwurf digitaler FIR-Filter ............................................................... 263 20.11 Lösungen: Infinite-duration-impulse-response-Systeme ..................................... 271 20.12 Lösungen: Entwurf digitaler IIR-Filter ................................................................ 276 20.13 Lösungen: Lernkontrollfragen zu FIR- und IIR-Systemen .................................. 280 20.13.1 Aufgabenkatalog A ................................................................................ 280 20.13.2 Aufgabenkatalog B ................................................................................ 282 20.13.3 Auswahlfragen ....................................................................................... 283 20.14 Lösungen: Stochastische Signale Kenngrößen ................................................. 284 20.15 Lösungen: Stochastische Signale und LTI-Systeme ............................................ 291 20.16 Lösungen: Analog-Digital-Umsetzung ................................................................ 297 20.17 Lösungen: Reale digitale Filter: Koeffizientenquantisierung .............................. 299 20.18 Lösungen: Reale digitale Filter: Quantisierte Arithmetik .................................... 302 20.19 Lösungen: Lernkontrollfragen zu stochastischen Signalen u. realen Systemen... 306 20.19.1 Aufgabenkatalog A ................................................................................ 306 20.19.2 Aufgabenkatalog B ................................................................................ 308 20.19.3 Auswahlfragen ....................................................................................... 309
Formelzeichen und Abkürzungen ........................................................................................ 310 Literaturverzeichnis .............................................................................................................. 313 Sachwortverzeichnis .............................................................................................................. 315
1
1
Erste Schritte in MATLAB
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 arithmetische Ausdrücke verarbeitet und einfache Grafiken erzeugen werden können. Sie werden lernen, eigene Programme mit Unterprogrammen und Funktionen zu erstellen und zu nutzen. Mit zunehmender Übung werden sich Ihnen die Möglichkeiten von MATLAB mehr und mehr erschließen. Die kommentierten Programmbeispiele zu den Versuchen und die ausführliche Dokumentation von MATLAB werden Ihnen dabei helfen. Anmerkungen: (i) MATLAB® ist ein eingetragenes Warenzeichen der Firma The MathWorks, Inc., U.S.A. MATLAB ist als Studentenversion verfügbar und wird mit einer ausführlichen Hilfefunktion sowie thematischen Einführungskursen ausgeliefert. (ii) Über Bücher zur Signalverarbeitung mit MATLAB informiert beispielsweise die Webseite von The MathWorks mathworks.com/support/books/ index.html. Dort kann auch eine Liste mit deutschsprachigen Büchern ausgewählt werden. (iii) Für die Beispiele im Buch wurde MATLAB 7.11 (R2010b) unter Windows Vista® verwendet.
1.1
Programmstart und einfache Befehle
1.1.1
MATLAB-Entwicklungsumgebung
Nach dem Start von MATLAB erscheint die voreingestellte MATLAB-Bedienoberfläche wie in Bild 1-1 mit MATLAB Desktop mit Menüleiste, Schaltknöpfen und den vier geöffneten Fenstern: Current Directory c, Command Window d, Workspace e und Command History f. Abhängig von Ihrer Installation (Versionsnummer, Studentenversion und Zusatzpakete wie SIMULINK) können Ihre Bildschirmanzeigen von den Beispielen im Buch abweichen. Vom MATLAB Desktop aus haben sie Zugriff auf die Entwicklungsumgebung von MATLAB. Anmerkung: Die Voreinstellung des MATLAB Desktop erreichen Sie stets über die Menüleiste mit Desktop ) Desktop Layout ) Default. Mit den Fenstern, den Menüleisten und den Schaltelementen, wird wie am PC üblich gearbeitet.
1.1.2
Einfache arithmetische Operationen
Wir beginnen mit der Voreinstellung in Bild 1-1. Für die ersten Schritte benötigen Sie nur das Command Window. Der Übersichtlichkeit halber schließen Sie die anderen Fenster durch klicken mit der Maus auf das Symbol u am jeweiligen oberen rechten Fensterrahmen. 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.
M. Werner, Digitale Signalverarbeitung mit MATLAB®, DOI 10.1007/978-3-8348-8621-7_1, © Vieweg+Teubner Verlag | Springer Fachmedien Wiesbaden GmbH 2012
2
1 Erste Schritte in MATLAB
d
e
c f
Bild 1-1 MATLAB-Bedienoberfläche (MATLAB Desktop)
Tippen Sie einfach 2+3 ein und drücken Sie dann die Eingabetaste zur Übernahme des Befehls durch den Rechner. >> 2+3 Sie erhalten als Ergebnis die Antwort (answer) ans = 5 MATLAB verfügt über die üblichen arithmetischen Operatoren und darüber hinaus über weitere arithmetische und logische Operatoren, Vergleichsoperatoren und spezielle Zeichen, die den Umgang mit Vektoren und Matrizen erleichtern. Ein Beispiel ist der Potenzoperator „^“ für die Exponentiation. Geben Sie ein >> 3^3 und Sie erhalten ans = 27 Arithmetische Ausdrücke können mit Hilfe von Klammern definiert werden. Auf die Eingabe >> 4*(4-3+2/4) antwortet MATLAB mit ans = 6 Zur Bearbeitung einer Eingabe stehen Ihnen die Cursor-Tasten zur Verfügung. Mit n können Sie frühere Eingaben wieder in die Kommandozeile laden und bearbeiten. Schließen Sie eine Kommandozeile mit dem Semikolon „;“ ab, so wird die Anzeige des Ergebnisses unterdrückt. MATLAB antwortet nur mit dem Prompt.
1.1 Programmstart und einfache Befehle
3
Als Beispiel betrachten wir die letzte Eingabe. Mit der Pfeiltaste n holen Sie sie wieder hervor. Nun schließen Sie das Kommando mit einem Semikolon ab. >> 4*(4-3+2/4); Die einfachen Operatoren sind in Tabelle 1-1 nochmals zusammengestellt. Darin sind auch die Ränge, d. h. die Prioritäten mit der sie ausgeführt werden, angegeben. So wird die Exponentiation vor der Multiplikation vorgenommen. >> 7^3*2 ans = 686 Tabelle 1-1 Einfache Rechenoperatoren Operation
Symbol
Beispiel
Rang
Addition
+
7 + 3 = 10
3
Subtraktion
73=4
3
Multiplikation
7 3 = 21
2
Division
/
9/3=3
2
Exponentiation
^
7 ^ 3 = 343
1
1.1.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. Das nachfolgende Beispiel verdeutlicht die Anwendung von skalaren Variablen. >> A = 2; >> a = 4; >> B = A/a; Der Wert einer Variablen wird durch Eingabe ihres Namens am Bildschirm angezeigt. >> B B = 0.5 MATLAB verfügt über einige vordefinierte Konstanten. Von besonderer Bedeutung ist die (Kreis-) Zahl S und die imaginäre Einheit i bzw. j. So lassen sich komplexe Zahlen einfach eingeben. >> z = 1+2j z = 1.0000 + 2.0000i und
4
1 Erste Schritte in MATLAB >> z = 2+3i z = 2.0000 + 3.0000i
Die Zahl S, genauer die in MATLAB verwendete Repräsentation, 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) Das Format der Bildschirmausgabe kann durch Eingabe auf der Kommandozeile eingestellt werden, wie z. B. format short und format long. (ii) MATLAB benutzt das Zahlenformat des IEEE-Standards für Gleitkommaarithmetik (IEEE standard for floating point arithmetic, ANSI/IEEE 7541985) mit der Genauigkeit von circa 16 Dezimalstellen und einem Wertebereich von etwa 10308 bis 10+308. Fragen der numerischen Genauigkeit werden in einem späteren Versuch noch genauer behandelt.
1.1.4
MATLAB help-Kommando
Tippen Sie einfach help pi ein und drücken Sie dann die Eingabetaste zur Übernahme des Befehls durch den Rechner. >> help pi Sie erhalten die kurze Erklärung PI
3.1415926535897....
PI = 4*atan(1) = imag(log(-1)) = 3.1415926535897.... In der zweiten Zeile ist der Zusammenhang zwischen der Zahl S und der ArkustangensFunktion atan und dem Imaginärteil imag der natürlichen Logarithmus-Funktion log angegeben. Funktionen in MATLAB werden später bei Bedarf noch genauer vorgestellt. Der Hinweis Reference Page in Help browser mit dem Verweis (Link) doc pi liefert einen direkten Zugriff zur MATLAB-Dokumentation, was an dieser Stelle nicht weiter ausgeführt werden soll.
1.1.5
Vektoren und Matrizen
Vektoren und Matrizen sind als geordnete Folgen 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. Vektoren lassen sich mit den 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
1.1 Programmstart und einfache Befehle x = 1
2
5
3
Mit Semikolon zwischen den Zahlen ergibt sich der Spaltenvektor >> y = [1; 2; 3] y =
1 2 3
Mit den letzten beiden Befehlen haben Sie in MATLAB Datenfelder erzeugt, sogenannte Arrays, deren Elemente im MATLAB Arbeitsspeicher, dem Workspace, abgelegt sind. Über den Inhalt und die Organisation des Workspace informieren Sie sich im Command Window durch Eingabe des Befehls whos. >> whos Name
Size
Bytes
Class
A
1x1
8
double
B
1x1
8
double
a
1x1
8
double
x
1x3
24
double
y
3x1
24
double
z
1x1
16
double
Attributes
complex
Der Befehl whos listet alle im Speicher abgelegten Variablen mit ihren Dimensionen (size) in der Form „Zahl der Zeilen u Zahl der Spalten“ auf. Anmerkung: 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ätzlichen Bearbeitungsmöglichkeiten, siehe Bild 1-2. Die Anzeige können sie beispielsweise mit dem Menü-Punkt View und dann Choose Columns anpassen.
Bild 1-2 Fenster Workspace
6
1 Erste Schritte in MATLAB
Mit dem Befehl clear werden alle Variablen im Workspace gelöscht. >> clear Wiederholen Sie die Eingaben zweier Vektoren x und y mit >> x = [1 2 3]; >> y = [4; 5; 6]; Die Dimension der Vektoren kann auch mit dem Befehl size bestimmt werden. >> size(x) ans = 1
3
Die Angabe ist wieder im Format „Zahl der Zeilen u Zahl der Spalten“. Für eindimensionale Arrays, ob Zeile oder Spalte, kann auch der Befehl length verwendet werden. Da MATLAB eine aufwendige Speicherverwaltung durchführt, können bei kompatiblen Dimensionen viele Befehle direkt auf Vektoren und Matrizen angewandt werden. Wir betrachten dazu einige Beispiele. Zunächst beginnen wir mit einem einzelnen Element eines Vektors. Durch >> x(2) ans = 2 erhalten wir den aktuellen Wert des zweiten Elements des Vektors x. Mit >> x(2) = 7 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) ??? Attempted to access x(0); index must be a positive integer or logical. 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. Anmerkung: Ein häufiger Programmierfehler ist die Verknüpfung von Datenfeldern mit inkompatiblen Dimensionen MATLAB wird Sie durch Fehlermeldungen darauf hinweisen.
1.1 Programmstart und einfache Befehle
7
Durch den Operator „´” kann eine Transposition, das heißt Zeilen- und Spaltenvertauschung, eines Vektors oder einer Matrix vorgenommen werden. Mit >> z = y´ z = 4
5
6
resultiert ein 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.
Ähnlich kann eine elementweise Multiplikation durchgeführt werden. Dazu wird der Multiplikationsoperator mit einem vorangestellten Punkt erweitert „.*“. >> x.*z ans = 4
35
18
Entsprechendes gilt auch für elementweise Division >> x./z ans = 0.2500
1.4000
0.5000
Werden hingegen die beiden Vektoren nur mit dem Multiplikationszeichen * verknüpft, so wird bei kompatiblen Dimensionen das Skalarprodukt (14 + 75 + 36) ausgeführt. >> x*y ans = 57 Die explizite Definition von Vektoren und Matrizen durch Eingabe der Elemente kann beschwerlich sein. Um dem abzuhelfen, bietet MATLAB spezielle Befehle an. Mit den folgenden Befehlen werden häufig benötigte Matrizen erzeugt. >> x = ones(2,3) x =
1 1
1 1
1 1
>> x = zeros(3,2) x =
0 0 0
0 0 0
>> x = repmat(7,2,3) x =
7 7
7 7
7 7
8
1 Erste Schritte in MATLAB >> x = eye(3) x =
1 0 0
0 1 0
0 0 1
Das Rechnen mit Vektoren und Matrizen geschieht wie gewohnt. Geben Sie folgende Befehle ein und überprüfen Sie das Ergebnis. I = eye(3); A = ones(3,3); c = 0.5; B = c*A + I B = 1.5000 0.5000 0.5000
0.5000 1.5000 0.5000
0.5000 0.5000 1.5000
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 Einserschritten enthält. t = Columns 1 through 7 0
1
2
3
4
5
6
Columns 8 through 11 7
8
9
10
Der Doppelpunkt-Operator „:“ kann auch verwendet werden, um eine ganze Zeile oder Spalte einer Matrix auszuwählen. >> x = B(1,:) x = 1.5000
0.5000
0.5000
>> x = B(:,2) x = 0.5000 1.5000 0.5000 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 weitere Beispiele hinzukommen.
1.1 Programmstart und einfache Befehle
1.1.6
9
Vordefinierte MATLAB-Funktionen und einfache Grafiken
Eine Stärke von MATLAB ist die umfangreiche Sammlung von vordefinierten Funktionen, der weit über den typischen Funktionsumfang höherer Programmiersprachen wie C hinausgeht. Dies trifft sowohl auf die MATLAB-Grundausstattung als auch auf die Erweiterungspakete, Toolboxes genannt, zu. Die in den Versuchen benötigten Funktionen werden später Schritt für Schritt eingeführt. Anmerkung: Eine Auflistung der verfügbaren Funktionen liefert die Auswahl der Menüleiste Help ) Product Help und dann im sich neu öffnenden MATLAB-Fenster Help Window unter Functions:. Dort können Sie später auf die Beschreibungen der Funktionen nach Kategorie oder alphabetisch zugreifen.
Exemplarisch soll die Sinusfunktion grafisch dargestellt werden. Dazu wählen Sie zunächst eine Anzahl von äquidistanten Stützstellen im Bereich von 0 bis 10 mit der Schrittweite 0.1. >> 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) Die Grafik kann mit weiteren Befehlen ergänzt werden, siehe Bild 1-3. >> grid >> xlabel(‘t \rightarrow’) >> ylabel(‘y(t) \rightarrow’) >> title(‘Sine function’)
Bild 1-3 Grafische Darstellung der Sinusfunktion mit MATLAB
10
1 Erste Schritte in MATLAB
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 in der Menüleiste und den Schaltknöpfen des Grafikfensters einige Optionen zur nachträglichen Bearbeitung der 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 diese Interpolation irreführend. Deshalb enthält MATLAB den Grafikbefehl stem, der das Format des Stabdiagramms unterstützt. 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 stem wiederholen. >> n = 0:10; >> y = sin(n); >> stem(n,y,'filled'), grid >> xlabel('n \rightarrow'), ylabel('y[n] \rightarrow') Das Bild 1-4 hebt jetzt den diskreten Charakter der Stützstellen hervor. Die Formatangabe filled ist optional und kann zur Betonung des diskreten Charakters eingesetzt werden. Für die Achsenbeschriftung wurden die häufig benutzten Schreibweisen für die normierte Zeitvariable n und zeitdiskrete Signale y[n] verwendet. Bild 1-4 Sinusfunktion in diskreter Darstellung im Stabdiagramm (stem)
1.2
Schreiben eines MATLAB-Programms im Editor/ Debugger-Window
1.2.1
MATLAB-Editor
Nachdem Sie das Command Window kennengelernt haben, sollen Sie nun mit einfachen MATLAB-Programmen vertraut werden. Da MATLAB die Befehlszeilen sequenziell interpretiert, liegt es nahe, mehrere Eingaben in einer Textdatei, 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 ) Blank M-File anwählen. Danach erscheint das Editor/ Debugger-Window am Bildschirm. Geben Sie nun die in Bild 1-5 angegebenen Programmzeilen ein.
1.2 Schreiben eines MATLAB-Programms im Editor/ Debugger-Window
11
Bild 1-5 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 Kommando help und dem Namen eines M-Files, z. B. help myprogram, werden alle dort direkt am Dateianfang stehenden Kommentarzeilen angezeigt. Damit erstellen Sie auf einfache Weise Hilfstexte zu Ihren Programmen. 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 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; alternativ kann der Schaltknopf mit dem grünen Dreieck verwendet werden. Anmerkung: In MATLAB sind einige nützliche Debugwerkzeuge 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 M-File wird ausgeführt.
12
1 Erste Schritte in MATLAB
1.2.2
Programmkontrolle und logische Operatoren
Programme mit nur einfachen Anweisungen und sequenziellem Ablauf sind meist nur von geringem Nutzen. Typische Aufgabenstellungen der Signalverarbeitung verlangen nach bedingten Anweisungen und Kontrolle des Programmablaufs. MATLAB bringt dazu die üblichen, aus höheren Programmiersprachen bekannten Werkzeuge mit: bedingte Anweisung
if–else-end und if–elseif–else-end
Auswahlanweisung
switch–case-end
Schleifen
for-end , while-end und break
Für die bedingten Anweisungen werden die Vergleichsoperatoren in Tabelle 1-2 verwendet. Dabei lassen sich gegebenenfalls mehrere Bedingungen durch die logischen Operatoren in Tabelle 1-3 verknüpfen. Tabelle 1-2 Vergleichsoperatoren Operator
Definition
Operator
Definition
Operator
Definition
>
größer
=
größer oder gleich
0 n = n + 1; EPS0 = a; a = a/2; end fprintf('EPS0 = %g , n = %i\n',EPS0,n)
1.2 Schreiben eines MATLAB-Programms im Editor/ Debugger-Window
1.2.3
13
Verkettete Programme und Unterprogramme
Das kleine Programmbeispiel in Bild 1-5 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 definierten 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 offene M-Files oder in sich geschlossene speicher- und laufzeitoptimierte Programmmodule. 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 Fourierreihe. Bild 1-6 zeigt einen Ausschnitt aus einem periodischen Rechteckimpulszug in normierter Darstellung. Die Periode beträgt 1. Die Amplitude alterniert im Abstand der halben Periode zwischen den Werten 1 und 0.
x(t) 1
t
0 0
0.5
1
2
3
Bild 1-6 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 Zeilen im Programmbeispiel 1-2 ein. Programme die eine Funktion darstellen speichern Sie am besten unter den jeweiligen Funktionsnamen ab, hier rectangular.m.
14
1 Erste Schritte in MATLAB
Programmbeispiel 1-2 Rechteckimpulszug function y = rectangular(t,p,w) % y = rectangular(t,p,w) % t : time samples (t>=0) % p : period % w : impulse width y = zeros(size(t)); for n = 1:length(t) x = mod(t(n),p); if x >= 0 && x = , && (UND) und for haben Sie Zugriff auf die jeweilige MATLAB-Dokumentation. (ii) Siehe auch Menüpunkt Function M-File im Editor/Debugger-Window.
Die Approximation des periodischen Rechteckimpulszugs geschieht mit der aus der Mathematik bekannten Fourierreihe.
x t
1 2 f 1 ¦ sin > 2n 1@ 2S t 2 S n 0 2n 1
Dazu erstellen Sie folgendes Programm: Programmbeispiel 1-3 Fourierreihe des Rechteckimpulszuges function y = fourier(t,N) % y = fourier(t,N) % t : time samples % N : number of harmonics to be used (Nn@
x t
n Ts
(2.1)
Anmerkungen: (i) Ideale Abtastung bedeutet, dass die Funktionswerte nicht verändert werden. Die reale Abtastung, z. B. durch Analog/Digital-Umsetzer, liefert hingegen zeit- und wertdiskrete Folgen. Man spricht dann von einer Digitalisierung und einem digitalen Signal. Die Digitalisierung 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, siehe auch Programmbeispiel 1-1 und MATLAB-Konstante eps.
M. Werner, Digitale Signalverarbeitung mit MATLAB®, DOI 10.1007/978-3-8348-8621-7_2, © Vieweg+Teubner Verlag | Springer Fachmedien Wiesbaden GmbH 2012
2.1 Elementare zeitdiskrete Signale
19
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 Signalwert 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. Beispiel 2-1 Sinusfunktion und Sinusfolge Zur Beschreibung periodischer Phänomene in der Natur werden oft sinusförmige Funktionen verwendet. Wir wählen deshalb als einführendes Beispiel die Sinusfunktion xˆ sin 2S f 0 t
x t
(2.2)
mit der Amplitude xˆ und der (Signal-)Frequenz f0 und der Zeit t. Häufig handelt es sich bei den Parametern um physikalische, also dimensionsbehaftete Größen, wie die elektrische Spannung in Volt (V), die Frequenz in Hertz (Hz) und die Zeit in Sekunden (s). In der digitalen Signalverarbeitung werden die physikalischen Größen meist dimensionslos dargestellt. Dies geschieht nach Normierung mit entsprechenden Bezugsgrößen. Im Beispiel bietet es sich an die Größen auf 1 V, 1 Hz bzw. 1 s zu beziehen, sodass bei Bedarf die Verbindung zu den physikalischen Größen hergestellt werden kann. Die zugehörige Abtastfolge ist x >n @
xˆ sin 2S f 0 Ts n
(2.3)
Mit dem Abtastintervall Ts und der normierten Zeitvariablen n. Für eine kompakte Beschreibung ist es günstig, die konstanten Anteile im Argument der Sinusfunktion zur normierten Kreisfrequenz : zusammenzufassen. x >n@
xˆ sin :0 n
(2.4)
mit :0
2S f 0 Ts
(2.5)
Wählen wir beispielsweise das Abtastintervall Ts
1 8 f0
(2.6)
so erhalten wir die normierte Kreisfrequenz :0
2S f 0
1 8 f0
2S 8
(2.7)
20
2 Zeitdiskrete Signale
Ein MATLAB-Programm zur grafischen Darstellung der beiden Signale ist im Programmbeispiel 2-1 angegeben. Die erzeugten Grafiken finden sich in Bild 2-1. Im unteren Teil ist die Sinusfolge in einem Stabdiagramm dargestellt. Durch den Befehl stem wird der zeitdiskrete Charakter hervorgehoben. Programmbeispiel 2-1 Sinusfunktion und Sinusfolge % Sine function and sine sequence % dsplab2_1.m * mw * 08/18/2010 % amplitude in Volt (V) x0 = 1; f0 = 8; % fundamental frequency in Hertz (Hz) % sampling interval Ts = 1/(8*f0); t = 0:.01:20; % time variable in seconds (s),time span 0...24 s x_t = x0*sin(2*pi*f0*Ts*t); % sine function n = 0:20; % normalized time w0 = 2*pi*f0*Ts; % normalized radian frequency x_n = x0*sin(w0*n); % sine sequence % Graphics FIG1 = figure('Name','dsplab2_1','NumberTitle','off'); subplot(2,1,1), plot(t,x_t,'LineWidth',2), grid xlabel('Time {\itt} in seconds \rightarrow') ylabel('{\itx}({\itt}) / {\itx}_0 \rightarrow') subplot(2,1,2), stem(n,x_n,'filled'), grid xlabel('Time index {\itn} \rightarrow') ylabel('{\itx}[{\itn}] / {\itx}_0 \rightarrow')
x(t) / x o 0
1 0.5 0 -0.5 -1
0
5
10 Time t in seconds o
15
20
0
5
10 Time index n o
15
20
x[n] / x o 0
1 0.5 0 -0.5 -1
Bild 2-1 Sinusfunktion x(t) und Sinusfolge x[n] (dsplab2_1) Anmerkungen: (i) Auch das obere Bild beruht genau genommen auf einer Auswertung der Funktion an diskreten Stützstellen. Weil die Anzahl der Stützstellen relativ groß ist, wird dies nicht sichtbar. Diese Darstellung wird der besseren Verständlichkeit oft gewählt, wenn das Anwendungsproblem einen kontinuierlichen Verlauf zugrunde legt. Ebenso wird zur einfacheren Interpretierbarkeit die Zeitvariable t in Sekunden angegeben. Dann kann die Periodendauer direkt abgelesen werden, T0 = 8 s. Meist ist es
2.1 Elementare zeitdiskrete Signale
21
günstig die dargestellte Funktion durch ihren Maximalwert zu normieren, hier x0 xˆ . (ii) Manchmal sieht man 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. (iii) Bei der Achsenbeschriftung kann, wie in der Fachliteratur heute öfters anzutreffen, auf die Richtungspfeile verzichtet werden, wenn die Achsenbezifferung eindeutig ist. Die Formelzeichen für die Signale und die Variablen werden kursiv dargestellt.
Im Folgenden werden einige für die digitale Signalverarbeitung typische Signale betrachtet. In den vorbereitenden Aufgaben sollen Sie diese von Hand skizzieren, um die Ergebnisse dann in der Versuchsdurchführung mit MATLAB zu kontrollieren. Zunächst werden die mathematischen Definitionen vorgestellt:
Impulsfolge und Sprungfolge 1 für n ¯0 sonst
0
G >n@ ®
1 für n t 0 ® ¯0 sonst
u >n@
(2.8)
(2.9)
Sinus- und Kosinusfolge mit der normierten Kreisfrequenz : und der eulerschen Zahl e = 2.71828... x > n @ sin : n
x > n @ e j:n
5
(2.10)
cos : n j sin : n
G[n]
u[n]
1
1
0
n 5
5
0
(2.11)
n 5
Bild 2-2 Impulsfolge G[n] und Sprungfolge u[n] im Stabdiagramm
2.1.2
Vorbereitende Aufgaben
A2.1
Skizzieren Sie die Impulsfolgen x1[n] = G[n3] und x2[n] = G[n+2] für n = 5:5.
A2.2
Skizzieren Sie die Sinus- und Kosinusfolgen x3[n] = sin(2Sn/7) und x4[n] = cos(n/2) für n = 0:10. Hinweis: Fertigen Sie eine Handskizze an ohne Taschenrechner und Lineal. Siehe auch Stabdiagramm in Bild 2-1.
22
2 Zeitdiskrete Signale
A2.3
Sind die Folgen x3[n] und x4[n] periodisch? Geben Sie gegebenenfalls die Perioden an.
A2.4
Machen Sie sich mit dem Programmbeispiel 2-1 vertraut.
2.1.3
Versuchsdurchführung
M2.1
Erzeugen Sie mit MATLAB die Signale aus der Vorbereitung A2.1 und 2 und vergleichen Sie die Bildschirmdarstellungen mit Ihren Skizzen. Hinweise: (i) 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. (ii) Beachten Sie, dass in MATLAB die Elemente eines Vektors mit dem Index 1 beginnend adressiert werden.
2.2
Audiosignale
In diesem Versuchsteil sollen Sie die Verbindung zwischen den digitalen Signalen am PC und der sinnlich-realen Welt mit Hilfe von Audiosignalen hörbar machen. Dabei lernen Sie auch ein Beispiel für ein umfangreicheres MATLAB-Programm kennen. Für die Experimente ist ein PC mit üblicher Sound Card erforderlich. 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. 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. 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. Es lassen sich damit theoretisch Hörqualitäten erreichen, die vergleichbar zur bekannten Audio-CD sind. 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.
2.2.1
Töne, Klänge und Geräusche
Leben ohne Informationen aus der Umwelt ist nicht vorstellbar. Der Mensch besitzt hierfür seine Sinnessysteme, darunter das Gehör. Mit seinen Ohren empfängt der Mensch Schallwellen aus der Umgebung. Physikalisch können die Schallwellen, die Druckschwankungen an einem Ort, mit Sinusfunktionen wie in (2.2) beschrieben werden. Dabei definiert die Amplitude die Differenz zwischen dem Maximal- und dem Minimaldruck. Die Lautstärke bestimmt die Tonstärke und die Frequenz, die Zahl der Schwingungsperioden pro Sekunde, die Tonhöhe. Man spricht von einem Eintonsignal, oder kurz Ton, wenn das Audiosignal nur eine Frequenzkomponente aufweist. Das menschliche Gehör kann Töne im Bereich von circa 20 Hz bis (16) 20 kHz aufnehmen, besonders gut gelingt dies im Bereich von etwa 300 Hz bis 5 kHz.
2.2 Audiosignale
23
Anmerkung: Untersuchungen zur Hörverständlichkeit führten auf die weltweite Standardisierung der Übertragung des Frequenzbands von 300 Hz bis 3,4 kHz für die Telefonie.
Wird Schall durch den menschlichen Sprechapparat oder durch Musikinstrumente erzeugt, entsteht in der Regel ein komplexes Tongemisch. Stehen die Frequenzen der Töne in einem ganzzahligen Verhältnis, spricht von einem Klang. Davon unterschieden wird das Geräusch, das aus der Überlagerung vieler Töne mit unterschiedlichen Amplituden und Frequenzen entsteht, und meist als Rauschen wahrgenommen wird.
2.2.2
Beispiel: Synthese eines Audiosignals
Unter einem digitalen Audiosignal, im Weiteren kurz Audiosignal genannt, verstehen wir ein digitales Signal, dass nach D/A-Umsetzung mittels einem Lautsprecher für Menschen hörbar gemacht werden kann. Zunächst wird an die grundsätzlichen Zusammenhänge erinnert. Beispielhaft soll ein Ton mit der Frequenz von 220 Hz und der (Ton-)Dauer von einer Sekunde zugrunde gelegt werden. 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 der Vektor der Abtastzeitpunkte t in Sekunden. Die Abtastfrequenz fs in Hertz beträgt 8000, sodass in einer Sekunde 8000 Abtastwerte anfallen. Wird mit Zeitindex 0 angefangen und mit 8000 aufgehört, sind es tatsächlich 8001 Abtastwerte des sinusförmigen Signals. Die Ausgabe durch die Sound Card erfolgt mit dem Befehl soundsc. Zusammengefasst werden die untenstehenden Programmzeilen benötigt. fs = 8000; f0 = 440; t = 0:1/fs:1; s = sin(2*pi*f0*t); soundsc(s,fs)
% sampling frequency in % % sampling instances (normalized % % play
Hertz pitch time) sound sound
Im Versuch soll ein Musikstück vertont werden. Grundlage ist die Zeit-Frequenz-Darstellung, die Notenschrift in Bild 2-3. 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-3 Prélude von Marc-Antoine Charpentier (16341704)
24
2 Zeitdiskrete Signale
Tabelle 2-1 Töne (Noten) und Tondauern (normierte Zeitintervalle) zum Musikstück in Bild 2-3 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
Der Zusammenhang zwischen den Noten und der physikalischen Signaldarstellung 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 genau 12 gleichförmige 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 für a1 Note Frequenzfaktor
c1
d1
e1
f1
g1
a1
h1
c2
29/12
27/12
25/12
24/12
22/12
1
2+2/12
2+3/12
Hinweise: (i) Im Englischen wird für die deutsche Note h der Buchstabe b verwendet und die Tonhöhe wird pitch genannt. Durch das Vorzeichen # auf der 5. Linie von unten wird in Bild 2-3 der Ton f um einen Halbton zum fis erhöht. (ii) Beispielsweise ergibt sich die Frequenz für den Ton d 2 aus Tabelle 2-2 zu 4402+5/12 Hz. Mit den obigen Festlegungen kann nun, wie im Programmbeispiel 2-2, jeder Note genau ein Sinuston mit entsprechender Frequenz und entsprechender Dauer zugeordnet werden.
2.2.3
ADSR-Profil Hüllkurve E(t)
Das im Programmbeispiel 2-2 erzeugte EA = 1 Audiosignal klingt unnatürlich, da es nur D A aus jeweils ein- und ausgeschalteten S ED Sinustönen besteht, wobei das Knacken ES durch das Schalten sich besonders R störend bemerkbar macht. Ein angenehmerer Höreindruck lässt sich mit einer 0 tS tR tA tD Zeit t Hüllkurvenbewertung erzielen. In der Audiotechnik wird hierfür oft das ADSRBild 2-4 ADSR-Profil Profil in Bild 2-4 verwendet. Es besteht aus vier Geradenstücken, die vier Phasen repräsentieren: Anstieg, Abfall, Halten und Freigeben, englisch Attack, Decay, Sustain und Release. Das Programmbeispiel 2-3 stellt eine mögliche Realisierung der ADSR-Hüllkurve für jeweils einen Ton dar.
2.2 Audiosignale
25
Programmbeispiel 2-2 Audiosignal „Prélude“ % Audio signal prelude by Marc-Antoine Charpentier (1634-1704) % dsplab2_3.m * mw * 19Aug2010 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]; Sc = 1/4; % time scaling fs = 8000; % sampling frequency % define variable for audio signal audiosig = []; for k = 1:length(pitch) % for loop L = Sc*fs*duration(k); % number of samples per tone n = 0:L-1; % normalized time w = (2*pi/fs)*pitch(k); % normalized radian frequency % sinusoidal tone s = sin(w*n); audiosig = [audiosig s]; % concatenate audio signal end % sound card output soundsc(audiosig,fs,16); Programmbeispiel 2-3 ADSR-Profil function env = adsr_profile(N,tA,tD,tS,ED,ES) % dsp laboratory - assignment 2 % computation of envelope signal with ADSR profile for shaping pure tones % env = adsr_profile(N,tA,tD,tS,EA,ED,ES) % N : number of signal samples (duration) % 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 % env : envelope signal with ADSR profile % adsr_profile.m * mw * 19Aug2010 % allocate memory for envelope signal env = zeros(1,N); % Attack phase NA = floor(tA*N)+1; % number of samples in attack phase A = 1/(NA-1); % envelope increment for k = 2:NA env(k) = env(k-1) + A; end % Delay phase ND = floor((tD-tA)*N); % number of samples in delay phase % envelope decrement D = (1-ED)/ND; for k = NA+1:NA+ND env(k) = env(k-1) - D; end % Sustain phase NS = floor((tS-tD)*N); % number of samples in sustain phase % envelope decrement S = (ED-ES)/NS; for k = NA+ND+1:NA+ND+NS env(k) = env(k-1) - S; end
26
2 Zeitdiskrete Signale
% Release phase R = env(k)/(N-k); % envelope decrement in release phase for k = NA+ND+NS+1:N env(k) = env(k-1) - R; end
2.2.4
Harmonische In der Musik treten Töne in der Regel nicht rein auf, sondern Musiksignale stellen eher einem Gemisch von Harmonischen dar. Das heißt, es treten in gewissen Abschnitten eine Grundschwingung (Grundwelle) mit einer Grundfrequenz f0 und viele Oberschwingungen (Oberwellen) bei ganzzahlig Vielfachem der Grundfrequenz kf0 auf, siehe Beispiel zur Fourier-Reihe in Abschnitt 1.2.3. Der Höreindruck kann deshalb weiter verbessert werden, wenn die Oberschwingungen geeignet hinzugefügt werden. Der Einfachheit halber wählen wir dazu in der Versuchsdurchführung den Ansatz einer abgebrochenen Fourier-Reihe s >n@
K
¦ bk sin k :0 n
(2.12)
k 1
mit exponentiell fallenden Koeffizienten bk
e
D k 1
(2.13)
Der Parameter D steuert die Dämpfung der Amplituden bzgl. der Reihenfolge der Oberschwingungen. Für die Simulation beachte man auch, dass die höchste auftretende Frequenz die halbe Abtastfrequenz nicht überschreiten darf, weil sonst das Abtasttheorem verletzt wird.
2.2.5
Vorbereitende Aufgaben
A2.5
Machen Sie sich mit den Programmbeispielen 2-2 und 2-3 vertraut.
2.2.6
Versuchsdurchführung Hinweis: Die für die praktische Durchführung der Versuche benötigen Programmdateien können auch über das Internet beim Vieweg+Teubner Verlag unter viewegteubner.de abgerufen werden.
M2.2
Starten Sie das Programmbeispiel 2-2 dsplab2_3.
M2.3
Um das harte Ein- und Austasten der Töne zu vermeiden können diese mit ADSRHü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 ADSRpro
= adsr_profile(length(s),0.2,0.3,0.95,0.95,0.8);
audiosig = [audiosig s.*ADSRpro];
2.2 Audiosignale
27
Sie können nun auch verschiedene Einstellungen für die Abtastfrequenz fs und die Zeitskalierung Sc und weiterer Parameter des ADSR-Profils ausprobieren. M2.4
Stellen Sie das Audiosignal nach der Hüllkurvenbewertung grafisch dar und benutzen Sie die Lupenfunktion im Grafikfenster, um sich das Signal eines Tons genauer anzusehen. Hinweis: Ergänzen Sie dazu das Programm beispielsweise mit den Grafikbefehlen:
% Graphics % time scale t = 0:length(audiosig)-1; t = t/fs; FIG1 = figure('Name','dsplab2_3b : Audio signal with ADSR profile',... 'NumberTitle', 'off'); plot(t,audiosig), grid xlabel('time in seconds'), ylabel('audio signal')
M2.5
Der Höreindruck kann durch Hinzunahme höherer Harmonischer verändert werden. Erweitern Sie dazu das Programm entsprechend dem Ansatz in (2.12). Wie viele Oberschwingungen können maximal hinzugefügt werden, ohne dass die halbe Abtastfrequenz überschritten wird? Wie ändert sich der Höreindruck, wenn nur ungeradzahligen Harmonische verwendet werden? (b2 = b4 = … = 0) Vergleichen Sie den Höreindruck für verschiedene Werte von D.
M2.6
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 stellt MATLAB den Import Wizard zur Verfügung. Gestartet wird er beispielsweise durch Anklicken (Doppelklick) einer WAV-Datei im Fenster Current Directory. Die Abtastfrequenz (fs) wird ebenfalls angegeben.
28
2 Zeitdiskrete Signale
Hinweise zu MATLAB-Funktionen und M-Files In Tabelle 2-3 werden für den Versuch einige nützliche Befehle und Funktionen aufgelistet, zu denen Sie sich in MATLAB Erläuterungen und Beispiele anzeigen lassen können. Tabelle 2-3 MATLAB-Befehle benutzte Programme und Dateien Befehle zur Programmablaufsteuerung
end, for, function, while
Operatoren und spezielle Zeichen
+ , - , * , / , ^ , : , [ ], .*
Elementare Matrizen und Matrixmanipulationen
length, ones, zeros
Elementare mathematische Funktionen
cos, exp, floor, sin
Mathematische Konstanten
pi
2-dim. Grafikbefehle
axis, figure, grid, plot, stem, subplot, title, xlabel, ylabel
Befehle für Audiosignale
sound, soundsc, wavread, wavwrite
Þ Onlineressourcen
adsr_profile.m, dsplab2_1.m, dsplab2_2.m, dsplab2_3.m, dsplab2_3b.m, dsplab2_3c.m, dsplab2_4.m, handel.wav
29
3
Diskrete Fourier-Transformation
Dieser ist der erste von vier Versuchen zur 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. In der Versuchsvorbereitung werden wichtige mathematische Zusammenhänge vorgestellt und an Beispielen erläutert. In der Versuchsdurchführung werden Sie die Ergebnisse mit MATLAB überprüfen und die DFT zur Kurzzeit-Spektralanalyse anwenden. Anmerkung: Die Bedeutung der DFT geht über die vorgestellte Kurzzeit-Spektralanalyse hinaus. Wegen ihrer Orthogonalitätseigenschaft spielt die DFT in der digitalen Nachrichtenübertragung eine Schlüsselrolle. Wichtige Anwendungen finden sich unter dem Begriff OFDM-Verfahren (Orthogonal Frequency Division Multiplexing) beispielsweise bei den drahtlosen Netzen (WLAN), den digitalen Teilnehmeranschlüssen (ADSL), dem digitalen Fernsehen (DVB) und der 4. Mobilfunkgeneration (LTE). Darüber hinaus ist beispielsweise die in der Audio- und Videocodierung wichtige diskrete Kosinustransformation (DCT) eng mit der DFT verwandt. Schlüsselbegriffe Diskrete Fourier-Transformation, Spektralanalyse
harmonische
Analyse,
Leckphänomen,
Spektrum,
Kurzzeit-
Lernziele Nach Bearbeiten dieses Versuches können Sie x
die Definitionsgleichungen der DFT und IDFT angeben
x
die Begriffe harmonische Analyse, DFT-Spektrum und DFT-Koeffizient erläutern
x
den prinzipiellen Zusammenhang zwischen den DFT-Koeffizienten und den transformierten Zeitsignalen erklären
x
für Sinus- und Kosinussignale das DFT-Spektrum und umgekehrt berechnen
x
für eine periodische Kosinusfolge die DFT-Länge so bestimmen, dass das DFT-Spektrum genau zwei von null verschiedene DFT-Koeffizienten aufweist
x
das Leckphänomen erklären und seine Bedeutung für die Spektralanalyse einschätzen
3.1
Grundlagen
Das Beispiel der Synthese von Audiosignalen in Versuch 2 zeigt die Bedeutung der Frequenzkomponenten zur Signaldarstellung auf. Schon Mitte des 18. Jahrhunderts wurden in Europa die komplexe Exponentialfunktion zur Beschreibung von Schwingungsphänomenen diskutiert. J. B. J. Fourier erkannte 1807 die Bedeutung der harmonischen Analyse am Beispiel des Wärmeleitungsproblems. Heute wird in vielen Anwendungsgebieten die harmonische Analyse mit ihrer Signaldarstellung im Frequenzbereich genutzt. Die Fourier-Reihe und die Fourier-Transformation gehören zur mathematischen Grundbildung in technischen Studiengängen. An ihre Definitionen wird in Tabelle 3-1 in der linken Spalte, für (zeit)kontinuierliche Funktionen, erinnert: die Fourier-Reihe für periodische Signale und die Fourier-Transformation für aperiodische Signale.
M. Werner, Digitale Signalverarbeitung mit MATLAB®, DOI 10.1007/978-3-8348-8621-7_3, © Vieweg+Teubner Verlag | Springer Fachmedien Wiesbaden GmbH 2012
30
3 Diskrete Fourier-Transformation
Über die recht allgemeinen Voraussetzungen zur Existenz der Transformationen in Tabelle 3-1, d. h. der auftretenden Integrale, gibt die Mathematik Auskunft. Die bekannten Methoden der Fourieranalyse für zeitkontinuierliche Signale sind auf zeitdiskrete Signale übertragbar, worauf im Versuch 5 noch näher eingegangen wird. Tabelle 3-1 Signaldarstellung im Zeit- und im Frequenzbereich Fourieranalyse Zeitkontinuierliche Funktionen
Zeitdiskrete Funktionen
Fourier-Reihe
Diskrete Fourier-Transformation (DFT)
Periodische Zeitfunktion
f
ck e j2S f0 k t
¦
x (t )
Aperiodische Zeitfunktion
x[n ]
k f
ck
1 T0
t0 T0
³
x (t ) e j2S f0 k t dt
N 1
X [k ]
t0
¦ x[n] e
j2S
k n N
n 0
) Man erhält ein Linienspektrum mit den DFT) Man erhält im Frequenzbereich ein LinienKoeffizienten Xk mit der Periode N zu den norspektrum mit den Fourier-Koeffizienten ck bei mierten Frequenzen k / N, k = 0 : N1, mit der den Frequenzen kf0 mit der Grundfrequenz f0 normierten Grundfrequenz 1 / N und der Periode = 1/T0 und der Periode T0 des Zeitsignals N des Zeitsignals Fourier-Transformation
3.1.1
k n
j2S 1 N 1 N ¦ X [k ] e N k 0
x(t )
1 2S
f
³
X ( jZ ) e jZ t dZ
f f
X ( jZ )
³ x(t ) e
jZ t
dt
f
) Man erhält das Spektrum bzgl. der Kreisfrequenz Z = 2Sf
Fourier-Transformation (für Folgen)
x[n ]
1 X e j: e j:n d : 2S ³ 2S f
¦ x[n] e j:n n f
X e j:
) Man erhält ein periodisches Spektrum für die normierte Kreisfrequenz : mit der Periode 2S
Diskrete Fourier-Transformation
Der harmonischen Analyse periodischer, zeitkontinuierlicher Signale mit der Fourier-Reihe entspricht die diskrete Fourier-Transformation (DFT) periodischer Folgen in Tabelle 3-1 oben rechts. Sie nimmt eine herausragende Rolle in der Signalverarbeitung ein. Ihre Bedeutung gründet sich auf die 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 in Spektrumanalysatoren für zeitkontinuierliche Signale eingesetzt und das Ergebnis als Spektrum im Frequenzbereich interpretiert.
3.1 Grundlagen
31
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, also eine Blocktransformation ist. Die DFT kann mit der schnellen Fourier-Transformation effizient berechnet werden.
Wegen des engen Zusammenhangs mit der Fourier-Reihe wird die DFT auch als „diskrete Fourier-Reihe“ bezeichnet. Während die Fourier-Reihe mit k = 0, r1, r2, ... ein unendlich ausgedehntes Linienspektrum zu den Kreisfrequenzen 2Sf0k erzeugt, ordnet die DFT wegen der Periodizität der Exponentialfunktion exp(j2Sk/N) den N Elementen einer Periode der Folge genau N Spektrallinien für k = 0, 1, ..., N1 zu. Die DFT ist eine Blocktransformation, die N Signalelementen im Zeitbereich genau N Signalelemente im Frequenzbereich und umgekehrt bijektiv zuordnet. Für das Verständnis der DFT und ihrer Anwendungen ist wichtig, dass sie für periodische Folgen definiert ist, siehe Bild 3-1, aber häufig auf Folgen endlicher Länge angewendet wird. Da jede Folge endlicher Länge L mit der Periode N t L eindeutig periodisch fortgesetzt werden kann, ist die DFT auf alle geordneten Zahlenfolgen endlicher Länge anwendbar. Grundperiode
8
1 0
78
n
Bild 3-1 Periodische Folge
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 nochmals zusammen: Die diskrete Fourier-Transformation (DFT) einer Folge x[n] der Länge N mit n = 0, 1, ..., N1 ist die Folge der DFT-Koeffizienten
X >k @
N 1
¦ x[n] wNk n
für k = 0, 1, 2, ..., N1
(3.1)
n 0
mit dem komplexen Faktor wN
e j2S N
(3.2)
Die inverse DFT (IDFT) liefert wieder die ursprüngliche Folge, wobei diese als Überlagerung gewichteter Sinus- und Kosinusfolgen dargestellt wird.
x[n ]
1 N 1 k n ¦ X > k @ wN N k 0
1 N 1 ª § 2S · § 2S ·º ¦ X > k @ «cos ¨ k n ¸ j sin ¨ k n ¸» N k 0 N N ¹ © ¹¼ ¬ ©
(3.3)
32
3 Diskrete Fourier-Transformation
Die Folge x[n] und ihr DFT-Spektrum X[k] bilden ein DFT-Paar. DFT
x[n ] l X > k @
(3.4)
Beispiel 3-1 DFT einer Kosinusfolge
Um die Ergebnisse der DFT interpretieren zu können, müssen wir uns die Eigenschaften der Transformationsgleichungen (3.1) und (3.3) klar machen. Den ersten, und wichtigsten Schritt dazu liefert das grundlegende Beispiel der DFT der Kosinusfolge
§S · x[n ] cos ¨ n ¸ ©8 ¹
(3.5)
Sie soll der DFT der Länge N = 32 unterworfen werden. X >k @
31
2S
§ S · j nk cos ¨ n ¸ e 32 ©8 ¹ n 0
¦
für k = 0:31
(3.6)
Für den weiteren Rechengang ist es vorteilhaft, die Kosinusfunktion mit der eulerschen Formel in komplex-exponentieller Form darzustellen. Nach kurzer Zwischenrechnung erhält man zwei geometrische Reihen
X >k @
S S 1 31 §¨ j16 2k n j16 2k n ·¸ ¦ e e ¸ 2 n 0¨ © ¹
für k = 0:31
(3.7)
für k = 0:31
(3.8)
die in den beiden Summen resultieren
X >k @
§ j2S 2 k · j2S 2k 1 ¨1 e 1 e ¸ ¸ S S 2 ¨¨ j 2 k ¸ j 2 k 16 16 1 e © 1 e ¹
Die Betrachtung der Brüche in der Klammer zeigt, dass die Zähler stets null sind, weil in den Exponenten stets ein ganzzahliges Vielfaches von 2S auftritt und folglich die komplex Exponentiellen gleich eins sind. Damit sich überhaupt ein von null verschiedener DFT-Koeffizient einstellen kann, muss der Nenner die Nullstelle des Zählers kompensieren. Dies geschieht genau für k = 2 und 30, dann besitzt der Nenner ebenfalls Nullstellen. Für k = 2 und 30 liegen somit zunächst unbestimmte Ausdrücke vor, die aus (3.8) mit der Regel von L’Hospital, oder einfacher direkt durch Einsetzen der beiden Werte für k aus (3.7) bestimmt werden können. Es resultiert die DFT der Kosinusfolge
X > k @ 16 G > k 2@ G > k 30@
für k = 0:31
(3.9)
Die Kosinusfolge und ihr DFT-Spektrum sind in Bild 3-2 dargestellt. Die Grafik wurde mit dem Programmbeispiel 3-1 erstellt.
3.1 Grundlagen
33
1 0.5
0 -0.5 -1
Re( X[k] ) o
Im( x[n] ) o
1 0.5
0
5
10
15 no
20
25
10
0
5
10
15 no
20
25
30
0
5
10
15 ko
20
25
30
10
0 -10 0
Bild 3-2
0 -0.5 -1
30
Im( X[k] ) o
Re( x[n] ) o
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 reelle Koeffizienten, nämlich für k = 2 und k = N 2 = 30. Damit kann vom DFT-Spektrum in Bild 3-2 ohne Rechnung auf das Kosinussignal und seine Periode und umgekehrt geschlossen werden.
5
10
15 ko
20
25
30
0 -10
Kosinusfolge (oben) und ihr DFT-Spektrum (unten); Darstellung von Real- (Re) und Imaginär-(Im)teilen links bzw. rechts (dsplab3_1)
Die Betrachtung der DFT als harmonische Analyse macht dies nochmals deutlich, siehe (3.3). Die DFT stellt jede Folge als mit den DFT-Koeffizienten gewichtete Überlagerung von Kosinus- und Sinusfolgen dar
x[n ]
1 N 1 ¦ X > k @ ª¬cos :k n j sin :k n º¼ N k 0
für n = 0:N1
(3.10)
mit den normierten Kreisfrequenzen
:k
2S k für k = 0:N1 N
(3.11)
Durch Koeffizientenvergleich ergibt sich unmittelbar der Zusammenhang § 2S · DFT N cos ¨ K n¸ l G > k K @ G ª¬ k N K º¼ 2 © N ¹
für k = 0:N1
da die Kosinusfunktion ungerade und in 2S periodisch ist, d. h. cos x
cos( x)
(3.12)
cos(2S x) .
Ebenso kann für Sinusfolgen überlegt werden § 2S · DFT N K n¸ l j G > k K @ G ª¬ k N K º¼ sin ¨ 2 © N ¹
für k = 0:N1
(3.13)
34
3 Diskrete Fourier-Transformation
Programmbeispiel 3-1 DFT der Kosinusfolge % dft spectrum of a cosine sequence % dsplab3_1.m * mw * 7Oct2010 N = 32; % length of sequences (period) n = 0:N-1; % normalized time Omega = pi/8; % normalized radian frequency % cosine sequence x = cos(Omega*n); 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),'filled'), grid axis([0 N-1 -1 1]); xlabel('{\itn}'), ylabel('Re( {\itx}[{\itn}] )') subplot(2,2,2), stem(0:N-1,imag(x),'filled'), grid axis([0 N-1 -1 1]); xlabel('{\itn}'), ylabel('Im( {\itx}[{\itn}] )') subplot(2,2,3), stem(0:N-1,real(X),'filled'), grid MAX = max(abs(X)); axis([0 N-1 -MAX MAX]); xlabel('{\itk}'), ylabel('Re( {\itX}[{\itk}] )') subplot(2,2,4), stem(0:N-1,imag(X),'filled'), grid axis([0 N-1 -MAX MAX]); xlabel('{\itk}'), ylabel('Im( {\itX}[{\itk}] )') function X = dft(x) % dsp laboratory - assignment 3 % dft computation in the direct form % function X = dft(x) % x : time-domain signal % X : dft spectrum of x % dft.m * mw * 7Oct2010 N = length(x); % length of input signal and dft % complex exponential w = exp(-1i*2*pi/N); X = zeros(1,N); % allocate memory for dft spectrum % dft computation in direct form for k=0:N-1 wk = w^k; for n = 0:N-1 X(k+1)= X(k+1) + x(n+1)*wk^n; end end
3.1.2
Eigenschaften der diskreten Fourier-Transformation
Die DFT besitzt ähnliche Eigenschaften wie die Fourier-Transformation, wie z. B. die Symmetrie zwischen der Hin- und Rücktransformation. Wegen der periodisch zu denkenden Folgen ergeben sich zusätzlich die speziellen Eigenschaften zur zyklischen Verschiebung und zyklischen Faltung. In Tabelle 3-2 sind wichtige Eigenschaften im Sinne einer Formelsammlung zusammengestellt. Einige davon werden später noch genauer erläutert und in der Versuchsdurchführung verwendet. Anmerkung: Aus der mathematischen Annahme, dass die Zeitfolgen und ihre DFT-Spektren jeweils periodisch in N sind, werden die zyklische Faltung definiert und nützliche Eigenschaften abgeleitet. Die zyklische Faltung eignet sich besonders zur aufwandsgünstigen Realisierung von FIR-Systemen. Sie wird hier jedoch nicht weiter benutzt.
3.1 Grundlagen
35
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
l
Modulation ( wN
DFT
x >n m@
Zyklische Verschiebung e j 2S / N )
DFT
nl wN x >n@
x > n @
Konjugiert komplexe Folge
x* > n @
l
DFT
l
DFT
l
N
DFT
x1 > n @ * x2 > n @
Zyklische Faltung
x1 > n @ x2 > n @
Multiplikation
N 1
2 ¦ x >n@
Parsevalsche Gleichung
n 0
Zuordnungsschema gerade (even), ungerade (odd), reell (real), imaginär (imaginary)
mk wN X >k @
l
Spiegelung
(3.14)
l
X >k l @
(3.15) (3.16)
X > k @
(3.17)
X * > k @
(3.18)
X1 >k @ X 2 >k @
(3.19)
DFT
N 1 X1 > k @ * X 2 > k @ N
(3.20)
DFT
1 N 1 2 ¦ X >k @ N k 0
(3.21)
l
l
l
x[n] = xer[n] + xor[n] + j( xei[n] + xoi[n] ) DFT
(3.22)
X[k] = Xer[k] + Xor[k] + j ( Xei[k] + Xoi[k] ) Für viele Anwendungen ist es wichtig, die DFT möglichst schnell zu berechnen. Hierzu werden auch spezielle Hardwarelösungen, sogenannte FFT-Prozessoren, eingesetzt. Im nächsten Versuch werden dazu spezielle Algorithmen vorgestellt. Auch ohne diese bzw. zusätzlich kann der Rechenaufwand reduziert werden, wenn sich die Symmetrieeigenschaften der DFT (3.22) vorteilhaft anwenden lassen [Schü08]. Im Falle reeller Folgen x[n] mit geraden Längen N = 2M ist die Zerlegung in eine komplexe Folge mit halber Länge M möglich
v >n@
x > 2 n @ j x > 2 n 1@ und n = 0:M1
(3.23)
Aus der DFT der komplexen Folge V[k] lässt sich die DFT der ursprünglichen reellen Folge X[k] relativ einfach bestimmen
36
3 Diskrete Fourier-Transformation X >k @ X >k @
1 1 k V > k @ V * > M k @ j wN V > k @ V * > M k @ für k 2 2 X
*
>N k@
0: M
für k
(3.24)
M 1: N 1
Anmerkungen: (i) In der oberen Gleichung wird auch k = M eingesetzt. Es zeigt sich die mathematisch unterlegte Periodizität der DFT-Spektren mit V[0] = V[M], allgemein V[k] = V[k+lM] mit k, l Ժ. (ii) Man beachte auch in der letzten Zeile die Symmetrie der DFT-Koeffizienten reeller Folgen (3.22): der Realteil ist gerade und der Imaginärteil ungerade.
3.2
Vorbereitende Aufgaben
A3.1
Von zentraler Bedeutung für die Eigenschaften der DFT ist die Orthogonalität der komplexen Exponentiellen. 2S 1 N 1 j N kn e N n 0
¦
1 N 1 k n wN N n 0
¦
1 für k ® ¯0 sonst
mN
und k, m ganze Zahlen
(3.25)
Verifizieren Sie die Gleichung mithilfe der geometrischen Reihe. A3.2
Geben Sie für die nachfolgenden Signale, mit n = 0:N1 und 0 d n0 < N1 bzw. 0 d :0 S , jeweils das DFT-Spektrum der Länge N an. Hinweis: Siehe Beispiel und Aufgabe A3.1.
x1[n] G >n n0 @
x2 [n ] cos :0 n
DFT
l
X 2 >k @
2S · 2S · § § ª j¨ :0 k ¸N j¨ :0 k ¸N N ¹ N ¹ « © © 1 1 e 1 e « 2S · 2S · § § 2 « j¨ :0 k ¸ j¨ :0 k ¸ N ¹ N ¹ «¬ 1 e © 1 e ©
º » » » »¼
x3[n] sin :0 n x4 [n ] e j:0 n
x5 [n] 1 A3.3
Geben Sie für den Sonderfall :0 X2[k], X3[k] und X4[k] an.
O 2S N mit O {1, 2, ..., N1} die Spektren
Hinweis: Siehe Orthogonalität der komplexen Exponentiellen.
§ 2S · x2 [n ] cos ¨ O n¸ N © ¹
3.3 Versuchsdurchführung
37
§ 2S · DFT x3[n ] sin ¨ O n¸ l © N ¹ j 2S x4 [n ] e
X 3[k ]
N G > k O @ G ª¬ k N O º¼ 2j
N O n
A3.4
Machen Sie sich mit dem Programmbeispiel 3-1 vertraut. Es stellt Ihnen Grafikbefehle für die Versuchsdurchführung bereit, die Sie in Ihre Programme übertragen können.
3.3
Versuchsdurchführung
M3.1
Erzeugen Sie das Signal x1[n] aus A3.2 für N = 32 und n0 = 4. Führen Sie die DFT durch und vergleichen Sie die grafischen Darstellungen mit Ihren vorbereiteten Ergebnissen. Hinweis: Verwenden Sie das M-File dft.m.
M3.2
Erzeugen Sie die Signale x2[n] bis x5[n] für N = 32 und :0 = 4S / N aus A3.3-2. Führen Sie für die Signale die DFT durch. Vergleichen Sie die grafischen Darstellungen mit Ihren vorbereiteten Ergebnissen.
M3.3
Wiederholen Sie das letzte Experiment für das Signal x2[n] mit der geänderten normierter Kreisfrequenz :0 = 4.5S / N. Wenn :0 z O 2S N mit O {1, 2, ..., N1} gewählt wird, verändern sich die DFT-Spektren in A3.3-3 in charakteristischer Weise. Erklären Sie die Veränderung im Spektrum. Warum verwendet man hier den Begriff Leckphänomen? Anmerkung: Im Deutschen ist auch der Ausdruck Leck-Effekt gebräuchlich.
M3.4
Machen Sie sich die Zerlegung eines Signals in Kosinus- und Sinusfunktionen durch die harmonische Analyse nochmals klar, indem Sie die Fourier-Reihe für den periodischen Rechteckimpulszug aus dem ersten Versuch verwenden: x (t )
1 2 f 1 ¦ sin > 2m 1@ 2S t 2 S m 0 2m 1
(3.26)
Aus der Fourier-Reihe folgen für die DFT-Koeffizienten die Berechnungen im Programmbeispiel 3-2. Machen Sie sich mit dem Programm vertraut und stellen Sie den Zusammenhang mit der Fourier-Reihe (3.26) her. Beachten Sie dabei das Zuordnungsschema in Tabelle 3-2. Überprüfen Sie das Programm dsplab3_2, indem Sie es für verschiedene 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.
38
3 Diskrete Fourier-Transformation
Programmbeispiel 3-2 Signalsynthese durch inverse DFT % Fourier synthesis by idft % dsplab3_2.m * mw * 7Oct2010 N = 16; % length of sequences (period) % dft coefficients X = zeros(1,N); % allocate memory and set default values zero % X[0]= N/2 X(0+1)= 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) = -1i*cf/k; end % complete dft spectrum of real-valued signals 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 FIG = figure('Name','dsplab3_2','NumberTitle','off',... 'Units','normal','Position',[.3 .5 .6 .4]); subplot(2,2,1), stem(0:N-1,real(x),'filled'), grid axis([0 N-1 -1.2 1.2]); xlabel('{\itn}'), ylabel('Re( {\itx}[{\itn}] )') subplot(2,2,2), stem(0:N-1,imag(x),'filled'), grid axis([0 N-1 -1.2 1.2]); xlabel('{\itn}'), ylabel('Im( {\itx}[{\itn}] )') subplot(2,2,3), stem(0:N-1,real(X),'filled'), grid MAX = max(abs(X)); axis([0 N-1 -MAX MAX]); xlabel('{\itk}'), ylabel('Re( {\itX}[{\itk}] )') subplot(2,2,4), stem(0:N-1,imag(X),'filled'), grid axis([0 N-1 -MAX MAX]); xlabel('{\itk}'), ylabel('Im( {\itX}[{\itk}]
M3.5
Wenden Sie die DFT auf ein Audiosignal an und überprüfen Sie dabei gleichzeitig den Rechenzeitbedarf der DFT. Verwenden Sie dazu das Programmbeispiel 3-3 mit der Audiodatei handel.wav. Das Programm entnimmt der Audiodatei eine Probe mit 1024 Abtastwerten, die mit der DFT weiterverarbeitet werden. Zusätzlich liefert das Programm einen Wert für die zur Berechnung der DFT benötigte Zeit. Anmerkungen: (i) Die DFT-Länge 1024 wird häufig zum Leistungsvergleich von Hard- und Softwaresystemen verwendet. (ii) Mit der Rechenkraft heutiger PC ist die Berechnung der DFT der Länge 1024 rasch erledigt. Einen interessanten Vergleichswert liefert ein Beispiel aus der 1. Auflage des Buches von 1991. Damals wurden für einen aktuellen PC mit Pentium III Prozessor, 800 MHz Systemtakt und 384 Mbyte Hauptspeicher circa 24 Sekunden gemessen. (iii) Mit der Interpretation des DFT-Betragsspektrums befassen sich die Versuche 5 und 6 näher.
Schätzen Sie, wie lange es dauert, ein entsprechendes Audiosignal der Dauer von einer Sekunde zu transformieren? Überprüfen Sie Ihre Schätzung indem Sie die DFT mit entsprechender Länge wiederholen. M3.6
Zum Abschluss wiederholen Sie die Versuchsaufgabe M3.5 mit der Berechnung der DFT für ein Audiosignal der Dauer einer Sekunde nach (3.24). Modifizieren Sie
3.3 Versuchsdurchführung
39
dazu das Programmbeispiel 3-3 entsprechend. Geben Sie die Rechenzeit in Prozent an. Wie groß ist die Zeitersparnis? Hinweis: Überprüfen Sie zuerst Ihr Programm, indem Sie das Ergebnis für eine reelle Folge kurzer Länge mit dem der Funktion dft vergleichen. Programmbeispiel 3-3 DFT eines Audiosignals mit Rechenzeitabschätzung % Dft spectra of audio signals % dsplab3_3.m * mw * 7Oct2010 % load audio data [y,fs] = wavread('handel'); N = 1024; % dft length s = y(2000:2000+N-1); % audio clip with N samples % soundsc(s,fs); % play audio clip % start stopwatch timer t1 = tic; S = dft(s); % DFT of audio clip toc(t1); % stop stopwatch timer and display elapsed time % 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('Time {\itt} in Seconds \rightarrow') ylabel('{\its}({\itt}) \rightarrow') L = length(S)/2; % show section of length L f = 0:L-1; f = f*fs/length(S); % frequency scale 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('Frequency {\itf} in Hertz \rightarrow') ylabel('| {\itS}({\itf}) | / {\itS}_0 \rightarrow') subplot(3,1,3), semilogy(f(1:L),abs(S(1:L)/max(abs(S)))), grid axis([0 f(L) 0 1]); xlabel('Frequency {\itf} in Hertz \rightarrow') ylabel('| {\itS}({\itf}) | / {\itS}_0 \rightarrow'),
Hinweise zu MATLAB-Funktionen und M-Files In Tabelle 3-3 werden für den Versuch einige nützliche Befehle und Funktionen aufgelistet, zu denen Sie sich in MATLAB Erläuterungen und Beispiele anzeigen lassen können. Tabelle 3-3 MATLAB-Befehle benutzte Programme und Dateien, s. a. vorhergehende Versuche Programmablaufsteuerung
pause
Spezielle Befehle
clock, tic, toc
Elementare mathematische Funktionen
abs, angle, imag, max, min, real, conj
Textausgabe am Bildschirm
fprintf
2-dim. Grafik
semilogx, semilogy
Þ Onlineressourcen
dsplab3_1.m, dsplab3_1b, dsplab3_2.m, dsplab3_3.m, dsplab3_3b.m, dsplab3_4.m, handel.wav, idft.m
40
4
Schnelle Fourier-Transformation
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 speziellen 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. Schlüsselbegriffe Echtzeitsignalverarbeitung, Komplexität, Radix-2-FFT, schnelle Fourier-Transformation, Signalflussgraph Lernziele Nach Bearbeiten dieses Versuches können Sie x
den Begriff Komplexität und seine Bedeutung in der digitalen Signalverarbeitung am Beispiel der DFT und FFT erklären
x
den Radix-2-FFT-Algorithmus entwickeln und erläutern
x
den Radix-2-FFT-Algorithmus programmieren
4.1
Komplexität
Anfang der 1960er 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 bis auf Gauß (1805) zurückreichen. Je nach Anwendung, wobei auch Überlegungen zur verwendeten Hardware (Prozessorarchitektur, Speicherausstattung, usw.) einfließen, werden verschiedene Algorithmen der FFT eingesetzt.
M. Werner, Digitale Signalverarbeitung mit MATLAB®, DOI 10.1007/978-3-8348-8621-7_4, © Vieweg+Teubner Verlag | Springer Fachmedien Wiesbaden GmbH 2012
4.2 Radix-2-FFT-Algorithmus
41
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. Den Anfang macht die Abschätzung des Rechenaufwandes der DFT als einfaches Maß für die Komplexität. Der Definitionsgleichung der DFT X >k @
N 1
¦ x >n @ wNnk
für k = 0:N1
(4.1)
n 0
mit den komplexen Faktoren nk wN
e
j
2S nk N
(4.2)
ist zu entnehmen, dass zur Berechnung der N DFT-Koeffizienten jeweils N Multiplikationen der komplexen Folgenelemente mit den komplexen Faktoren und N1 Additionen der Multiplikationsprodukte auszuführen sind. Mit 4 + 2 Gleitkommaoperationen (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 im Programm, entsteht ein zusätzlicher Rechenaufwand. Darüber hinaus kann die fortlaufende Berechnung wegen der Fehlerfortpflanzung zu nicht tolerierbaren numerischen Ungenauigkeiten führen. Anmerkung: Das quadratische Wachstum des Rechenaufwands mit der Transformationslänge kann auch in der Versuchsaufgabe M3.6 beobachtet werden.
4.2
Radix-2-FFT-Algorithmus
Der Rechenaufwand der direkten Form der DFT (4.3) steigt quadratisch mit der Transformationslänge. Die Radix-2-FFT setzt genau an dieser Stelle an, indem Sie die DFT sukzessive in je zwei DFT der halben Länge zerlegt, bis schließlich die Transformationslänge 2 erreicht ist. Dazu muss die DFT-Länge N eine Zweierpotenz sein, also N = 2P mit der natürlichen Zahl p. Zunächst kann die DFT (4.1) in zwei Teilsummen zerlegt werden für gerade und ungerade Indizes. X >k @
N 1
N 2
N 1
n 0
n 0,2,!
n 1,3,!
¦ x >n @ wNnk
¦ x >n @ wNnk ¦ x >n @ wNnk
(4.4)
42
4 Schnelle Fourier-Transformation
Die Substitutionen n
2m
für n gerade
n
2m 1 für n ungerade
und M
(4.5)
N 2
liefern dann X >k @
M 1
M 1
m 0
m 0
¦ x >2m@ wN2mk ¦ x >2m 1@ wN
2 m 1 k
(4.6)
Berücksichtigt man noch die Umformungen für die komplexen Faktoren 2 mk wN
mk wM
(4.7)
und
2m 1 k wN
k mk wN wM
(4.8)
so resultieren zwei Transformationen der halben Länge des Signals. X >k @
M 1
M 1
m 0
m 0
¦ x >2m@ wMmk wNk ¦ x >2m 1@ wMmk
(4.9)
Ist die ursprüngliche DFT-Länge N eine Zweierpotenz, kann die Zerlegung Schritt für Schritt weitergeführt werden, bis schließlich die DFT-Länge 2 erreicht ist. Das folgende Beispiel für die DFT-Länge N = 8 zeigt die Methode auf. Es wird der Signalflussgraph der Radix-2-FFT entwickeln. Die erste Zerlegung (4.9) führt mit den Substitutionen u[ m ]
x[2m ] und v[ m ]
x[2m 1] für m = 0:M1
(4.10)
und X >k @
M 1
¦ u >m@ wMmk
m 0
U >k @
k wN
M 1
¦ v >m @ wMmk
m 0
(4.11)
V >k @
auf den Signalflussgraphen 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
4.2 Radix-2-FFT-Algorithmus
43 m k M
wM
mk mM wM w M 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 chend (4.11) mit den Faktoren wN gewichtet.
x[0] x[2] x[4] x[6]
u[0]
U[0] U[1]
u[1]
DFT u[2]
4
u[3]
U[2] U[3]
X[0] w80 w81
X[1] X[2]
w82 X[3] w83
x[1] x[3] x[5] x[7]
Bild 4-1
V[0]
v[0]
V[1]
v[1]
DFT v[2] v[3]
4
V[2] V[3]
w84
X[4]
w85
X[5]
w86
X[6]
w87
X[7]
Signalflussgraph der Radix-2-FFT der Länge N = 8 mit Aufteilung im Zeitbereich nach der ersten Zerlegung mit den Zwischenergebnissen U[k] und V[k]
Die beiden weiteren Zerlegungen ergeben schließlich den dreistufigen Signalflussgraphen 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 auf etwa 8Nlog2(N) FLOPs. Das exponentielle Wachstum des Rechenaufwandes mit der DFTLänge ist nun durch ein, im Wesentlichen, lineares Wachstum ersetzt. Im Beispiel einer DFTLänge N = 1024 benötigt die Berechnung der DFT in der direkten Form (4.3) circa 8.4 Millionen FLOPs und nach Radix-2-Zerlegung nur 0.082 Millionen FLOPs, und damit um zwei Größenordnungen weniger. Eine genaue Analyse des Signalflussgraphen 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, sodass ihr Speicherplatz mit den Zwischenwerten überschrieben werden kann. Man spricht von einem In-placeVerfahren.
44
4 Schnelle Fourier-Transformation x[0]
w20
x[4]
w21
x[2] x[6]
X[0]
w40
w80 X[1]
w41
w20
w42
w21
w43
w8
1
w8
2
X[2] X[3] 3
x[1] x[5] x[3]
w85
X[5]
w42
w86
X[6]
w43
w87
X[7]
w40
w21
w41
w21 1. Stufe
Bild 4-2
X[4]
w20
w20
x[7]
w8 w84
2. Stufe
3. Stufe
Vorläufiger Signalflussgraph der Radix-2-FFT nach drei Zerlegungen mit Aufteilung im Zeitbereich (N = 8)
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 Signalflussgraphen abgelesen werden kann. Im Aussehen ausgebreiteten Schmetterlingsflügeln ähnlich, hat sich für sie die englische Bezeichnung Butterfly durchgesetzt. Knoten m
m+2s1
Knoten
Knoten
Knoten
m
m
m
m+2s1
m+2s1
wl s 2
wl s 2
s 1
wl s 2
1
m+2s1
2
Bild 4-3 Basisoperation (Butterfly) der Radix-2-FFT in der Stufe s mit zwei (links) bzw. einer (rechts) komplexen Multiplikation mit l {0, 1, ... , 2s1 1}
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 2
s 1
s 1
w2s 2
wl s 2
1 wl s 2
Damit erhält man den Butterfly in Bild 4-3 rechts.
für l = 0, 1, …, 2s11
(4.13)
4.2 Radix-2-FFT-Algorithmus
45
Die bisherigen Überlegungen zum Signalflussgraphen der Decimation-in-time (DIT) -Radix-2FFT werden in Bild 4-4 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, sodass die Zahl der Multiplikationen noch etwas reduziert werden kann.
X[0]
x[0] 1
x[4]
X[1]
x[2] 1
x[6]
j
1
X[2]
1
X[3]
x[1]
1 w81
1
x[5] x[3]
1
x[7] Stufe 1
j Stufe 2
1
w82
1
w83
1 1 1
X[4] X[5] X[6] X[7]
Stufe 3
Bild 4-4 Signalflussgraph der DIT-Radix-2-FFT für die DFT-Länge N = 8
Für die FFT werden in der Literatur verschiedene Modifikationen vorgeschlagen, die je nach Anwendung unterschiedlichen Zielvorstellungen gehorchen, wie geringer 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, sodass sie besonders schnell ausgeführt werden kann. Die FFT wird deshalb nicht nur zur Spektralanalyse verwendet, sondern findet beispielsweise auch zur Datenübertragung mit dem OFDM(Orthogonal Frequency Division Multiplex)-Verfahren ihre Anwendung in drahtlosen lokalen Rechnernetzen (WLAN, Wireless Local Area Network), dem terrestrischen digitalen Fernsehen (DVB-T, Digital Video Broadcasting Terrestrial) und der vierten Mobilfunkgeneration (LTE, Long Term Evolution). Darüber hinaus wird die FFT auch bei der MPEG(Moving Pictures Experts Group)-Audio-Codierung eingesetzt.
46
4.3
4 Schnelle Fourier-Transformation
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 Signalflussgraphen. Nachfolgend werden beide Schritte genauer betrachtet. In der Versuchsvorbereitung sollen Sie selbst ein MATLAB-Programm zur Radix-2-FFT erstellen.
4.3.1
Ordnen der Eingangsfolge
Für die DFT-Länge N = 8 ist die Ordnung der Eingangsfolge dem 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 . 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 entwickelte Zusammenhang lässt sich in einen effizienten Algorithmus fassen. Dazu werden die Indizes I der Eingangsfolge als Dualzahlen p 1
I
¦ bi 2i
mit bi ^0,1` und p
ld N
(4.15)
i 0
in Tabelle 4-1 dargestellt. Liest man jetzt den dualen Code in umgekehrter Reihenfolge resultiert z. B. aus 110 = 00012 nach dem Umsetzen 10002 = 810. Der Vergleich der Spalten für die Indizes vor und nach der Umsetzung, I bzw. J, mit der Indizierung in 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. Anmerkungen: (i) Da die FFT einer der wichtigsten Algorithmen der digitalen Signalverarbeitung ist, besitzen manche Signalprozessoren ein Adressenrechenwerk mit Bit-reversal-Funktion. (ii) Eine Realisierungen der DIT-Radix-2-FFT in FORTRAN findet man z. B. in [OpSc75]. 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.
Tabelle 4-1 Bit-reversal-Adressierung für die DIT-Radix-2-FFT I
Duale Darstellung
Bit-reversalAnordnung
J
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111
0000 1000 0100 1100 0010 1010 0110 1110 0001 1001 0101 1101 0011 1011 0111 1111
0 8 4 12 2 10 6 14 1 9 5 13 3 11 7 15
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.
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.
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Bild 4-5
0 2 4 6 8 10 12 14 1 3 5 7 9 11 13 15
0 4 8 12
0 8 4 12
2 6 10 14
2 10
1 5 9 13
1 9
3 7 11 15
6 14
5 13 3 11
Indizierung der Eingangsfolge der 1. Stufe
Zunächst wird festgelegt, im Programm die Eingangsfolge x(I) für I von 0 bis N1 abzuarbeiten und entsprechend Tabelle 4-1 sequenziell die Plätze zu tauschen. Es resultiert die Struktur einer Laufanweisung, einer forSchleife, mit der temporären Hilfsvariablen T in Bild 4-6.
47
Indizierung der Eingangsfolge der FFT
4.3 Programmierung der DIT-Radix-2-FFT
7 15
Ordnen der Eingangsfolge (Indizes) für die DIT-Radix-2-FFT der Länge N = 16 in drei Zwischenschritten von links nach rechts
J = 0; for I=0:N-1 % exchange values T = x(1+J); x(1+J) = x(1+I); x(1+I) = T; end
Dieser Zuwachs spiegelt sich in der Bitreversal-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 LeastBild 4-6 Programmfragment für die BitSignificant-Bit (LSB) b0 = 1, gesetzt. Durch reversal-Adressierung die Bit-reversal-Adressierung 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 aufwendiger, 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. 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,
48 so war der letzte Wert des Index I ungerade, siehe Tabelle 4-1. Ist das nicht der Fall, ist der aktuelle Wert des Index I ungerade und der neue Wert des Index J ergibt sich durch inkrementieren mit K = N / 2. Die while-Schleife wird abgewiesen. Im anderen Fall liegt ein Übergang von einem ungeraden Wert des Index I auf einen geraden vor. Damit sind Bitüberträge wie in Bild 4-7 möglich. Sie werden in der while-Schleife berücksichtigt. Ist J t N / 2 tritt in der dualen Darstellung im Übergang des alten Wertes von I auf den neuen ein Bitübertrag auf, d. h. für das LSB gilt nun b0 = 0. Weil das LSB von I zum MSB des Index J wird, muss Letzteres auch 0 sein. Das Nullsetzen des MSB geschieht im Index J durch Subtraktion von N / 2.
4 Schnelle Fourier-Transformation
110 210 310 410
b.-r.
00012 o 10002 b.-r.
00102 o 01002 b.-r.
00112 o 11002 b.-r.
01002 o 00102
810 410 1210 210
Bild 4-7 Beispiele für die Bit-reversalAdressierung % update index J K = N/2; % default increment while (Kn@
(5.13)
Der einfachste Fall der Fensterung geschieht mit dem Rechteckfenster der Länge N.
1 für 0 d n d N 1 w >n@ ® ¯0 sonst
(5.14)
Das Rechteckfenster und sein Spektrum N 1
¦ w >n@ e n 0
W e
j:
j:n
e
j:
N 2
sin N : 2 sin : 2
(5.15)
60
5 Kurzzeit-Spektralanalyse: Grundlagen
sind in Bild 5-6 für N = 32 skizziert. Die Breite des Fensters, die Länge der Fensterfolge N, bestimmt die Breite der Hauptzipfel des Betragsspektrums. Aus (5.15) erhält man die erste Nullstelle für positive normierte Kreisfrequenzen bei 2S / N, siehe Bild 5-6 unten. Je größer die Fensterlänge, umso schmaler der Hauptzipfel. w[n]
N
1
n
0 20
10
10
0
20
30
50
40
60
40 32
j:
|W(e )|
32
32
Hauptzipfel
20
1. Nebenzipfel
10 0
2S
0
S
2S
S
:
2S / N Bild 5-6 Rechteckfenster der Breite N (oben) und zugehöriges Betragsspektrum (unten)
Die Multiplikation der Folgen (5.13) ist im Frequenzbereich äquivalent zur Faltung der Spektren.
1 X e j: W e j: 2S
X w e j:
(5.16)
Da die Spektren von Folgen periodisch sind, ergibt sich hier die periodische Faltung. Es tragen nur die Terme in der Grundperiode bei. Das Ergebnis wird periodisch fortgesetzt. Für das Kosinussignal mit Rechteckfensterung in Bild 5-7 erhält man aus (5.10)
X w e j:
1 1 j ::0 @ j ::0 @ W e > W e > 2 2
(5.17)
und mit (5.15) das Betragsspektrum in Bild 5-7 unten. Die Faltung reproduziert wegen der Ausblendeigenschaft der Impulsfunktionen das Spektrum der Fensterfolge an den normierten Kreisfrequenzen :0 und :0. Die Fensterung, und somit die Kurzzeit-Spektralanalyse, führt zum Verschmieren des zu messenden Spektrums. Zwei benachbarte Spektrallinien können unter Umständen im Messergebnis nicht mehr unterschieden werden. Als ein Gütekriterium für die Spektralanalyse mit Fensterung führt man die spektrale Auflösung ein. Das heißt, die Fähigkeit im Spektrum feine Strukturen zu unterscheiden ähnlich der Fähigkeit des Menschen räumliche oder zeitliche Details in Bildern oder Musikstücken zu erkennen.
5.1 Grundlagen
xw[n]
61
1
n
0 1
10
0
50
40
60
|Xw(ej:)| 32
S
S / 2
:0
:0
0
:
S/2
S
Bild 5-7 Wirkung der Fensterung im Zeit- und im Frequenzbereich für zeitdiskrete Signale
Die spektrale Auflösung hängt vom Fensters ab. Als Maß wird oft die halbe Breite des Hauptzipfels des Betragsspektrums der Fensterfolge genommen, siehe Bild 5-6 unten. Zwei Spektralkomponenten beeinflussen sich in der Kurzeit-Spektralanalyse nicht gegenseitig, wenn sie genau eine halbe Hauptzipfelbreite auseinanderliegen. Bild 5-8 veranschaulicht nochmals die Situation. Zwei Spektralkomponenten bei :k und :k+1 beeinflussen sich gegenseitig nicht bzw. kaum, wenn der Abstand der beiden normierten Kreisfrequenzen die halbe Hauptzipfelbreite nicht unterschreitet. Je kleiner die Hauptzipfelbreite, umso höher (feiner) das Auflösungsvermögen und desto feinere Strukturen können im originalen Signalspektrum anhand des DFT-Spektrums erkannt werden. Im Falle des Rechteckfensters der Länge N ist die spektrale Auflösung minimal. ': rec
2S N
(5.18)
Durch Verlängerung des Fensters wird die spektrale Auflösung geringer und damit feiner. Im Zahlenwertbeispiel resultiert ':rec = S / 16. Anmerkungen: (i) Die Faltung im Frequenzbereich (5.16) bedeutet für jede normierte Kreisfrequenz : [0, 2S [ eine Integration des Produkts aus Signalspektrum und Fensterspektrum. Wegen der Form des Fensterspektrums trägt im Wesentlichen dazu der Bereich des Hauptzipfels bei. (ii) Alternativ wird auch die 3dB-Grenzkreisfrequenz ':3dB des Fensterspektrums zur Beurteilung der spektralen Auflösung herangezogen. (iii) Bei der Anwendung im nächsten Versuch zur der Frequenzanalyse spricht man auch von der Frequenzauflösung und gibt einen Zahlenwert mit der Einheit Hertz an.
Spektrale Auflösung ':
Hauptzipfel der Fensterung
Spektrallinien
:k
:k+1
:
Bild 5-8 Spektrale Auflösung der DFT
62
5.1.4
5 Kurzzeit-Spektralanalyse: Grundlagen
Diskrete Fourier-Transformation
Im letzten Schritt der Überlegungen wird der Übergang vom kontinuierlichen Fourierspektrum für Folgen auf das DFT-Spektrum vollzogen. Der Vergleich der Fourier-Transformation und der DFT in Tabelle 3-1 zeigt, dass für Folgen endlicher Länge N das DFT-Spektrum einer Abtastung des Fourierspektrums an den Stellen
:k
k
2S N
k ': DFT für k = 0 : N 1
(5.19)
entspricht. X w >k @
X w e j2S k N
(5.20)
Man beachte, dass die (Frequenz-)Schrittweite des DFT-Spektrums, die spektrale Auflösung der DFT ':DFT gleich der spektralen Auflösung des Rechteckfensters ':rec ist. Die Anwendung der DFT erscheint manchmal etwas unanschaulich. Darum wird im folgenden Beispiel aus der Elektrotechnik an die Grundlagen der harmonischen Analyse erinnert: Die vorgestellten Fourierkoeffizienten in (5.21) entsprechen den Amplituden der Ersatzspannungsquellen und ihre Betragsquadrate sind proportional zu (Wirk-)Leistungen. Die Fourierkoeffizienten haben somit eine physikalische Bedeutung, die auch in der realen Schaltung überprüft werden kann. Beispiel Klirrfaktormessung mit der DFT
Der enge Zusammenhang zwischen der Fourier-Transformation und der DFT kann im Fall periodischer Signale dazu benutzt werden, mit der FFT die Koeffizienten der Fourier-Reihe effizient zu bestimmen. Für die Praxis ergeben sich daraus wichtige Anwendungen. So lassen sich mit kontinuierlicher Zustandserfassungen von Maschinen, z. B. von Antriebswellen und Lagern, der Abnutzungsvorrat ausschöpfen und Maschinenschäden in der Entstehungsphase erkennen. Ein anderes Anwendungsgebiet ergibt sich in Energieversorgungsunternehmen. Dort ist der Leistungsanteil der Oberwellen im Spannungsversorgungsnetz eine Kenngröße für die Versorgungsqualität. Gewisse Grenzwerte müssen überwacht und eventuell Gegenmaßnahmen ergriffen werden. Schließlich spielt, wie der Name schon sagt, der Klirrfaktor auch in der 1 Nachrichtentechnik, insbesondere der Audiou(t) technik, eine große Rolle. Die Klirrfaktormessung stellt das Beispiel in Bild 5-9 vor. Als Signal wird die mit einem Einweggleichrichter gleichgerichtete sinusförmige Spannung in der normierten Form verwendet [BSMM99]. Die Frequenz f0 sei 50 Hz, wie im europäischen Stromversorgungsnetz.
0
10
20
30
t in ms
Bild 5-9 Sinussignal nach Einweggleichrichtung
5.1 Grundlagen
u t
63
1
1 sin 2S f 0 t S 2 2 § 1 1 1 · ¨ cos 2S f 0 t cos 4S f 0 t cos 6S f 0 t " ¸ 3 5 5 7 S © 1 3 ¹
(5.21)
Mit dem Klirrfaktor wird die Signalverzerrung für Eintonsignale beim Durchgang durch ein nichtlineares System abgeschätzt. Der Klirrfaktor ist definiert als das Verhältnis des Effektivwerts der Harmonischen höherer Ordnung (Oberschwingungsgehalt) zum Effektivwert des Signals ohne den Gleichanteil ((Gesamt-)Wechselanteil). Mit den Amplituden der k-ten Harmonischen uˆ k gilt für den Klirrfaktor uˆ22 uˆ32 uˆ42 "
d
uˆ12 uˆ22 uˆ32 uˆ42 "
(5.22)
Anmerkungen: (i) Der Formelbuchstabe d steht für die englische Bezeichnung total harmonic distortion (THD). (ii) Der Klirrfaktor ist ein relatives Maß. Skalierungsfaktoren kürzen sich. (iii) Manchmal sind Klirrfaktoren spezieller Ordnungen von Interesse. Dann wird nur der Effektivwert der k-ten Harmonischen im Zähler in (5.22) verwendet.
Der Klirrfaktor wird im Beispiel mit dem MATLAB-Programm im Programmbeispiel 5-1 bestimmt. Statt eines realen abgetasteten Signals werden zunächst die Abtastwerte einer Periode generiert. Es schließt sich die DFT und die Auswertung der DFT-Koeffizienten an. Das Programm erzeugt die Grafik in Bild 5-10 links. Um den Zusammenhang mit dem zugrunde gelegten analogen Signal hervorzuheben, wird die Abszissenskalierung in Millisekunden (ms) bzw. Hertz (Hz) vorgenommen. Die in Bild 5-10 rechts angezeigten Werte werden vom Programm berechnet. Der Näherungswert für den Klirrfaktor beträgt dDFT-MATLAB | 0.4101. Im Vergleich mit dem anhand der Fourierkoeffizienten in (5.21) numerisch berechneten Wert 0.3991 zeigt sich ein relativer Fehler von circa 2.8 %, siehe auch Aufgabe A5.2. Anmerkung: Der überwiegende Teil des Programms besteht aus Befehlen zu den grafischen Darstellungen und den Textausgaben. 1
x(t) o
0.8 0.6 0.4 0.2 0
0
5
10 t in ms o
15
20
norm. |X(f) | o
1 0.8 0.6 0.4 0.2 0
0
50
100
150
200 250 f in Hzo
300
350
400
450
dsplab5_1 : distortion f0 = 50 Hz fs = 1000 Hz max|X(f)| = 0.315688 f in Hz |X(f)|/max|X(f)| 0 1.0000 50 0.7919 100 0.3446 150 0.0000 200 0.0762 250 0.0000 300 0.0388 350 0.0000 400 0.0278 450 0.0000 distortion d = 0.4101
Bild 5-10 Gleichgerichtetes Sinussignal (eine Periode) und normiertes DFT-Betragsspektrum (links) und Textanzeige (rechts) zu Programmbeispiel 5-1 Klirrfaktor-Messung (dsplab5_1)
64
5 Kurzzeit-Spektralanalyse: Grundlagen
Programmbeispiel 5-1 Klirrfaktormessung mit der DFT % Short-time spectral analysis with the fft % dsplab5_1.m * mw * 21Oct2010 f0 = 50; T0 = 1/f0; % fundamental frequency in Hz and signal period fs = 1e3; Ts = 1/fs; % sampling frequency and sampling period Ns = floor(T0/Ts); % number of samples per period % normalized discrete time n = 0:Ns-1; % Signal x = zeros(1,Ns); x(1:floor(Ns/2)) = sin(2*pi*f0*Ts*(0:floor(Ns/2)-1)); % sine half wave X = fft(x); % dft spectrum % normalize dft spectrum X = X/Ns; %% Graphics % Time signal, sampled signal t = 1e3*Ts*n; % time scale in ms FIG1 = figure('Name','dsplab5_1 : distortion','NumberTitle','off'); subplot(2,1,1), plot(t,x,t,x,'.','MarkerFaceColor','b',... 'MarkerEdgeColor','b','MarkerSize',20), grid axis([0 1e3*Ts*Ns 0 1]); xlabel('{\itt} in ms \rightarrow') ylabel('{\itx}({\itt}) \rightarrow') % DFT spectrum M = Ns/2; % omit spectral line at normalized frequency pi if rem(Ns,2)==0 M = Ns/2 - 1; end f = (0:M)*fs/Ns; % frequency scale MAX = max(abs(X)); subplot(2,1,2), stem(f,abs(X(1:M+1))/MAX,'filled'), grid axis([0 max(f) 0 1]); xlabel('{\itf} in Hz \rightarrow') ylabel('norm. | {\itX}({\itf}) | \rightarrow') %% Text on screen fprintf('\n') % text output on screen fprintf('dsplab5_1 : distortion\n') fprintf('f0 = %5i Hz\n',f0) fprintf('fs = %5i Hz\n',fs) fprintf('max|X(f)| = %g\n',MAX) |X(f)|/max|X(f)|: \n') fprintf('f in Hz for k = 1:M+1 fprintf(' %5i %6.4f \n',f(k),abs(X(k)/MAX)) end %% Distortion D1 = abs(X(2)).^2; % rms-value for fundamental frequency signal D = sum(abs(X(2:1:M+1)).^2); % rms-value for higher harmonics d = sqrt((D-D1)/D); % distortion (THD) fprintf('distortion d = %6.4f \n',d)
5.1.5
Auffüllen mit Nullen
Durch Anhängen von Nullen kann ein Signal endlicher Länge stets, ohne Werte wegzulassen, auf eine Länge gebracht werden, die die Anwendung der schnellen Radix-2-FFT erlaubt. Mit dem Auffüllen mit Nullen auf die gewünschte DFT-Länge, englisch Zero-padding genannt, kann unter Umständen die Darstellung des Spektrums günstig beeinflusst werden. Man beachte
5.1 Grundlagen
65
jedoch: Hinzufügen von Nullen liefert keine zusätzliche Information über das Signal und kann damit die Messunsicherheit aufgrund der Fensterung nicht aufheben. Das Auffüllen mit Nullen erlaubt jedoch, das Spektrum des Signalblocks in kleineren Frequenzschritten darzustellen. Als Beispiel dient der Rechteckimpuls (Rechteckfenster) der Länge Nr = 32 (5.14) und sein DFT-Spektrum (5.15), siehe auch Bild 5-6. Die DFT der Länge N = Nr liefert das DFT-Spektrum eines konstanten Zeitsignals, siehe x5[n] in A3.2. Das Ergebnis ist in Bild 5-11 oben zu sehen, ein DFT-Spektrum mit genau einem Koeffizienten ungleich null, dem bei k = 0.
| X32[k] | o
Das DFT-Spektrum einer Folge kann allgemein auch als das Ergebnis der Abtastung des Fourierspektrums der Folge an den Stützstellen :k = k 2S / N aufgefasst 30 werden. Im Beispiel also einer Abtas20 tung des zugrundeliegenden Spektrums des Rechteckfensters (5.15). Das Spekt10 rum wird folglich bis auf die Stelle k = 0 0 in seinen äquidistanten Nullstellen 0 5 10 15 20 25 30 ko abgetastet.
Nach Verdopplung der Länge der Folge durch Auffüllen mit Nullen, besitzt die DFT eine Stützstelle genau bei der betreffenden Frequenzkomponente. Letztere hebt sich nun in Bild 5-12 unten deutlich aus dem DFT-Spektrum hervor.
| X128[k] | o
20 10 0
0
5
10
15 ko
20
25
30
Bild 5-11 DFT-Spektrum oben ohne und unten mit Auffüllen von Nullen im Zeitbereich (dsplab5_2)
30 | X64[k] | o
Ein weiteres wichtiges Beispiel ist der Sonderfall, einer Frequenzkomponente, deren normierte Frequenz genau in der Mitte zwischen den Stützstellen des DFT-Frequenzrasters liegt. Dann erhält man zwei etwa gleichstarke (betragsgleiche) DFT-Koeffizienten an den benachbarten Stützstellen, siehe Bild 5-12 oben für ein entsprechendes Kosinussignal.
30
20 10 0
0
5
10
15 ko
0
10
20
30 ko
20
25
30
30 | X128[k] | o
Verlängert man den Signalausschnitt des Rechteckimpulses durch Anhängen von Nullen auf die Blocklänge N = 128 und berechnet das DFT-Spektrum, so resultieren die in Bild 5-11 unten gezeigten Beträge der ersten 32 DFT-Koeffizienten. Das DFT-Spektrum X[k] entspricht jetzt einer um den Faktor 4 dichteren Abtastung des zugrundeliegenden kontinuierlichen Spektrums des Rechteckimpulses (5.15). Demzufolge liegen die äquidistanten Nullstellen nun bei k = 4, 8, 12, usw.
20 10 0
40
50
60
Bild 5-12 DFT-Spektrum vor (oben) und nach Auffüllen mit Nullen (unten) der Signalfolge x[n] = cos(:0n) mit :0 = 12.5 2 S / N und N = 64 bzw. 128 (dsplab5_2)
66
5 Kurzzeit-Spektralanalyse: Grundlagen
Anmerkung: Die Kombination aus Auffüllen mit Nullen und FFT findet in der digitalen Signalverarbeitung an verschiedenen Stellen Anwendung, z. B. bei der schnellen Faltung, der Interpolation und zur numerischen Fourier-Transformation.
5.1.6
Leckphänomen
Mit dem Leckphänomen, englisch Leakage phenomenon, wird das Auftreten von Spektralkomponenten im DFT-Spektrum umschrieben, die von der Anwendung herkommend nicht vermutet werden. Bild 5-12 zeigt ein Beispiel. Die zeitlich unbegrenzte Kosinusfolge mit der normierten Kreisfrequenz :0 besitzt ein Spektrum mit nur zwei diskreten Anteilen bei r :0. Im Kurzzeitspektrum, dem DFT-Spektrum, erscheinen jedoch eine Vielzahl von Spektralkomponenten ungleich null. Dies, obwohl oben die normierte Kreisfrequenz :0 genau zwischen das DFT-(Frequenz-)Raster fällt, also eigentlich keine Spektralkomponenten sichtbar sein sollten. Das ist jedoch ein falscher Schluss, bestimmend sind die in der Definition der DFT angelegten mathematischen Eigenschaften. Wegen der Energieerhaltung beim Wechsel zwischen Zeit- und Frequenzbereich kann das DFT-Spektrum hier nicht null sein, siehe parsevalsche Gleichung. Stattdessen verteilt sich die Energie des Signalblockes entsprechend dem verwendeten Fenster auf die DFT-Koeffizienten. In Bild 5-12 wird ein Rechteckfenster eingesetzt, weshalb im Bild – mathematisch korrekt – der Betrag der si-Funktion als Hüllkurve auftritt. Das Leckphänomen weist allgemein auf die betrags- und phasengewichtete Überlagerung der Spektralkomponenten hin, die die Auswertung des DFT-Spektrums erschwert.
5.1.7
Fensterfolgen
Die Qualität der Kurzzeit-Spektralanalyse wird durch die Fensterung des Zeitsignals wesentlich beeinflusst. Nicht nur die Länge des Fensters sondern auch seine Form spielt eine wichtige Rolle. Durch geeignete Wahl lassen sich die spektrale Auflösung und die Vertrauenswürdigkeit des Messergebnisses in gewissen Grenzen einstellen. Am Beispiel der Bartlett- und Blackman-Fensterfolgen werden grundsätzliche Zusammenhänge aufgezeigt. Die beiden Fensterfolgen werden im Programmbeispiel 5-2 durch die MATLAB-Funktionen bartlett und blackman erzeugt. Die Fensterfolgen und ihre Betragsspektren sind in Bild 5-13 dargestellt. Das Bartlett-Fenster ist eine Dreieckfolge die mit 0 beginnt und endet. Das Blackman-Fenster ähnelt einer abrollenden Kosinusfolge. Aus den Betragsspektren werden jeweils zwei Kennzahlen zur Beurteilung der Fenster abgelesen: die Breite des Hauptzipfels ':m und die Dämpfung des größten Nebenzipfels as,dB bezogen auf den Maximalwert. Die Breite des Hauptzipfels ist für die spektrale Auflösung entscheidend: je breiter der Hauptzipfel, umso geringer die spektrale Auflösung. Die Dämpfung des größten Nebenzipfels beeinflusst die Stärke der Überlagerung von Spektrallinien in der näheren Umgebung. Die Dämpfung der Nebenzipfel im gesamten Spektrum gibt einen Hinweis zur Störunterdrückung, wenn beispielsweise dem Wunschsignal ein breitbandiges Rauschsignal überlagert ist. Mit der Figure-toolbar-Option Data Cursor lassen sich im Bild Datenpunkte markieren, um deren Koordinaten anzuzeigen. Alternativ kann auch mit der Vergrößerung durch die Zoom-Funktion (Lupe) gearbeitet werden. Es ergeben sich aus Bild 5-13 die Zahlenwerte in Tabelle 5-1. Beim Vergleich der beiden Kennwerte erkennt man den allgemeinen gegenläufigen Zusammenhang: Ist die Hauptzipfelbreite relativ gering, so ist die Nebenzipfeldämpfung
5.1 Grundlagen
67
relativ groß und umgekehrt. Die Frequenzauflösung und die Unterdrückung von Störkomponenten stehen im umgekehrten Verhältnis, sodass in den Anwendungen Kompromisse eingegangen werden müssen. Bartlett
Blackman 1
0.8
0.8 w[n] o
1
w[n] o
0.6 0.4
0.6 0.4
0.2 0
0.2 0
20
40
0
60
0
20
no X: 0.0918 Y: 0.04717
10
-2
| W(e : ) ||o
10
0
60
10
0
X: 0.1133 Y: 0.001239
-2
j
j
| W(e : ) | o
10
40 no
10 10
-4
X: 0.06445 Y: 2.968e-005
-6
0
0.5 : / S| o
1
10 10
-4
-6
0
X: 0.0957 Y: 1.241e-005
0.5 : / S| o
1
Bild 5-13 Bartlett- und Blackman-Fensterfolgen der Länge 64 und ihre Betragsspektren (dsplab5_3)
Tabelle 5-1 Kennwerte von Fensterfolgen im Frequenzbereich
Hauptzipfelbreite1 ':m 2
Nebenzipfeldämpfung as,dB 3
3dB-Hauptzipfelbreite ':3dB Leckfaktor
3
Bartlett
Blackman
0.06445 2 S | 8S / N
0.0957 2 S | 12S / N
20lg(0.04714) dB | 26.5 dB
20lg(0.00124) dB | 58.3 dB
0.03906 S
0.05078 S
0.28 %
|0%
1
Siehe erste Nullstelle im Spektrum, die Breite wird zweiseitig angegeben, siehe Bild 5-13. Die spektrale Auflösung ist dann halb so groß.
2
Man beachte die Definition der Dämpfung mit negativem Vorzeichen in Tabelle 5-1.
3
Das in der Versuchsdurchführung verwendende MATLAB-Werkzeug Window Design and Analysis Tool aus der Signal Processing Toolbox liefert die 3dB-Hauptzipfelbreite ':3dB (zweiseitig) und den Leckfaktor (Leakage Factor). Letzterer gibt das prozentuale Verhältnis der Leistung in den Nebenzipfeln wider.
68
5 Kurzzeit-Spektralanalyse: Grundlagen
Programmbeispiel 5-2 Bartlett- und Blackman-Fenster % Bartlett and Blackman window % dsplab5_3.m * mw * 21Oct2010 N = 64; % window length M = 2^10; % fft length f = 0:M-1; f = f/(M/2); % normalized radian frequency % Bartlett window and spectrum w1 = bartlett(N); W1 = fft(w1,M); W1 = W1/abs(W1(1)); % Blackman window and spectrum w2 = blackman(N); W2 = fft(w2,M); W2 = W2/abs(W2(1)); %% Graphics FIG1 = figure('Name','Bartlett and Blackman window',... 'NumberTitle','off'); % Bartlett window and spectrum subplot(2,2,1), stem(0:N-1,w1), grid axis([0 N-1 0 1]); title('Bartlett') xlabel('{\itn} \rightarrow'), ylabel('{\itw}[{\itn}]\rightarrow ') subplot(2,2,3),semilogy(f,abs(W1),'LineWidth',2), grid axis([0 1 1e-6 1]); xlabel('\Omega / {\it\pi}\rightarrow ') ylabel('| {\itW}({\ite}^{{\itj}\Omega}) |\rightarrow ') % Blackman window and spectrum subplot(2,2,2), stem(0:N-1,w2), grid axis([0 N-1 0 1]) title('Blackman') xlabel('{\itn}\rightarrow '), ylabel('{\itw}[{\itn}]\rightarrow ') subplot(2,2,4),semilogy(f,abs(W2),'LineWidth',2), grid axis([0 1 1e-6 1]); xlabel('\Omega / {\it\pi}\rightarrow ') ylabel('| {\itW}({\ite}^{{\itj}\Omega}) |\rightarrow ')
5.2
Vorbereitende Aufgaben
A5.1
Betrachtet wird ein Kosinussignal x(t) = cos(Z0t) mit der Frequenz f0 = 50 Hz. a) Geben Sie dazu den allgemeinen Zusammenhang zwischen der normierten Kreisfrequenz :0, der Signalfrequenz f0, der Abtastfrequenz fS, dem Index des DFT-Koeffizienten k0 und der Transformationslänge N so an, dass nur ein DFT-Koeffizientenpaar im Messergebnis ungleich null beobachtet wird. b) Wählen Sie die Abtastfrequenz fs so, dass für eine DFT mit der Fensterlänge N = 64 die zu f0 gehörenden Spektrallinien nur für k = 4 und 60 im Messergebnis auftreten.
A5.2
Geben Sie die Fourier-Reihe für die Dreieckschwingung in Bild 5-14 mit der Periode T0 = 100 ms an. Hinweis: Siehe eine Tabelle mit Fourier-Reihen.
5.3 Versuchsdurchführung
69
x(t) A
A
3T0/4 T0/4 T0/2
t T0
2T0
Bild 5-14 Dreieckschwingung
5.3
Versuchsdurchführung
M5.1
Überprüfen Sie zuerst Ihr Ergebnis aus der Vorbereitung in A5.1 (b) durch eine MATLAB-Simulation mit DFT MATLAB. Setzen Sie nun die Signalfrequenz auf 60 Hz und wiederholen Sie die Messung mit ansonst unveränderten Parametern. Diskutieren Sie beide Ergebnisse.
M5.2
Berechnen Sie den Klirrfaktor der Dreieckschwingung in Bild 5-14 mit MATLAB a) anhand der Fourierkoeffizienten aus der Vorbereitung A5.2 b) und mittels Simulation und DFT.
M5.3
MATLAB stellt im Erweiterungspaket Signal Processing Toolbox mit dem Werkzeug Window Design & Analysis Tool 17 Fenstertypen zur Verfügung. Einige davon sind auf den ersten Blick schwer zu unterscheiden. Kleine Unterschiede in den Fensterfolgen können jedoch deutlich sichtbare Auswirkungen in den Spektren in den Bereichen kleiner Betragswerte („Sperrbereiche“) haben. Für Anwendungen sind die parametrisierbaren Fenster besonders interessant, da unter Umständen über die Parameter gewünschte Eigenschaften eingestellt werden können. Beispielsweise existiert zum Chebychev-Fenster für hinreichende Fensterlänge eine einfache Faustformel, welche die Hauptzipfelbreite ':m, die minimale Sperrdämpfung im logarithmischen Maß as,dB und die Fensterlänge N kombiniert, vgl. [KaKr09] ': m |
S §
3 as,dB · ¨1 ¸ N © 20 dB ¹
(5.23)
Bei gewünschter Auflösung und Dämpfung lässt sich die notwendige Fensterlänge abschätzen. Manche Fenstertypen wurden für sehr spezielle Aufgaben entworfen, weshalb sie hier nicht weiter diskutiert werden. Statt dessen lernen Sie in der Versuchsdurchführung einige häufiger benutzte Fenstertypen kennen. Stellen Sie mit dem MATLAB-Werkzeug Window Design & Analysis Tool aus der Signal Processing Toolbox, Programmaufruf mit wintool, die Fensterfolgen in Tabelle 5-2 und ihre Betragsspektren für die Länge 64 grafisch dar, siehe auch Bild 5-15.
70
5 Kurzzeit-Spektralanalyse: Grundlagen Verifizieren bzw. ergänzen Sie die fehlenden Kennwerte in der Tabelle. Bewerten Sie die Fenster, siehe Kommentar. Hinweise: Geben Sie die Breite des Hauptzipfels näherungsweise als ganzzahliges Vielfaches von S / N an. Die Dämpfung der Nebenzipfel bezieht sich auf das jeweilige Maximum des Betragsfrequenzganges und wird im logarithmischen Maß (dB) angegeben. Beachten Sie, am Bildschirm werden von MATLAB negative Werte für die „Dämpfung“ angezeigt.
Tabelle 5-2 Kennwerte von Fensterfolgen mit Länge N (= 64) (MATLAB-Werkzeug wintool) Ungefähre Breite des Hauptzipfels (bzgl. der norm. Kreisfrequenz) ':3dB / S
':m
Dämpfung des größten Nebenzipfels as,dB
Bartlett
0.0391
8S / N
26.5 dB
Blackman
0.0508
12S / N
58.1 dB
Fensterfolge (Parameter)
Chebyshev (D = 60 dB)
10S / N
Gaussian (E = 2.5)
13S / N
Hamming
8S / N
Kaiser (E = 5.4)
8S / N
Rectangular
M5.4
0.0273
4S / N
13.3 dB
Kommentar
Dreieckförmiges Fenster mit effektiver Länge N2, vgl. Fenster triang Relativ breiter Hauptzipfel und schnell abfallendes Betragsspektrum Parametrisierbares Fenster1; Austausch zwischen spektraler Auflösungen und einstellbarer Nebenzipfeldämpfung (D); Nebenzipfeldämpfung im gesamten Bereich konstant – gut zur Unterdrückung breitbandiger Störung Parametrisierbares Fenster; die gaußsche Glockenkurve bleibt bei Fourier-Transformation erhalten, weshalb der Hauptzipfel im Wesentlichen die Form einer gaußschen Glockenkurve besitzt; guter Kompromiss zwischen Zeit- und Frequenzauflösung (siehe Zeitdauer-Bandbreiteprodukt, Theorie) Vergleichbar mit Chebyshev-Fenster mit der Dämpfung 42 dB; wird als Kompromiss in der Kurzzeit-Spektralanalyse häufig eingesetzt Parametrisierbares Fenster mit Austausch zwischen spektraler Auflösungen und Nebenzipfeldämpfung; früher beim Entwurf von Tiefpassfiltern eingesetzt Rechteckförmiges Fenster mit Länge N; bestmögliche spektrale Auflösung und geringste Nebenzipfeldämpfung
MATLAB bietet ein „einfaches“ Vorführprogramm für die DFT, das Sie durch Eingabe von sigdemo1 aufrufen können. Dort sind einige typische Signalformen und Fensterarten einzustellen und die resultierenden DFT-Betragsspektren zu vergleichen. Als Besonderheit ermöglicht Ihnen das Programm, die Signalperiode von Hand mit dem Mauszeiger im Bild des Signals zu ändern.
5.3 Versuchsdurchführung
71
Bild 5-15 Benutzerschnittstelle des MATLAB Windows Design & Analysis Tool
Hinweise zu MATLAB-Funktionen und M-Files Im Folgenden werden für die Versuchsdurchführung nützliche Befehle und Funktionen aufgelistet, zu denen Sie sich mithilfe der Help-Funktion Erläuterungen und Beispiele am Bildschirm anzeigen lassen können, siehe auch vorherige Versuche. Tabelle 5-3 MATLAB-Befehle benutzte Programme und Dateien MATLAB-Programme (Signal Processing Toolbox)
wintool (Window Design and Analysis Tool), wvtool (Window Visualization Tool)
Programmablaufsteuerung
eval
Elementare math. Funktionen
mod, rem, sqrt, sum
2-dim. Grafik
semilogx, semilogy, loglog
Bildschirmausgabe
disp, fprintf
Þ Onlineressourcen
dsplab5_1.m, dsplab5_1b.m, dsplab5_2.m, dsplab5_2b.m, dsplab5_3.m, dsplab5_3b.m, dsplab5_4.m, winplot.m, distort1.m, distort2.m
72
6
Kurzzeit-Spektralanalyse: Beispiele
Die Kurzzeit-Spektralanalyse mit der DFT eröffnet die Möglichkeit, Signale jeweils über kurze Zeitabschnitte im Frequenzbereich zu untersuchen und charakteristische Veränderungen anhand der Kurzzeitspektren sichtbar zu machen. In diesem Versuch wird die Kurzzeit-Spektralanalyse durch die DFT an zwei Beispielen erprobt: einem DTMF-Signal aus der Telefonie und einem Audiosignal. Bei den DTMF-Signalen geht es darum, ein durch Tastendruck ausgewähltes Signal kurzer Dauer, das aus zwei bestimmten Tönen besteht, zu erkennen. Beim Audiosignal wird das Signal in kurze Blöcke zerlegt und blockweise der FFT unterworfen. Dadurch lassen sich Änderungen der charakteristischen Eigenschaften im Frequenzbereich im Spektrogramm anschaulich darstellen. Schlüsselbegriffe Kurzzeit-Spektralanalyse, Mehrfrequenzwahlverfahren, Spektrogramm Lernziele Nach Bearbeiten dieses Versuches können Sie x
zu einer FFT der Länge N die spektrale Auflösung angeben bzw. umgekehrt eine für die Anwendung geeignete FFT-Länge bestimmen
x
eine für die Anwendung geeignete Fensterfolge auswählen und die Wahl begründen
x
beispielhaft die Anwendung der Kurzzeit-Spektralanalyse auf Audiosignale erläutern und ein Spektrogramm interpretieren
x
die MATLAB-Funktion spectrogram einsetzen
Mehrtonsignal
1
2
3
A
697 Hz
4
5
6
B
770 Hz
7
8
9
C
852 Hz
.
0
#
D
941 Hz
Untere Frequenzgruppe
Als Anwendungsbeispiel wird das Mehrfrequenzwahlverfahren der analogen Telefonie mit den DTMF (Dual-Tone Multi-Frequency)-Signalen betrachtet. Das DTMF-Verfahren ermöglicht die digitale Inbandsignalisierung über analoge Sprachtelefonkanäle und hat zur Ablösung der Wählscheibe durch den Tastenwahlblock beigetragen. In
1633 Hz
Mehrfrequenzwahlverfahren
1477 Hz
6.1.1
Obere Frequenzgruppe 1336 Hz
Ein wichtiges Einsatzgebiet der digitalen Signalverarbeitung ist die Spektralanalyse analoger Signale. Anders als bei den bisher vorgegebenen Folgen liegt jetzt ein analoges Signal zugrunde. Es wird eine ideale Abtastung vorausgesetzt. Die speziellen Fragen der realen A/D-Umsetzung werden in Abschnitt 16 behandelt.
1209 Hz
6.1
Bild 6-1 Tastenwahlblock des Telefons mit den DTMF-Tonpaaren
M. Werner, Digitale Signalverarbeitung mit MATLAB®, DOI 10.1007/978-3-8348-8621-7_6, © Vieweg+Teubner Verlag | Springer Fachmedien Wiesbaden GmbH 2012
6.1 Mehrtonsignal
73
Deutschland wurde es auch als Mehrfrequenzwahlverfahren (MFV) oder auch Tonwahlverfahren bekannt. In Bild 6-1 wird die Zuordnung zwischen den Telefontasten und den Signalfrequenzen gezeigt. Nach Betätigen einer Taste wird das Wählzeichen als Tonpaar codiert und als DTMF-Signal übertragen. Das DTMF-Verfahren ist durch die International Telecommunication Union (ITUT Recommendation Q.23) weltweit standardisiert. Es hat eine Mindestdauer von 40 ms und zwischen zwei DTMF-Signalen muss ein Abstand von mindestens 80 ms eingehalten werden. Anmerkungen: (i) Für Europa ist eine Mindestdauer von 65 ms und eine maximale Frequenzabweichung von kleiner als 1.8 % des Sollwerts spezifiziert. (ii) Die Tasten A bis D werden auch oft weggelassen.
6.1.2
Vorbereitende Aufgaben
A6.1
Geben Sie das Signal x[n] an, das durch Abtastung mit der Abtastfrequenz fs = 8 kHz aus dem amplitudennormierten DTMF-Signal für das Wählzeichen 1 entsteht. Lassen Sie dabei die zeitliche Begrenzung außer Acht. x [n] =
A6.2
Welcher Zusammenhang besteht zwischen der Frequenz des zeitkontinuierlichen Signals f und der normierten Kreisfrequenz : des zeitdiskreten Signals? Füllen Sie dazu die Tabelle 6-1 für die DTMF-Frequenzen aus.
Tabelle 6-1
DTMF-Frequenzen und normierte Kreisfrequenzen bei Abtastung mit 8 kHz
f in Hz
697
: / 2S
0.0871
A6.3
770
852
941
1209
1336
1477 0.185
Es sei N die Transformationslänge der DFT mit Rechteckfenster. Wie groß ist die spektrale Auflösung der DFT, die Frequenzauflösung 'f in Hz, d. h. um welche Frequenzdifferenz unterscheiden sich zwei benachbarte Spektrallinien im DFTFrequenzraster? 'f = Wie groß muss die DFT-Länge N mindestens sein, damit die Frequenzflösung der DFT den Abstand zwischen den DTMF-Tönen nicht unterschreitet? N min
Wie groß kann bei der in der Telefonie üblichen Abtastfrequenz von 8 kHz die DFTLänge N für das DTMF-Signal der Dauer 40 ms höchstens sein, wenn eine Radix-2FFT ohne Auffüllen mit Nullen verwendet werden soll? N max
74 A6.4
6 Kurzzeit-Spektralanalyse: Beispiele Geben Sie in Tabelle 6-2 für die DFT-Länge N = 256 die den DTMF-Frequenzen am nächsten liegenden Frequenzstützstellen fk aus dem DFT-Frequenzraster an.
Tabelle 6-2
DTMF-Frequenzen und zugeordnete Frequenzen gemäß dem DFT-Frequenzraster mit der DFT-Länge N = 256 und Abtastung mit der Abtastfrequenz von 8 kHz
f in Hz
697
k
22
47
687.5
1469
9.5
8
fk in Hz | f fk | in Hz
770
852
941
1209
1336
1477
6.1.3
Versuchsdurchführung
M6.1
Stellen Sie mit MATLAB das DTMF-Signal zum Wählzeichen 1 der Dauer von 40 ms grafisch dar. Machen Sie das Signal auch hörbar.
M6.2
Bestimmen Sie die DFT-Betragsspektren zu den Wählzeichen 0 bis 9 für die DFT mit einem Rechteckfenster der Länge 256. Hinweis: Stellen Sie Ausschnitte aus den Betragsspektren in einem für die Signalerkennung relevanten Abszissenbereich grafisch dar.
M6.3
Wiederholen Sie die Bestimmung der DFT-Betragsspektren mit einem HammingFenster. Welche Auswirkungen ergeben sich durch die Hamming-Fensterung? Erklären Sie die Ergebnisse. Wird die Erkennung der DTMF-Töne durch die Fensterung erleichtert? Hinweis: Vergleichen Sie den minimalen Frequenzabstand der Töne der DTMF-Signale 'fmin, die Frequenzauflösung der DFT 'f (Frequenzschrittweite des DFTRasters) und die Breite des Hauptzipfels der Hamming-Fensterfolge in Hertz 'fm, also bezüglich der unterlegten Abtastfrequenz. 'fmin = 'f
=
'fm
=
In der praktischen Anwendung sind den DTMF-Signalen Störungen überlagert. Für eine zuverlässige Signaldetektion ist es deshalb wichtig, dass bereits im ungestörten Fall der jeweilige zutreffende DFT-Koeffizient sich möglichst von den anderen infrage kommenden abhebt. Vergleichen Sie die interessierenden DFT-Koeffi-
6.2 Audiosignale
75
zienten aus Tabelle 6-2 für die Fensterung mit Rechteck- bzw. Hamming-Fenster. Welche der beiden Fensterfolgen ist vorzuziehen? Begründen Sie die Ihre Antwort. Anmerkungen: (i) In der Praxis wird die DTMF-Detektion mit dem Goertzel-Algorithmus durchgeführt. Dabei wird die DFT nur an den zugeordneten Frequenzstützstellen berechnet, sodass der Realisierungsaufwand deutlich geringer wird. In Abschnitt 8 wird der GoertzelAlgorithmus vorgestellt. (ii) Siehe auch MATLAB Demo-Auswahl unter Toolboxes / Signal Processing / Application Demos / Dual-Tone MultiFrequency (DTMF) Signal Detection.
6.2
Audiosignale
Als Audiosignale bezeichnet man für gewöhnlich Signale, die aus akustischen Signalen (Schalldruck) durch ein Mikrofon aufgenommen wurden bzw. Signale die – nach einer eventuellen Digital /Analog-Umsetzung – mit einem elektrischen Schallwandler (Lautsprecher) für Menschen hörbar gemacht werden können. Eine wichtige Kenngröße der Audiosignale ist ihr belegtes Frequenzband. Einige typische Beispiele sind in Tabelle 6-3 zusammengestellt.
6.2.1
Tabelle 6-3 Frequenzbänder von Audiosignalen Signaltyp
Frequenzband
Laute von Elefanten und Blauwalen (Infraschall) Für Menschen hörbare Geräusche Telefonsprache Audio für den UKW-Rundfunk Compact Disc Digital Audio (CD-DA) Ortungsschreie von Fledermäusen (Ultraschall)
kleiner circa 16 Hz (16)20 Hz bis 18(20) kHz 300 Hz bis 3.4 kHz 30 Hz bis 15 kHz 5 Hz bis 20 KHz 8 bis 110 kHz
Kurzzeit-Spektralanalyse
Eine weitere Besonderheit von Audiosignalen ist, dass sie über kurze Zeitabschnitte ein charakteristisches Verhalten zeigen, dieses sich aber über der Zeit verändert. Ein Beispiel für Sprache zeigt Bild 6-2. Das mit einer PC Sound Card digitalisierte Sprachsignal „telecommunications laboratory“ zeigt erkennbar kurze Energiepakete, die typisch für die stimmhaften, von den schwingenden Stimmlippen des Kehlkopfs hervorgebrachten Vokale sind. Alle anderen Sprachlaute werden stimmlos genannt. 1
Audio signal
0.5
0
-0.5
-1
0
0.2
0.4
0.6
0.8
1 1.2 Time in Seconds
1.4
1.6
1.8
Bild 6-2 Audiosignal „telecommunications laboratory“ (dsplab6_1)
2
76
6 Kurzzeit-Spektralanalyse: Beispiele
Sollen nichtstationäre Signale, wie die Sprachsignale, analysiert werden, kommt der KurzzeitSpektralanalyse eine besondere Bedeutung zu. Sie ist deshalb ein wichtiger Baustein moderner Sprach- und Audiocodierverfahren sowie Verfahren zur Sprach- und Sprechererkennung. Anmerkungen: (i) Typische Analyseintervalle für die Codierung von Telefonsprache sind 5 bis 20 ms, vgl. Bild 6-2. (ii) Die Kurzzeit-Spektralanalyse liefert mit dem Spektrogramm eine verbreitete Form der Zeit-Frequenz-Darstellung.
Die Technik der Kurzeit-Spektralanalyse wird Fenster für den i-ten in Bild 6-3 vorgestellt. Aus dem zu unterSignalblock suchenden Signal x[n] werden mit einer Fensterfolge w[n] Blöcke der Länge N herausgeschnitten. Für jeden Block wird die DFT berechnet und in der Regel der Betrag der DFTKoeffizienten grafisch dargestellt. Die Signaln ni ni + N1 blöcke können sich dabei überlappen, um bei der Darstellung zwischen den zeitlich aufeinBild 6-3 Zerlegung des Signals in Blöcke zur ander folgenden Spektren weiche Übergänge Kurzzeit-Spektralanalyse zu haben. Für eine effiziente Berechnung wird unter Berücksichtigung der Randbedingungen der Anwendung meist eine Blocklänge verwendet, die eine Radix-2-FFT zulässt. Ergebnisse für das Sprachsignal „telecommunications laboratory“ für die Blocklänge 512 und Verwendung eines Hamming-Fensters sind in Bild 6-4 und Bild 6-5 zu sehen. Bild 6-4 zeigt ein sogenanntes Wasserfalldiagramm mit den Beträgen der DFT-Koeffizienten über der Zeit und der Frequenz aufgetragen. Zeit und Frequenz berechnen sich dabei aus der Blocknummer, der Abtastfrequenz und der DFT-Länge. Eine oft gewählte alternative Darstellungsform ist das Spektrogramm in Bild 6-5. Darin werden die Beträge der DFT-Koeffizienten als Graustufen bzw. farbig dargestellt. Zur Interpretation ist Anwendungswissen erforderlich. Beispielhaft wird auf das Kurzzeitspektrum zwischen etwa 0.8 und 0.9 s hingewiesen. In beiden Bildern zeigen sich dort relativ energiereiche Anteile zwischen 3000 und 3500 Hz. Aus der Sprachverarbeitung ist bekannt, dass derartige Frequenzverteilungen bei Zischlauten resultieren. Tatsächlich wird in der Sprachprobe zwischen circa 0.8 und 0.9 s das „s“ am Ende des Wortes „telecommunications“ stimmlos gesprochen. Eine Vergrößerung des Signals in Bild 6-2 mit der MATLAB-ZoomFunktion (Lupe) zeigt einen für Zischlaute typischen rauschartigen Verlauf ganz im Gegensatz zu den eher kurzzeitig periodischen, energiereichen Abschnitten bei den Vokalen. Anmerkungen: (i) Auch bei der Entwicklung moderner Hörgeräte und Hörhilfen (Innenohrprothesen) spielt die Kurzzeit-Spektralanalyse eine wichtige Rolle. (ii) Soll die Echtzeitfähigkeit einer KurzzeitSpektralanalyse abgeschätzt werden, so ist zur Komplexität des verwendeten DFT-Algorithmus auch der Aufwand für die Fensterung und gegebenenfalls der zusätzliche Aufwand durch eine Überlappung zu berücksichtigen.
6.2.2
Vorbereitende Aufgaben
A6.5
Machen Sie sich mit dem Programmbeispiel 6-1 soweit vertraut, dass Sie es in der Versuchsdurchführung anwenden können. Das Programmbeispiel dsplab6_1 öffnet zunächst die Audio-Datei im WAVEFormat und gibt das Signal über die PC Sound Card aus. Das Audiosignal wird am Bildschirm angezeigt, siehe Bild 6-2.
Magnitude of short-time dft spectrum
6.2 Audiosignale
77
1 0.8 0.6 0.4 0.2 0 0
1 0.8
1000 0.6
2000
0.4 3000
0.2 4000
0
Frequency in Hertz
Time in Seconds
Bild 6-4 Wasserfalldiagramm des Audiosignals „telecommunications laboratory“ (dsplab6_1)
4000 3500
Frequency in Hertz
3000 2500 2000 1500 1000 500 0
0.2
0.4
0.6
0.8 1 1.2 Time in Seconds
1.4
1.6
1.8
Bild 6-5 Spektrogramm des Audiosignals „telecommunications laboratory“ (dsplab6_1)
78
6 Kurzzeit-Spektralanalyse: Beispiele Zur grafischen Darstellung der Spektren wird das Signal auf eine Sekunde verkürzt. Danach wird das Audiosignal in sich überlappende Blöcke eingeteilt und jeder Block für sich transformiert. Im Beispiel der FFT-Länge, M = 512, und dem Parameter OL = 0.5 (Overlap), wird das FFT-Fenster jeweils um 256 Folgenelemente weitergeschoben. Die Beträge der resultierenden DFT-Spektren werden zusammen als Wasserfalldiagramm und als Spektrogramm angezeigt, siehe Bild 6-4 und Bild 6-5. Bestimmen Sie für das Beispiel die Frequenzauflösung (DFT-Frequenzraster) der DFT-Spektren und den zeitlichen Versatz zwischen zwei DFT-Spektren im Spektrogramm. Die Abtastfrequenz beträgt 16 kHz. 'f
=
't
=
Programmbeispiel 6-1 Audiosignal, DFT-Spektrum und Spektrogramm % Short-time spectral analysis of audio signal % dsplab6_1.m * mw * 26Oct2010 [y,fs,bits] = wavread('speech'); % load audio signal soundsc(y,fs,bits); % sound %% Graphics t = 0:length(y)-1; t = t/fs; % time scale figure('Name','Audio signal "telecommunications laboratory" ',... 'NumberTitle','off'); plot(t,y), grid xlabel('Time, in Seconds'), ylabel('Audio signal') %% Spetral analysis - short term % curtail signal to 1 second y = y(1:fs); M = 512; % fft length w = hamming(M); % Hamming window OL = 0.5; % 50% overlap of the fft blocks % number of dft spectra NY = floor(length(y)/(M*(1-OL))); MY = M/4; % number of dft coeffizients per dft spectrum Y = zeros(NY,MY); start = 1; stop = start + M - 1; k = 0; while stop n @ s1 > n @ b0 x > n @
(11.1)
und mit dem Verzögerungsoperator D
D x > n @
x > n 1@
(11.2)
für die Zustandsgrößen
s1 > n @ D s2 > n @ b1 x > n @ a1 y > n @
(11.3)
s2 > n @ D b2 x > n @ a2 y > n @
(11.4)
und
Die Gleichungen werden später in der Aufgabe A11.2 als Programmiervorschrift für ein rekursives System 2. Ordnung verwendet.
11.3 Impulsantwort
11.3
131
Impulsantwort
Die Übertragungseigenschaften der LTI-Systeme werden durch zwei Funktionen charakterisiert: die Übertragungsfunktion H(z) im Bildbereich und die Impulsantwort h[n] im Zeitbereich, siehe Tabelle 8-1. Impulsantwort und Übertragungsfunktion bilden ein z-Transformationspaar, sodass beide Systemfunktionen ineinander überführt werden können. Die dazu benötigten Rechenschritte werden durch spezielle MATLAB-Befehle unterstützt. Das folgende Beispiel zum System 2. Ordnung in Bild 11-3 macht mit dem grundsätzlichen Verfahren vertraut. Die Übertragungsfunktion eines rekursiven Systems 2. Ordnung ist eine rationale Funktion mit einem Zähler- und einem Nennerpolynom. Zähler- und Nennerpolynom können mit ihren Nullstellen, den Nullstellen des Systems z0l bzw. den Polen des Systems zfk, auch in Produktform geschrieben werden.
H z
b0 b1 z 1 b2 z 2 a0 a1 z
1
a2 z
2
b0 z 2 b1 z b2 2
a0 z a1 z a2
b0 z z01 z z02 a0 z zf1 z zf 2
(11.5)
Für den wichtigen Sonderfall nur einfacher, von null verschiedener Pole, wird die Übertragungsfunktion durch Partialbruchzerlegung in die für die inverse z-Transformation günstige Form überführt.
H z
B0
B1 z B z 2 z zf1 z zf 2
für
zf1 z zf 2
und
zf1, zf 2 z 0
(11.6)
Tabellen für z-Transformationspaare, z. B. in [Wer08], liefern die Korrespondenz z
a n u > n@ l
z za
mit z ! a
(11.7)
also
n n h > n @ B0 G > n @ B1 zf 1 B2 zf 2 u > n @
(11.8)
mit dem Impuls an der Stelle null und den beiden rechtsseitigen Exponentiellen. Sind die Beträge der Pole kleiner eins, klingen die Exponentiellen mit wachsender normierter Zeit n ab: Das System ist stabil. Bei stabilen, reellwertigen Systemen mit konjugiert komplexen Polpaaren ergeben sich bedämpfte sinusförmige Anteile, die Eigenschwingungen des Systems.
11.4
Partialbruchzerlegung mit MATLAB
Die Berechnung der Impulsantwort aus der Übertragungsfunktion wird vorteilhaft durch eine Partialbruchzerlegung der Übertragungsfunktion vorbereitet. Die Partialbruchzerlegung rationaler Funktionen unterstützt MATLAB mit dem Befehl residuez. Anhand zweier Zahlenwertbeispiele wird die Anwendung des Befehls vorgestellt.
132
11 Infinite-duration-impulse-response-Systeme
Beispiel 11-1 Partialbruchzerlegung für ein System 2. Ordnung mit konjugiert komplexem Polpaar
H1 z
1 2 z 1 z 2 1 1.4 z 1 0.74 z 2
(11.9)
Die Zähler- und die Nennerkoeffizienten werden im MATLAB Command Window als Vektoren eingegeben. >> b = [1 2 1]; >> a = [1 –1.4 0.74];
Die Befehlseingabe >> [r,p,k] = residuez(b,a);
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
r z r z k 1 2 z p1 z p2
(11.10)
Es resultiert mit den Zahlenwerten H1 z 1.3514
0.1757 j 3.6459 z 0.1757 j 3.6459 z z 0.7 j 0.5 z 0.7 j 0.5
(11.11)
Anmerkung: Bei reellwertigen Systemen sind die Koeffizienten der Partialbruchzerlegung zu konjugiert komplexen Polen stets selbst zueinander konjugiert komplex. Daran lassen sich gegebenenfalls Fehleingaben oder numerische Ungenauigkeiten erkennen.
Beispiel 11-2 Partialbruchzerlegung für ein System 2. Ordnung mit doppeltem reellen Pol
H2 z
1 z 2 1 z 1 0.25 z 2
Die Zählerkoeffizienten und die Nennerkoeffizienten sind >> b = [1 0 1];
(11.12)
11.5 Vorbereitende Aufgaben
133
>> 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
Die Übertragungsfunktion resultiert somit in H2 z
k
r1 1 p1 z
1
r2
1 p1 z 1
2
4
5 z2 8 z z 0.5 z 0.5 2
(11.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.
11.5
Vorbereitende Aufgaben
A11.1
Gegeben ist das rekursive System 2. Ordnung
H z
1 z 2
(11.14)
1 0.8 z 1 0.64 z 2
Berechnen Sie in Tabelle 11-1 die ersten vier Werte der Impulsantwort des Systems anhand des Blockdiagramms in Bild 11-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 11-1 Impulsantwort h[n] des Systems (11.14) n 0 1 2 3
x[n]
s2[n]
s1[n]
0
0
h[n]
134 A11.2
11 Infinite-duration-impulse-response-Systeme Bestimmen Sie die Pole und Nullstellen des Systems H(z) in (11.14) z01,2 =
, zf1,2 =
und tragen Sie die Pole und Nullstellen in Bild 11-4 ein. Im z
1
Re
Bild 11-4 Pol-Nullstellendiagramm zu H(z) in (11.14)
A11.3
Berechnen Sie die Impulsantwort h[n] von H(z) in (11.14) und kontrollieren Sie Ihr Ergebnis mit Tabelle 11-1. Hinweis: Rechnung circa 1 Seite. h[n] =
A11.4
Im Programmbeispiel 11-1 wird die Impulsantwort eines rekursiven Systems mit nur einfachen Polen berechnet. Machen Sie sich mit dem Programmbeispiel vertraut.
Programmbeispiel 11-1 Berechnung der Impulsantwort für nur einfache Pole % Impulse and step response for non-multiple poles % dsplab11_2.m * mw * 06Dec2010 b = [1 0 1]; % numerator % denominator a = [1 -.8 .64]; [r,p,k] = residuez(b,a); % residues, poles and direct term n = 0:20; h = zeros(size(n)); % Compute impulse response for m = 1:length(r) h = h + r(m)*p(m).^(n); end % direct term if isempty(k)~=1 h(1) = h(1) + k; end
11.5 Vorbereitende Aufgaben A11.5
135
Das Programmbeispiel 11-2 soll nun zur Bestimmung der Sprungantwort verwendet werden. Wie muss das Nennerpolynom a modifiziert werden, damit das Programmbeispiel 11-2 die Sprungantwort liefert? Hinweis: Gehen Sie von (8.37) aus. Eine zusätzliche Befehlszeile genügt. a =
A11.6
Das Programmbeispiel 11-1 iirdf2t.m realisiert ein IIR-System 2. Ordnung. Es fußt auf der Direktform II im Blockdiagramm in Bild 11-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 11-1. Hinweis: Sechs Befehlszeilen sind ausreichend.
Programmbeispiel 11-1 IIR- Filter 2. Ordnung in der transponierten Direktform II function [y,sf] = iirdf2t(b,a,x,si) % 2nd order IIR system in transposed direct form II % function [y,sf] = iirdf2t(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 % mw * 06Dec2010 if nargin==4 SI = si; % initial conditions else SI = [0,0]; end % normalize coefficients to a0 = 1 a = a/a(1); b = b/a(1); y = zeros(size(x)); % allocate memory for output signal %% Filtering
136
11 Infinite-duration-impulse-response-Systeme
11.6
Versuchsdurchführung
M11.1
Verifizieren Sie Ihre Ergebnisse aus der Vorbereitung in Tabelle 11-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. Hinweis: Siehe Help-Funktion zu den MATLAB-Befehlen filter und impz.
M11.2
Bestimmen Sie mit MATLAB sowohl analytisch als auch durch Simulation die Sprungantwort von H(z) aus (11.14). Stellen Sie die Ergebnisse grafisch dar. Hinweise: Verwenden Sie die MATLAB-Befehle residuez und filter, siehe auch A11.4 und A11.5.
M11.3
Kann vom Bild der Impulsantwort auf die Pole des Systems geschlossen werden? Und wenn es sich um ein System 2. Ordnung handelt?
M11.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 (11.14) grafisch ausgeben. Stellen Sie auch die Gruppenlaufzeit des Systems grafisch dar. Hinweise: Zur Analyse und grafischen Darstellung der charakteristischen Funktionen von Filtern gibt es in der MATLAB Signal Processing Toolbox das Programm fvtool(b,a), genannt Filter Viewer, siehe Bild 11-5. Anmerkung: Der Einfachheit halber werden im Weiteren die voreingestellten Achsenbeschrifftungen von MATLAB übernommen. Für eine wichtige Dokumentation sollten die in der Literatur üblichen Achsenbeschriftungen verwendet werden, wie z. B. in der deutschsprachigen Literatur „Normierte Kreisfrequenz :/S“ und „Betrag |H(ej:)| in dB“ für die Abszisse bzw. Ordinate. Die Bildüberschrift könnte sein: „Betragsgang und Phasengang des Cauer-Filters“.
M11.5
Beantworten Sie folgende Fragen: Was kann aus dem Pol-Nullstellendiagramm über den Betragsfrequenzgang ausgesagt werden? Was kann aus dem Bild des Betragsfrequenzgangs über die Zahl und Lage der Pole und Nullstellen geschlossen werden? Warum treten im Bild des Phasenfrequenzgangs Sprünge um S auf? Ist in den Bildern ein Zusammenhang zwischen dem Betragsfrequenzgang und der Gruppenlaufzeit erkennbar?
M11.6
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. Hinweis: Werte der Koeffizienten gerundet. System „Butterworth“
H BW z 0.046
1 4 z 1 6 z 2 4 z 3 z 4 1 0.7821 z 1 0.6800 z 2 0.1827 z 3 0.0301 z 4
(11.15)
11.6 Versuchsdurchführung
137
System „Cauer“
HC z
0.2317 0.3378 z 1 0.5297 z 2 0.3378 z 3 0.2317 z 4 1 0.3396 z 1 1.2275 z 2 0.3119 z 3 0.2964 z 4
(11.16)
Bild 11-5 Grafische Benutzerschnittstelle des MATLAB-Werkzeugs fvtool aus der Signal Processing Toolbox
Hinweise zu MATLAB-Funktionen und M-Files Tabelle 11-2 MATLAB-Befehle benutzte Programme und Dateien, siehe auch vorherige Versuche Befehle für Polynome
roots, poly
Elementare Funktionen der Signalverarbeitung
grpdelay, filter, freqz, impz, residue, residuez, unwrap, zplane
Spezielle MATLAB-Programme
Fdatool (Filter Design and Analysis Tool), fvtool (Filter Viewer)
Befehle zur Programmsteuerung
nargin, isempty
Þ Onlineressourcen
dsplab11_1.m, dsplab11_2.m, dsplab11_3.m, iirdf2t_.m
138
12
Entwurf digitaler IIR-Filter
Nachdem im letzten Versuch die grundlegenden Eigenschaften von IIR-Systemen behandelt wurden, werden in diesem Versuch wichtige Standardentwurfsverfahren für IIR-Filter nach Vorschriften im Frequenzbereich vorgestellt. Schlüsselbegriffe Bandpassfilter, Bandsperre, bilineare Transformation, Butterworth-Tiefpassfilter, Chebyshev-Tiefpassfilter, Cauer-Tiefpassfilter, fdatool, Frequenzgang, Frequenztransformation, Hochpassfilter, IIRSystem, pole/zero editor Lernziele Nach Bearbeiten dieses Versuchs können Sie x
wichtige Vor- und Nachteile von IIR-Filtern aufzählen
x
die Entwurfsvorschriften für digitale IIR-Filter im Frequenzbereich anhand eines Toleranzschemas erläutern
x
die drei Schritte der IIR-Standardapproximation vorstellen
x
den Unterschied zwischen einem Butterworth-, Chebyshev- und Cauer-Tiefpassfilter anhand einer Skizze des Betragsfrequenzganges erklären
x
für eine Anwendung ein Entwurfsverfahren auswählen und die Wahl begründen
x
mit dem MATLAB-Werkzeug fdatool IIR-Filter entwerfen
x
mit dem MATLAB-Werkzeug pole/zero editor den Einfluss der Pole und Nullstellen auf den Betragsfrequenzgang und die Impulsantwort der Systeme anschaulich vorführen
12.1
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 geringerer 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 zu sehen, eine der vier kanonischen
M. Werner, Digitale Signalverarbeitung mit MATLAB®, DOI 10.1007/978-3-8348-8621-7_12, © Vieweg+Teubner Verlag | Springer Fachmedien Wiesbaden GmbH 2012
12.2 Entwurf eines Butterworth-Tiefpassfilters
139
Formen, sie sich durch die minimale Anzahl von Verzögerungsgliedern und Multiplizierern auszeichnen. 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 angegeben, die Übertragungsfunktion H(z) bzw. der Frequenzgang H(z = e j:), siehe Tabelle 8-1. Die Entwurfsverfahren für IIR-Filter unterscheiden sich durch die Art der Zähler- und Nennerpolynome, die zugrunde gelegt werden. MATLAB stellt die gebräuchlichen Lösungsverfahren bereit. Der Versuch kann sich deshalb darauf beschränken, die Lösungsansätze aufzuzeigen, die Lösungsverfahren in MATLAB 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. Approximation des entsprechenden analogen Filters mit einem Standardverfahren; 3. und Transformation der Kenngrößen des analogen Filters (Pole und Nullstellen, Impulsantwort oder Sprungantwort) in die eines digitalen Filters.
x[n] bN
bN1 D
aN
b0
b1 D
aN1
y[n]
a1
Bild 12-1 Blockdiagramm mit der IIR-Filterstruktur in transponierter Direktform II (a0 = 1)
12.2
Entwurf eines Butterworth-Tiefpassfilters
Das Entwurfsbeispiel behandelt die notwendigen Schritte vom analogen Prototypen bis zu den Koeffizienten des digitalen Filters.
12.2.1
Toleranzschema und Filtertyp
Für das Entwurfsbeispiel wird das Toleranzschema für den Betragsfrequenzgang in Bild 12-2 zugrunde gelegt und als Filtertyp der Einfachheit halber das Butterworth-Tiefpassfilter (BWTP) gewählt.
140 Tabelle 12-1
12 Entwurf digitaler IIR-Filter Vergleich der Standardapproximationen für IIR-Tiefpassfilter Betragsgang
Nichtlinearität des Phasenganges
Monoton fallend
„Leicht“
Filtertyp
Übergangsbereich
Butterworth1 (Potenzfilter)
Equiripple-Verhalten im Durchlassbereich und monoton fallend im Übergangs- und Sperrbereich
Monoton fallend im Durchlass- und Übergangsbereich und EquirippleVerhalten im Sperrbereich
Equiripple-Verhalten im Durchlassund im Sperrbereich, monoton fallend im Übergangsbereich
/ Relativ breiter Übergangsbereich / Relativ große Filterordnung
. Eigenschaften zwischen Butterworth- und CauerFilter, gutes Sperrverhalten . Filterordnung mittel
„Mittel“
Übergangsbereich
Chebyshev2-II
- Nur moderate Signalverzerrungen aufgrund des Phasengangs im Durchlassbereich
„Mittel“
Übergangsbereich
Chebyshev2-I
Bemerkungen
. Eigenschaften zwischen Butterworth- und CauerFilter, gutes Durchlassverhalten . Filterordnung mittel
„Stark“ / Phasenverzerrungen, insbesondere im Bereich der Filterflanke Übergangsbereich
Cauer3
- Hohe Sperrdämpfung bei schmalem Übergangsbereich - Filterordnung klein
1
auch Potenzfilter genannt
2
In der deutschsprachigen Literatur sind statt der englischen Transkription Chebyshev auch die Übertragungen Tschebyscheff, Tschebyschew und Tschebyschow zu finden.
3
auch elliptisches Filter genannt
12.2 Entwurf eines Butterworth-Tiefpassfilters
Betragsgang
1
141
Durchlassbereich
GD
1GD
Übergangsbereich
GS
Sperrbereich
GS :S
:D
1
Normierte Kreisfrequenz : /S Bild 12-2 Toleranzschema für den Betrag des Frequenzgangs zum Entwurf eines IIR-Tiefpassfilters mit den Entwurfsparametern: normierte Durchlasskreisfrequenz :D, normierte Sperrkreisfrequenz :S, Durchlasstoleranz GD und Sperrtoleranz GS
12.2.2
Zeitkontinuierliches Butterworth-Tiefpassfilter
Die Leistungsübertragungsfunktion, das Quadrat des Betragsgangs, des zeitkontinuierlichen Butterworth-Tiefpassfilters ist von der Form H BWTP jZ
1
2
1 Z Z0
(12.1)
2N
mit der Filterordnung N und der 3dB-Grenzkreisfrequenz Z0. § H BWTP jZ0 20 log10 ¨ ¨¨ max H BWTP jZ © Z
· ¸ dB 3 dB ¸¸ ¹
(12.2)
Da im Nenner (12.1) eine Potenzfunktion von Z steht, spricht man auch von einem Potenzfilter. Wie man sich durch Einsetzen von s = jZ überzeugen kann, resultiert aus der Zerlegung wieder die Leistungsübertragungsfunktion (12.1). H BWTP s H BWTP s
1 1 s jZ0
2N
(12.3)
Die Pole in (12.3) liegen gleichmäßig verteilt auf dem Mittelpunktskreis der s-Ebene mit dem Radius Z0 sl
§ ©
Z0 exp ¨ j
S 2N
· > 2l N 1@ ¸ für ¹
l 1, 2,! , 2 N
(12.4)
Die Pole in der linken s-Halbebene werden kausale Pole genannt und die in der rechten s-Halbebene antikausale Pole. Die Pole werden der Übertragungsfunktion H(s) nun so zugeordnet, dass ein kausales und stabiles System resultiert, siehe Bild 12-3.
142
12 Entwurf digitaler IIR-Filter Im(s)
s
sf1
Re(s)
S /N
sf2
Z0
Kausale Pole Re(s) < 0 s f3
Antikausale Pole Re(s) > 0
Bild 12-3 Pole der Übertragungsfunktion HBWTP(s) in der linken s-Halbebene und für HBWTP(s) in der rechten s-Halbebene (N = 3)
Mit der Übertragungsfunktion H BWTP s
b0 N
(12.5)
s sfk k 1
ist der zeitkontinuierliche BWTP bis auf einen Skalierungsfaktor b0 bestimmt.
12.2.3
Dimensionierung des zeitkontinuierlichen Butterworth-Tiefpassfilters
Als Freiheitsgrad zur Dimensionierung des zeitkontinuierlichen BWTP in (12.5) verbleiben die 3dB-Grenzkreisfrequenz Z0 und die Filterordnung N. Zu deren Bestimmung wird die Hilfsvariable § ZD · ¨ ¸ © Z0 ¹
H
N
(12.6)
mit der Durchlasskreisfrequenz ZD eingeführt. Dann resultiert die Leistungsübertragungsfunktion in der Form H BWTP jZ
1
2
1 H Z ZD 2
(12.7)
2N
Konkretisiert man nun die Dimensionierungsaufgabe mit dem angepassten Toleranzschema in Bild 12-4, gilt für die Leistungsübertragungsfunktion bei der Durchlasskreisfrequenz
H BWTP jZD
1
2
(12.8)
1 H 2
Die Sperrkreisfrequenz eingesetzt liefert H BWTP jZS
1
2
1 H ZS ZD 2
2N
d
1 1 O2
(12.9)
12.2 Entwurf eines Butterworth-Tiefpassfilters
143
Betragsgang |HBWTP(jZ)|
1
1 H
2 1/ 2
0.6
Bezugspunkte zum Filterentwurf
0.4
1 O 2
1/ 2
0.2
0
0
ZD
ZS
Kreisfrequenz Z
Bild 12-4 Toleranzschema zur Dimensionierung des Butterworth-Tiefpassfilters
Da die Hilfsgrößen H und O durch das Toleranzschema vorgegeben werden, kann aus der letzten Ungleichung die gesuchte Filterordnung N bestimmt werden. Nt
log O H log ZS ZD
(12.10)
Die 3dB-Grenzkreisfrequenz leitet sich mit der gefundenen Filterordnung aus (12.6) her.
Z0
ZD N H
(12.11)
12.2.4
Vorbereitende Aufgaben Butterworth-Tiefpassfilter
A12.1
Skizzieren Sie in Bild 12-5 die Frequenzgänge der Dämpfung mithilfe des BodeDiagramms für die Butterworth-Tiefpassfilter mit den Filterordnungen 1, 2, 4 und 8. Führen Sie dazu eine Frequenznormierung auf die 3dB-Grenzfrequenz Z0 durch. Welchen Einfluss hat die Filterordnung auf den Betragsfrequenzgang des Filters? Dämpfung a(Z) in dB
48 36 24 12 0
1/4
1/2
1 2 4 Kreisfrequenz Z / Z0
8
16
Bild 12-5 Bode-Diagramm der Dämpfung für Butterworth-Tiefpassfilter
144 A12.2
12 Entwurf digitaler IIR-Filter Dimensionieren Sie ausgehend von den Vorgaben in Tabelle 12-2 das geeigneten analoge Butterworth-Tiefpassfilter, siehe auch A12.3-1. Tabelle 12-2 Entwurfsparameter für das analoge Butterworth-Tiefpassfilter
Durchlasstoleranz
GD = 0.095
Durchlasskreisfrequenz ZD = 2S 3.4 kHz
A12.3
Sperrtoleranz
GS = 0.0048
Sperrkreisfrequenz
ZS = 2S 4 kHz
Hilfsparameter
H =
Hilfsparameter
O=
Filterordnung
N =
3dB-Grenzkreisfreq.
Z0 =
Die in A12.2 bestimmte hohe Filterordnung ist für die weitere beispielhafte Rechnung unhandlich. Wiederholen Sie deshalb die Dimensionierung für das Beispiel mit den deutlich geringeren Anforderungen an das selektive Wunschverhalten in Tabelle 12-3. Tabelle 12-3 Entwurfsparameter für das analoge Butterworth-Tiefpassfilter mit reduzierten Anforderungen
A12.4
Durchlasstoleranz
GD = 0.1
Sperrtoleranz
GS = 0.2
Durchlasskreisfrequenz
ZD = 2S 2 kHz
Sperrkreisfrequenz
ZS = 2S 5 kHz
Hilfsparameter
H =
Hilfsparameter
O=
Filterordnung
N =
3dB-Grenzkreisfreq.
Z0 =
Bestimmen Sie die Pole des in A12.3 entworfenen analogen Butterworth-Tiefpassfilters 3. Ordnung und zeichnen Sie die Pole und Nullstellen in das Pol-Nullstellendiagramm in Bild 12-6 ein. Welche Ortskurve ergibt sich für die Pole? Durch welchen Parameter wird sie bestimmt? Hinweis: Rechnen Sie mit der dimensionslosen Größe s frequenz ist Zb = 2S 1 kHz.
s Zb ; die Bezugskreis-
Tabelle 12-4 Pole des analogen Butterworth-Tiefpassfilters nach Tabelle 12-3
Index k Pol
~ s fk
1
2
3
12.2 Entwurf eines Butterworth-Tiefpassfilters
145
Im( s )
s
Re( s )
Bild 12-6 Pol-Nullstellendiagramm des Butterworth-Tiefpassfilters nach Tabelle 12-3
A12.5
Geben Sie die Übertragungsfunktion des in A12.3 und 4 entworfenen analogen Butterworth-Tiefpassfilters mit HBWTP(0) = 1 an. Hinweis: Verwenden Sie dabei die normierte komplexe Frequenz. H BWTP s
12.2.5
Bilineare Transformation
Für die zeitdiskrete Nachbildung des analogen BWTP 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, sodass 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. Der Vergleich der Systembeschreibungen in der s-Ebene und der z-Ebene zeigt die Gemeinsamkeiten auf. Analoge Filter sind stabil, wenn die 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.
146
12 Entwurf digitaler IIR-Filter
Die bilineare Transformation 1 1 z 1 D 1 z 1
s
und
z
1D s 1D s
für D \
(12.12)
bildet die linke s-Halbebene in das Innere des Einheitskreises der z-Ebene ab. Die imaginäre Achse der s-Ebene wird dabei dem Einheitskreis der z-Ebene zugeordnet. Ein stabiles System im s-Bereich geht in ein stabiles System im z-Bereich über. Die grundsätzlichen Eigenschaften des Frequenzganges bleiben dabei erhalten. Der Zusammenhang zwischen den Frequenzvariablen erschließt sich durch Einsetzen von s = jZ bzw. z = e j: in (12.12). Man erhält nach kurzer Zwischenrechnung
Z
1
D
§:· tan ¨ ¸ und : ©2¹
2 arctan D Z für D \
(12.13)
Es ist offensichtlich, dass die Abbildung der sich ins Unendliche 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 sogenannte Arcustangens-Verzerrung. Sie muss beim Filterentwurf berücksichtigt werden, was beispielsweise bereits bei der Vorgabe des Toleranzschemas geschehen kann. Im(s)
Im(z) s
Re(s)
z Bilineare
Re(z)
Transformation Konvergenzgebiet
Konvergenzgebiet
Bild 12-7 Bilineare Transformation der s-Ebene in die z-Ebene und umgekehrt
12.2.6
Frequenztransformation
Eine Erweiterung der Idee der bilinearen Transformation führt auf die Frequenztransformation von Tiefpässen in Tiefpässe, Bandpässe, Hochpässe oder 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(]), sprich Zeta, und der normierten Eckkreisfrequenz :c,] ausgegangen. Letztere kann beispielsweise die 3dBGrenzkreisfrequenz 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 Allpasstransformation gesprochen wird.
12.2 Entwurf eines Butterworth-Tiefpassfilters
147
Sind die Wunschsysteme Bandpässe (BP) oder Bandsperren (BS), werden Allpasstransformationen 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
Frequenztransformation der Pole ]fk und Nullstellen ]0l eines Tiefpasses auf die Pole zfk und Nullstellen z0l eines Wunschsystems als Tiefpass (TP), Hochpass (HP), Bandpass (BP) oder Bandsperre (BS) Frequenztransformation der Pole und Nullstellen
z
Tiefpass
Entwurfsparameter mit der Eckkreisfrequenz des Prototyp-TP :c,]
D
] D D ] 1
§ :c,] sin ¨ © § :c,] sin ¨ ©
:c, z · ¸ 2 ¹ :c, z · ¸ 2 ¹
mit der gewünschten Eckkreisfrequenz des TP :c,z
z
Hochpass
D
] D D ] 1
§ :c,] cos ¨ © § :c,] cos ¨ ©
:c, z · ¸ 2 ¹ :c, z · ¸ 2 ¹
mit der gewünschten Eckkreisfrequenz des HP :c,z 2
z1,2
p § p· r ¨ ¸ q 2 ©2¹
D
mit den Hilfsvariablen Bandpass
p
2 D E ] 1 E 1 ] E 1
q
E 1 ] E 1 E 1 ] E 1
E
mit den gewünschten oberen und unteren normierten Eckkreisfrequenzen des BP :o,z bzw. :u,z
p § p· r ¨ ¸ q 2 ©2¹
D
mit den Hilfsvariablen Bandsperre
p
2 D 1 ] 1 E ] E 1
q
1 E ] E 1 1 E ] E 1
· ¸ ¹ · ¸ ¹
§ :c,] · § : o, z : u, z · cot ¨ ¸ ¸ tan ¨ 2 © ¹ © 2 ¹
2
z1,2
§ : : u, z cos ¨ o, z 2 © § : : u, z cos ¨ o, z 2 ©
E
§ : : u, z cos ¨ o, z 2 © § : : u, z cos ¨ o, z 2 ©
§ : o, z : u, z tan ¨ 2 ©
· ¸ ¹ · ¸ ¹
§ :c,] · · ¸ ¸ tan ¨ ¹ © 2 ¹
mit den gewünschten oberen und unteren normierten Eckkreisfrequenzen der BS :o,z bzw. :u,z
148
12 Entwurf digitaler IIR-Filter
12.2.7
Vorbereitende Aufgaben zu den Transformationen
A12.6
Entwerfen Sie durch bilineare Transformation des BWTP 3. Ordnung nach A12.3 ein Tiefpassfilter im Zeitdiskreten. Die normierte 3dB-Grenzkreisfrequenz soll dabei :3dB = S / 5 sein. Hinweis: Verwenden Sie für die Pole direkt die normierten dimensionslosen Größen sfk aus A12.4. Tabelle 12-6 Pole des zeitdiskreten Butterworth-Tiefpassfilters
Transformationsparameter
Pole des zeitdiskreten Systems
zf1 =
D =
zf2 = zf3 =
A12.7
Skizzieren Sie das Pol-Nullstellendiagramm des zeitdiskreten Systems aus A12.6. Beachten Sie dabei, dass bei der bilinearen Transformation, die Nullstellen für s o f auf z = 1 abgebildet werden. Ergänzen Sie deshalb für jeden Pol eine Nullstelle. Im(z) Einheitskreis
z
Re(z) 1
Bild 12-8 Pol-Nullstellendiagramm des zeitdiskreten Tiefpasses in der komplexen z-Ebene
A12.8
Auf welcher Ortskurve liegen die Pole in der z-Ebene? Tragen Sie die Ortskurve in Bild 12-8 ein. Hinweis: Siehe z. B. 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 HBWTP(z = 1) = 1. HBWTP(z) =
12.2 Entwurf eines Butterworth-Tiefpassfilters
149
12.2.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 ein Butterworth-Tiefpassfilter 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 die weiter unten stehende 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 10-2 unterscheidet, verwenden Sie aus Gründen der Vergleichbarkeit die Toleranzen GD = 0.095 und GS = 0.0048.
Programmbeispiel 12-1 Entwurf eines zeitdiskreten Butterworth-Tiefpassfilters % design of IIR digital filters using MATLAB built-in % standard approximation for butterworth lowpass filter % dsplab12_1.m * mw * 04Jan2010 %% 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 % passband deviation in dB Rp = -20*log10(1-Dp); 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 % filter viewer fvtool(b,a)
M12.3
Diese Aufgabe küpft an die Bandpassfilterung von Audiosignalen in Versuch 10, M10.5, an. Es wird wieder eine Bandbegrenzung auf das herkömmliche Telefonband betrachtet, also im Wesentlichen auf das Frequenzband von 300 bis 3400 Hz. Für das Audiosignal legen Sie wie in M10.5 die CD-AD-typische Abtastfrequenz von 44.1 kHz zugrunde und nutzen die Abtastratenreduktion in Bild 10-6. Für die Bandpassfilterung entwerfen Sie durch Frequenztransformation ein Butterworth-Bandpassfilter mit der unteren und der oberen 3dB-Grenzfrequenz fu = 600 Hz bzw. fo = 2400 Hz.
150
12 Entwurf digitaler IIR-Filter Hinweise: (i) Verwenden Sie der Einfachheit halber zur Abtastreduktion das linearphasige FIR-Tiefpassfilter aus Versuch 10. (ii) Gehen Sie vom Butterworth-Tiefpass 3. Ordnung in A12.9 aus. Entwerfen Sie das Bandpassfilter durch Frequenztransformation nach Tabelle 12-5. Schreiben Sie dazu ein MATLAB-Programm, bei dem Sie die Eckfrequenzen vorgeben können. Überprüfen Sie Ihr Transformationsergebnis mit dem MATLAB-Werkzeug fvtool. Achten Sie auf Zahl und Lage der Pole vor und nach der Transformation. Diskutieren Sie die Ergebnisse. Hören Sie sich das ursprüngliche Audiosignal, z. B. colors.wav, und seine gefilterte Version an. Anmerkungen: (i) Die TP-BP-Transformation kann auch ohne Abtastratenreduktion in der Signalverarbeitung vorgenommen werden und liefert für die MATLAB-Simulation ein brauchbares Ergebnis. Für praktische Anwendungen in ähnlichen Fällen ist jedoch wichtig, dass die Pole in der komplexen z-Ebene nicht zu nahe bei z = 1 liegen. Wie in Versuch 17 noch ausführlich dargelegt wird, sind Pole dort problematisch, wenn die Filterkoeffizienten später in Festkommaarithmetik bei geringer Wortlänge quantisiert werden müssen. Durch die Abtastratenreduktion wird das Problem entschärft. (ii) Sie können später auch noch der Frage nachgehen: Was geschieht, wenn die Bandbreite eines Audiosignal weiter eingeschränkt wird? Dabei können Sie auch Butterworth-Filter höherer Ordnungen, also mit steileren Filterflanken, einsetzten, die Sie, wie im nächsten Abschnitt vorgestellt, mit dem MATLABWerkzeug fdatool entwerfen können.
12.3
IIR-Filterentwurf mittels Standardapproximationen analoger Tiefpassfilter
Chebyshev- und Cauer-Tiefpassfilter werden ähnlich wie das Butterworth-Tiefpassfilter in Abschnitt 12.2 entworfen. An die Stelle des Potenzverhaltens in der Leistungsübertragungsfunktion (12.1) treten nun Chebyshev-Polynome bzw. jacobische elliptische Funktionen. Damit ist die Chebyshev-Approximation sichergestellt, d. h. optimale Nutzung der Durchlass- und oder Sperrtoleranz zur Aufwandsreduktion. Das Lösungsverfahren ändert sich nicht grundsätzlich, jedoch sind die Lösungen charakteristisch für den jeweils verwendeten Funktionstyp. 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 zur Filteranalyse und zum Filterdesign fdatool vorzunehmen und die Lösungen für die verschiedenen Filtertypen zu vergleichen. M12.4
Wiederholen Sie den Filterentwurf für das Butterworth-Tiefpassfilter entsprechend der Aufgabe A12.2 und M12.2. Verwenden Sie diesmal das MATLAB-Werkzeug fdatool, siehe Bild 12-9. Hinweis: Beachten Sie die Unterschiede im Toleranzschema zwischen Bild 10-5 und Bild 12-9 für den FIR- bzw. IIR-Entwurf. Diskutieren Sie das Entwurfsergebnis anhand der Grafiken. Notieren Sie sich die Filterordnung. Vergleichen Sie die Filterordnung des digitalen Butterworth-Tiefpassfilters mit der des analogen in A12.2. Erklären Sie den Unterschied.
12.3 IIR-Filterentwurf mittels Standardapproximationen analoger Tiefpassfilter
151
Bild 12-9 Anwendung des MATLAB-Werkzeugs fdatool zum Entwurf eines IIR-Tiefpassfilters. 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 auch MATLABDokumentation für cheby1, cheb1ord, cheby2, cheb2ord, ellip, ellipord.
M12.5
Wiederholen Sie den Entwurf für einen Chebyshev-I-Tiefpassfilter entsprechend der Aufgabe A12.2. Verwenden Sie der Einfachheit halber das MATLAB-Werkzeug fdatool. Diskutieren Sie das Entwurfsergebnis anhand der Grafiken. Notieren Sie sich die Filterordnung.
M12.6
Wiederholen Sie den Entwurf für ein Chebyshev-II-Tiefpassfilter und diskutieren Sie das Resultat anhand der angezeigten Bilder. Was fällt Ihnen am Frequenzgang der Phase besonders auf? Notieren Sie sich die Filterordnung.
M12.7
Wiederholen Sie den Entwurf für ein Cauer-Tiefpassfilter und diskutieren Sie das Entwurfsergebnis anhand der Grafiken. Notieren Sie sich die Filterordnung.
M12.8
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 ergibt sich aus der Filterstruktur in Bild 12-1 bzw. 10-1.
152
12 Entwurf digitaler IIR-Filter Vergleichen Sie die entworfenen Filter miteinander und diskutieren Sie die Ergebnisse. Tabelle 12-7 Vergleich der entworfenen digitalen Tiefpassfilter bzgl. ihrer Komplexität
Tiefpassfilter
Struktur
Ordnung
Zahl der Multiplikationen pro Zeitschritt
Fourier-Approximation mit Kaiserfenster1 Chebyshev1
FIR
Butterworth Chebyshev-I Chebyshev-II Cauer 1
M12.9
Siehe Versuch 10
In der letzten Aufgabe sollen Sie einen IIR-Bandpass entwerfen und damit ein Audiosignal filtern. Um einen Vergleich mit der Lösung durch einen FIR-Bandpass herstellen zu können, werden die gleichen Vorgaben wie in Versuch 10, M10.5, verwendet. a) Entwerfen Sie mit dem MATLAB-Werkzeug fdatool ein Cauer-Bandpassfilter mit den Frequenzparametern fstop1 = 300 Hz, fpass1 = 600 Hz, fpass2 = 3000 Hz und fstop2 = 3400 Hz. Im Sperrbereich wird die Dämpfung 40 dB gefordert. Die Toleranz im Durchlassbereich beträgt 1dB. Welche Filterordnung wird benötigt? Anmerkungen: (i) Da der Entwurf auf einen Prototyptiefpass und der Frequenztransformation beruht, wird ein einheitliches Sperrverhalten umgesetzt. (ii) Hier ist ein Butterworth-Bandpass wegen der notwendigen hohen Ordnung weniger geeignet.
b) Exportieren Sie die Filterparameter SOS und G in den Arbeitsspeicher, siehe Bild 12-10. Anmerkung: Die Bedeutung der Filterparameter SOS (second order systems) und G (gain) wird in Versuch 17 diskutiert.
c) Es wird eine Abtastratenreduktion wie in Bild 10-6 mit dem linearphasigen FIR-Tiefpassfilter aus Versuch 10 durchgeführt, siehe auch M12.3.
Bild 12-10 Menü Export
12.3 IIR-Filterentwurf mittels Standardapproximationen analoger Tiefpassfilter
153
Die Koeffizienten des Bandpassfilters für den MATLAB-Befehl filter erhalten sie durch die Umwandlung [b,a] = sos2tf(SOS,G);
Eine mögliche MATLAB-Realisierung stellt das Programmbeispiel 12-2 vor. Gegebenenfalls müssen Sie die Filterkoeffizienten des Tiefpasses erst in den Arbeitsspeicher laden, siehe Versuch 10 numTP.mat. Programmbeispiel 12-2 Filterung mit IIR-Bandpassfilter nach Abtastratenreduktion % IIR bandpass filtering of Audio signal - with subsampling % needs workspace variables NumTP, G and SOS % dsplab12_5.m * mw * 06Jan2011 %% Audio signal [y,fs,nbits] = wavread('guitar'); y = .5*(y(:,1)+y(:,2)); % stereo to mono soundsc(y,fs) %% Subsampling (factor 4) y = conv(y,NumTP); y = y(1:2:end); fs = fs/2; y = conv(y,NumTP); y = y(1:2:end); fs = fs/2; %% BP filter [b,a] = sos2tf(SOS,G); % filter coefficients yBP = filter(b,a,y); soundsc(yBP,fs)
M12.10
Im MATLAB-Werkzeug fdatool steht der Pole/Zero Editor zur Verfügung. Über die Schaltleiste am linken Fensterrand, 3. Knopf von unten, wird er aufgerufen. Mit dem Pole/Zero Editior kann man unter anderem die Pole und Nullstellen eines Filters per Mauszeiger bewegen und die Änderungen im Betragsfrequenzgang, der Impulsantwort usw. unmittelbar beobachten. Rufen sie den Pole/Zero Editor mit dem Tiefpass aus M12.9 auf und machen Sie sich durch Verschieben der Pole und Nullstellen deren Einfluss auf den Betragsfrequenzgang anschaulich klar, siehe auch Abschnitt 11.1.
Hinweise zu MATLAB-Funktionen und M-Files Tabelle 12-8 MATLAB-Befehle Benutzte Programme und Dateien, siehe auch vorherige Versuche
Funktionen der Signalverarbeitung für den Filterentwurf
butter, butterord, cheby1, cheb1ord, cheby2, cheb2ord, ellip, ellipor,
Filterentwurfs- und Filteranalysewerkzeug mit grafischer Bedienoberfläche Processing
fdatool, fvtool, pole/zero editor
Funktionen der Signalverarbeitung
freqs, freqz, zp2tf, sos2tf
Laden und speichern von Variablen in und aus dem Arbeitsspeicher
load, save
Þ Onlineressourcen
dsplab12_1.m, dsplab12_2.m, dsplab12_3.m, dsplab12_4.m, colors.wav, guitar.wav, numTP.mat
154
13
Lernkontrollfragen zu FIR- und IIR-Systemen und zum Filterentwurf
Dieser Abschnitt stellt einige Aufgaben und Fragen zu FIR- und IIR-Systemen, ihren Eigenschaften sowie ihren Entwurf, bereit, die sich zu einer versuchsübergreifenden Wiederholung nutzen lassen. 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 in etwa 45 Minuten ohne PC zu lösen sind. Abschließend finden Sie eine Zusammenstellung von Auswahlfragen.
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 und Übertragungsfunktion a) Geben Sie zum kausalen System mit der Übertragungsfunktion H1 ( z )
z 1 z 2 z2
die Impulsantwort an. b) Betrachten Sie nun die Übertragungsfunktion eines kausalen Systems
H 2 ( z)
z 2 z
In welchem Zusammenhang stehen die Impulsantworten der beiden Systeme? Begründen Sie Ihre Antwort.
M. Werner, Digitale Signalverarbeitung mit MATLAB®, DOI 10.1007/978-3-8348-8621-7_13, © Vieweg+Teubner Verlag | Springer Fachmedien Wiesbaden GmbH 2012
13.1 Aufgabenkatalog A
155
Aufgabe 13A3 Impulsantwort Die Impulsantwort eines Systems ist §S · °si ¨ 4 n 7 ¸ für n = 0:14 ° © ¹ h[n ] ® °0 sonst °¯
a) Skizzieren Sie die Impulsantwort für n = 0:16. b) Charakterisieren Sie das System. Aufgabe 13A4 Filterentwurf In Bild 13-1 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 im linearen Maß an. c) Geben Sie die untere und die obere normierte Durchlasskreisfrequenz an. d) Welche Ordnung hat das System? e) Geben Sie die Nullstellen des Systems an. Hinweis: Entnehmen Sie geeignete Schätzwerte aus der Grafik. Magnitude Response (dB) 0
Magnitude (dB) (normalized to 0 dB)
-10
-20
-30
-40
-50
0
0.1
0.2
0.3
0.4 0.5 0.6 Normalized Frequency ( uS rad/sample)
0.7
Bild 13-1 Betragsgang (fdatool)
0.8
0.9
156
13 Lernkontrollfragen zu FIR- und IIR-Systemen und zum Filterentwurf
Aufgabe 13A5 Systemeigenschaften und Pol-Nullstellendiagramme In Bild 13-2 werden die Pol-Nullstellendiagramme von fünf 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 kausalen Systemen in Bild 13-2 System
stabil
minimalphasig
maximalphasig
rekursiv
c
d
e
f
g
Im (2)
Im
z
(2)
Re
System c
Im
z Re
Re
System d
Im
System e
Im
z
z
Re
System f
z
Re
System g
Bild 13-2 Pol-Nullstellendiagramme der Systeme 1 bis 5
13.2 Aufgabenkatalog B
13.2
157
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 Betragsgang, 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
158
13 Lernkontrollfragen zu FIR- und IIR-Systemen und zum Filterentwurf
Aufgabe 13B3 Filterentwurf In Bild 13-5 sind das Pol-Nullstellendiagramm und der Betragsgang eines digitalen Filters zu sehen, welches mit dem MATLAB-Werkzeug fdatool entworfen wurde. a) Welches Standardapproximationsverfahren wurde benutzt? Begründen Sie Ihre Antwort. b) Geben Sie die Sperrtoleranz im linearen Maß an. c) Geben Sie die Durchlass- und Sperrkreisfrequenz an. d) Welche Ordnung hat das System? Hinweis: Entnehmen Sie geeignete Schätzwerte aus den Grafiken. Pole/Zero Plot 1.5
1
Imaginary Part
0.5
28
0
-0.5
-1
-1.5 -3.5
-3
-2.5
-2
-1.5 -1 Real Part
-0.5
0
0.5
1
Magnitude Response (dB) 0 -10 -20
Magnitude (dB)
-30 -40 -50 -60 -70 -80 -90 0
0.1
0.2
0.3
0.4 0.5 0.6 Normalized Frequency ( uS rad/sample)
0.7
0.8
0.9
Bild 13-5 Pol-Nullstellendiagramm (oben) und Betragsgang (unten) (fdatool)
13.2 Aufgabenkatalog B
159
Aufgabe 13B4 Pol-Nullstellendiagramm In Bild 13-6 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 Imaginary Part
Imaginary Part
0.5 0.2 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
0.5 Real Part
1
1.5
2
2.5
3
Bild 13-6 Pol-Nullstellendiagramme (fdatool)
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-7 zu sehen. a) Ordnen Sie die Impulsantworten den Filtern zu. Begründen Sie Ihre Antwort. b) Schätzen Sie die jeweiligen normierten Eckkreisfrequenzen ab.
Impulse Response Impulse Response
0.25 0.25
0.2
0.2 0.15
0.15
Amplitude
Amplitude
0.1 0.05 0 -0.05
0.1
0.05
-0.1
0
-0.15 -0.2
-0.05 -0.25 0
5
10
15 Samples
20
25
0
5
10
15 Samples
Bild 13-7 Impulsantworten (fdatool)
20
25
160
13 Lernkontrollfragen zu FIR- und IIR-Systemen und zum Filterentwurf
13.3
Auswahlfragen
Welche der folgenden Aussagen sind uneingeschränkt richtig? Kreuzen Sie die richtigen Aussagen an. Mindestens eine Antwortalternative bzw. Aussage ist jeweils richtig (x aus 5). Zu Versuch 8: Faltung Differenzengleichung und Systeme a)
Werden zwei Folgen gleicher endlicher Länge L miteinander gefaltet, so besitzt das Faltungsprodukt die Länge 2L.
{
Das Eingangs-Ausgangsverhalten der FIR-Filter wird durch die Faltung des Eingangssignals mit der Impulsantwort charakterisiert.
{
c)
Ableiten der Phase liefert die negative Gruppenlaufzeit.
{
d)
Rekursive Systeme werden mit dem Goertzel-Algorithmus realisiert.
{
e)
Die z-Transformation der Differenzengleichung eines Systems führt auf die Übertragungsfunktion des Systems.
{
b)
Zu Versuch 9: Finite-duration-impulse-response-Systeme a)
FIR-Filter können ohne Signalrückführung realisiert werden.
{
b)
FIR-Filter können eine verallgemeinerte lineare Phase aufweisen.
{
c)
Spiegeln einer Nullstelle am Einheitskreis ändert den Betrag des Frequenzgangs nicht. {
d)
Für FIR-Filter ist die Realisierung in Transversalform typisch.
{
e)
Rellwertige FIR-Filter haben nur konjugiert komplexe Nullstellenpaare.
{
Zu Versuch 10: Entwurf von FIR-Filtern a)
Der Filterentwurf mit Fourier-Approximation minimiert den mittleren quadratischen Fehler des Frequenzgangs.
{
Mit der Equiripple-Methode werden FIR-Filter nach dem Kriterium der ChebyshevApproximation entworfen.
{
c)
Mit der Fourier-Approximation mit Kaiserfenster lassen sich nur FIR-Tiefpässe entwerfen.
{
d)
Sind die Abweichungen des Frequenzgangs vom Wunschfrequenzgang im Durchlass- und im Sperrbereich gleich, so spricht man von einem Equiripple-Verhalten. {
e)
Die Fensterung im Zeitbereich entspricht im Frequenzbereich der Multiplikation der Frequenzgänge.
b)
{
Zu Versuch 11: Infinite-duration-impulse-response-Systeme a)
IIR-Filter 2. Ordnung lassen sich mit höchstens 5 Multiplikationen pro Takt realisieren. {
b)
IIR-Filter sind stabil.
{
c)
Die Partialbruchzerlegung der Übertragungsfunktion eines IIR-Filters liefert die Sprungantwort des Filters.
{
d)
Kausale IIR-Filter besitzen Pole nur im Inneren des Einheitskreises.
{
e)
Je größer der Betrag eines Pols eines kausalen stabilen Filters, desto anhaltender sein Einfluss auf die Impulsantwort.
{
13.3 Auswahlfragen
161
Zu Versuch 12: Entwurf von IIR-Filtern a)
Cauer-Filter werden bei gleicher Filterordnung Butterworth-Filtern vorgezogen, weil sie im Durchlassbereich das Wunschverhalten besonders genau approximieren. {
b)
Bei der bilinearen Transformation tritt im Frequenzgang die Arcustangens-Verzerrung auf. {
c)
Die Betragsfrequenzgänge von Butterworth-Tiefpässen sind maximal flach im Durchlassbereich und zeigen Equiripple-Verhalten im Sperrbereich. {
d)
Die Pole des Butterworth-Tiefpasses liegen in der komplexen z-Ebene auf einem Kreis. {
e)
Je größer der Übergangsbereich eines Tiefpasses, umso größer ist der Realisierungsaufwand.
{
162
14
Kenngrößen stochastischer Signale
Dieser Versuch befasst sich mit Signalen, die gemeinhin als zufällig bezeichnet werden. Betrachtet man Zufallssignale näher, so stellt man fest, dass auch der Zufall oft Regeln gehorcht, die einer empirischen Untersuchung zugänglich sind und theoretische Modelle mit praktischen Handlungsanleitungen liefern. Das Werkzeug hierfür stellt die Mathematik mit der Wahrscheinlichkeitstheorie bereit. Es hat sich als nützlich erweisen, die mathematischen Grundkenntnisse hier zunächst zu wiederholen und auch die in der Signalverarbeitung üblichen Sprech- und Schreibweisen einzuführen. Der Einführungsteil dieses Versuches stellt deshalb zunächst die grundlegenden Begriffe zu zeitdiskreten stochastischen Signalen und die Schätzung wichtiger Kenngrößen zusammen. Im praktischen Teile werden die Kenntnisse an Simulationsbeispielen erprobt. Dabei werden grundlegende Vorstellungen über elementare Eigenschaften von Zufallssignalen vermittelt, die Ihnen zukünftig helfen sollen Fehler zu vermeiden. Schlüsselbegriffe Erwartungswert, Korrelation, Histogramm, Leistungsdichtespektrum (LDS), Musterfolge, stochastischer Prozess, Wahrscheinlichkeitsdichtefunktion (WDF), Wahrscheinlichkeitsverteilungsfunktion (WVF), weißes Rauschen, Zufallszahl Lernziele Nach Bearbeiten dieses Versuchs können Sie x
die Begriffe stochastische Variable, stochastischer Prozess und Musterfunktion anhand eines Bespiels anwenden und erklären
x
die Schätzfunktionen für den linearen Mittelwert, den quadratischen Mittelwert, die Varianz und die eindimensionale und zweidimensionale Wahrscheinlichkeitsdichtefunktion auf eine Folge von Zufallszahlen anwenden und die Ergebnisse bewerten
x
den Begriff Korrelation anhand des Korrelationskoeffizienten und der Korrelationsfunktion erklären und seine Bedeutung am Beispiel eines Streudiagramms aufzeigen
x
den Begriff des weißen Rauschens für zeitdiskrete Signale erläutern
x
die Schätzfunktionen für die Autokorrelationsfunktion und das Leistungsdichtespektrum anwenden und die Ergebnisse bewerten
14.1
Stochastischer Prozess
Auch nicht vorhersagbare Signale, wie Sprachsignale, Elektrokardiogramme usw. unterliegen gewissen Regelmäßigkeiten. Der menschliche Körper, z. B. Sprachtrakt, Ohren, Augen und Herz, folgt einem physiologischen Bauplan, der allen Menschen gemeinsam ist. Die digitale Signalverarbeitung macht sich diese zunutze, indem sie die Regelmäßigkeiten erfasst und in ihren Anwendungen berücksichtigt. Hierfür setzt sie die Theorie der stochastischen Prozesse ein, und profitiert so insbesondere in übersichtlichen praktischen Situationen von der Widerspruchsfreiheit der mathematischen Logik.
M. Werner, Digitale Signalverarbeitung mit MATLAB®, DOI 10.1007/978-3-8348-8621-7_14, © Vieweg+Teubner Verlag | Springer Fachmedien Wiesbaden GmbH 2012
14.1 Stochastischer Prozess
163
Die grundsätzlichen Überlegungen motiviert Bild 14-1. Führt man ein Zufallsexperiment aus, so erhält man eine Musterfunktion (Realisierung) des zugrundeliegenden stochastischen Prozesses, wie in Bild 14-1 veranschaulicht wird. Man spricht 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 n. Je nach Anwendung kommen auch andere Interpretationen vor. So treten in der Bildverarbeitung oder bei der Verarbeitung geologischer Messdaten Ortskoordinaten als Indizes auf. Die Musterfolgen sind streng deterministisch, wie die vier Folgen 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 in der zufälligen Auswahl der Musterfolge. Wählt man hingegen einen festen Zeitpunkt n0, so resultiert aus einer Modellbetrachtung „quer zum Prozess“, dem Ensemble der Musterfolgen, eine stochastische Variable. Mit beispielsweise dem Index n = 60 könnte eine typische Fragestellung 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. x4[60] = 1, wie in Bild 14-1 unten deutlich gemacht wird.
x1[n] 2
0 2 x2[n] 2
0 2 x3[n]
2 0 2
x4[n] 2
0 2 0
20
40
60
80
Normierte Zeit n Bild 14-1 Musterfolgen eines stochastischen Prozesses
100
164
14 Kenngrößen stochastischer Signale
Die stochastischen Prozesse als geordnete Zusammenstellung von stochastischen Variablen zu sehen, liefert den Schlüssel zu ihrem Verständnis. Es erlaubt, die aus der elementaren Wahrscheinlichkeitsrechnung bekannten Methoden und Kenngrößen unmittelbar zur Beschreibung der stochastischen Prozesse heranzuziehen. Tabelle 14-1 stellt Definitionen und Schätzfunktionen einiger wichtiger Kenngrößen stationärer, reeller und zeitdiskreter Prozesse zusammen. Anmerkung: Um die Zugehörigkeiten der Kenngrößen kenntlich zu machen, werden meist Indizes hinzugesetzt, z. B. fX (x) oder PY für die stochastischen Variablen X bzw. Y. Der Einfachheit halber wird im Weiteren auf die Indizes verzichtet, wenn aus dem Zusammenhang Verwechslungen nicht zu erwarten sind. Tabelle 14-1
Wichtige Kenngrößen stationärer, reeller und zeitdiskreter Prozesse Ensemblemittelwerte (stochastisch)
Zeitmittelwerte2 (empirisch)
Prozess X[n]
Musterfolge x[n]
f (x)
Häufigkeitsverteilung (Histogramm)
Wahrscheinlichkeitsdichtefunktion (WDF) Linearer Mittelwert (Moment 1. Ordnung)
Quadratischer Mittelwert (Moment 2. Ordnung)
P
EX
(2. Zentralmoment)
m2
1
3
x f x dx
x
1 N ¦ xn N n 1
x2
1 N 2 xn N n 1
V2
f
³ x2 f x dx f
E X
2
Var X f
³
f
2
³
f
m2 Varianz, Dispersion1, Streuung,
f
V 2 P2
2
E > X P@ 2
x P f x dx
¦
Empirische Varianz3
s2
N 2 1 xn x N 1 n 1
¦
Üblich sind auch die Schreibweisen V(X) und D(X). Für die Zeitmittelwerte werden die in der Statistik üblichen Schreibweisen gewählt. Der Nenner (N1) statt N sorgt für die erwartungstreue (unbiased) Schätzfunktion. Man spricht von der korrigierten Stichprobenvarianz.
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 die Schätzwerte zu interpretieren sind. Letztendlich lassen sich wieder nur Wahrscheinlichkeitsaussagen zur Verlässlichkeit der Schätzwerte ableiten. Eine sorgfältige Diskussion der Problemstellung 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.
14.1 Stochastischer Prozess
165
Eine Messung statistischer Kenngrößen höherer Ordnung ist aufwendig und in der Regel nicht praktikabel, da der für hinreichend vertrauenswürdige Ergebnisse notwendige Stichprobenumfang mit der Ordnung wächst. Häufig muss sich die Prozessbeschreibung auf Größen 1. und 2. Ordnung beschränken, d. h. Größen, die mithilfe der eindimensionalen bzw. zweidimensionalen Wahrscheinlichkeitsdichtefunktion (WDF) definiert sind, wie z. B. der lineare Mittelwert und die Korrelation. Beispiele für stetige eindimensionale (univariate) WDFn liefern die aus der elementaren Wahrscheinlichkeitsrechnung bekannte Gleichverteilung und die Normalverteilung. Ein wichtiges Beispiel für eine zweidimensionale (bivariate) WDF ist die zweidimensionale WDF einer Normalverteilung mit dem Korrelationskoeffizienten U, dessen Bedeutung im Versuch noch genauer erläutert wird. f XY x, y
1 2 S V x V y 1 U 2 § 1 exp ¨¨ ¨ 2 1 U 2 ©
2 · ª y Py º¸ x Px y P y x P x 2 « » 2U 2 « V2 »¸ V V V x y x y »¼ ¹¸ ¬«
(14.1)
Vier weitere, für die Anwendung besonders wichtige Begriffe sind:
Normierte stochastische Variable Als normierte stochastische Variable bezeichnet man eine stochastische Variable mit linearem Mittelwert null und Varianz eins.
Unabhängigkeit Zwei stochastische Variablen X und Y sind unabhängig, wenn die gemeinsame VerbundWDF faktorisiert. f XY x, y
f X x fY y
(14.2)
Praktisch bedeutet dies, dass sich die Versuchsausgänge der stochastischen Variablen nicht gegenseitig beeinflussen und wechselseitig keine Information ausgetauscht wird.
Stationarität Ein Prozess heißt stationär, wenn die stochastischen Kenngrößen unabhängig von der Wahl des Zeitursprungs sind. Prozesse, bei denen linearer Mittelwert und Korrelationsfunktion stationär sind, werden schwach stationäre Prozesse genannt.
Ergodizität Ein Prozess heißt ergodisch, wenn prinzipiell alle stochastischen Kenngrößen durch Zeitmittelung aus einer Musterfunktion bestimmt werden können, wenn (für N o f) also gilt „Zeitmittelwerte 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 manchmal nur eine Musterfunktion zur Schätzung vor, sodass Stationarität und Ergodizität für das zugrundeliegende Modell als Arbeitshypothese angenommen bzw. aufgrund der Randbedingungen des Modells postuliert werden.
166
14 Kenngrößen stochastischer Signale
14.2
Zufallssignale
Im ersten Versuchsteil werden mit MATLAB Musterfolgen erzeugt und einfache stochastischen Kenngrößen geschätzt. Dabei soll der Einfluss des Stichprobenumfangs auf die Resultate anschaulich werden.
14.2.1
Zufallszahlen am Digitalrechner
Die Simulation von stochastischen Vorgängen an Digitalrechnern, die Monte-Carlo-Simulation, ist heute ein viel benutztes Verfahren 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. Die vielleicht wichtigste Gruppe sind die Pseudozufallszahlen. Sie werden zwar deterministisch mit rückgekoppelten Schieberegistern generiert, aber erscheinen einem Beobachter der den Algorithmus nicht kennt wie eine Folge (quasi-)zufälliger Zahlen. Obwohl bei der Simulation mit MATLAB nur deterministisch erzeugte „Zufallszahlen“ im Maschinenformat vorliegen, kann in den Versuchen für die Signale der Zufallszahlengeneratoren rand, und randn von wertkontinuierlichen Realisierungen unabhängiger Zufallszahlen ausgegangen werden, wie in Abschnitt 16 noch gezeigt wird. Die beiden MATLAB-Befehle und der Befehl randi sind in Tabelle 14-2 mit einem jeweiligen Beispiel zusammengestellt. In MATLAB werden die Zufallszahlen aus einem gemeinsamen Strom von Zufallszahlen (random number stream) abgeleitet, der von den Anwendern auch parameterisiert werden kann. Man beachte, auf den Zufallszahlenstrom kann durch unterschiedliche MATLAB-Befehle bzw. Funktionen und Programme zugegriffen werden. Für die meisten Anwendungen mit Reproduktion der Zufallszahlen genügt es, den standardmäßig eingestellten Zufallszahlenstrom auf einen bekannten Startwert zurückzusetzen. Das folgende Beispiel erläutert die Vorgehensweise. Tabelle 14-2 MATLAB-Befehle zur Generierung von Zufallszahlen MATLAB-Befehl
rand
randi
randn
Kommentar Erzeugt im Intervall ]0,1[ gleichverteilte, quasiunabhängige Zufallszahlen MATLAB-Beispiel: r = a + (b-a).*rand(100,1); Erzeugt in einem Intervall gleichverteilte, quasiunabhängige ganze Zufallszahlen MATLAB-Beispiel: r = randi([-10 10],100,1); Erzeugt normierte normalverteilte, quasiunabhängige Zufallszahlen MATLAB-Beispiel: r = 1 + 2.*randn(100,1);
14.2 Zufallssignale (i)
167
Abfragen des verwendeten Zufallszahlenstroms und speichern des aktuellen Zustands dstr = RandStream.getDefaultStream; dstrState = get(dstr,'State');
(ii)
Vor der Simulation wird der gewünschte Zustand gesetzt set(dstr,'State',dstrState)
(iii)
Soll die Simulation wiederholt werden, so ist der Startwert des Zufallszahlengenerators erneut wie in (ii) zu setzen.
Anmerkungen: (i) Bevor der MATLAB Version 7.7 (R2008b) wurden andere Kommandos als in obigem Beispiel benutzt. (ii) In besonderen Fragestellungen muss die Quasizufälligkeit bzgl. Verteilung und Korrelation von Zufallszahlengeneratoren an Computern grundsätzlich kritisch hinterfragt werden. (iii) Effiziente Algorithmen zur Erzeugung von Zufallszahlen in unterschiedlichen Anwendungsszenarien gehören zu den Kernkompetenzen der digitalen Signalverarbeitung.
14.2.2
Vorbereitende Aufgaben
A14.1
Die Schätzung der WDF beruht auf der Entnahme von Stichproben aus dem Signal und dem Zählen der Häufigkeiten der Stichprobenwerte in bestimmten Intervallen, auch Klassen genannt. MATLAB stellt hierfür den Befehl hist (Histogramm) zur Bestimmung der absoluten Häufigkeiten der Werte in der Signalfolge x bereit. h = hist(x,c) 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.
Absolute Häufigkeiten der Werte (Besetzungszahlen) h(2) h(1)
h(k)
c(1) c(2)
c(k)
Klassenmitten (Repräsentanten)
h(M-1) h(M)
(c(k)-c(k-1))/2
c(M-1) c(M)
Signalwert
(c(k+1)-c(k))/2
Bild 14-2 Bestimmung der absoluten Häufigkeiten mit dem MATLAB-Befehl hist(x,c)
Für die Aufgaben der 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 gegeben sind. Der Einfachheit halber wird eine gleichmäßige Verteilung der Intervallmitten im interessierenden Messbereich angenommen.
168
14 Kenngrößen stochastischer Signale Mit den Werten des Histogramms, den Besetzungszahlen, sollen Schätzwerte fi der WDF f(x) zu den Repräsentanten xi = ci berechnet werden. Geben Sie die Rechenvorschrift an.
fi = A14.2
Die Schätzwerte der WDF fi sollen nun 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 circa 99.73 % innerhalb des Messbereichs auftreten. Geben Sie die untere und obere Bereichsgrenze, xu bzw. xo, an.
xu =
xo =
Hinweis: siehe das gaußsches Fehlerintegral )(x) für x t 0, und die MATLABFunktionen erf (error function) und erfinv (inverse error function).
) x
1 ª § x ·º «1 erf ¨ ¸» 2 ¬ © 2 ¹¼
(14.3)
14.2.3
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, sodass sich die Verteilung der Amplitudenwerte an der Papierschwärzung sichtbar wird. Erzeugen Sie mit den MATLAB-Befehlen rand und randn Musterfolgen der Länge 400 und veranschaulichen Sie die Musterfolgen durch ein Streudiagramm.
M14.2
Bestimmen Sie die Spannweite, den linearen Mittelwert, die Standardabweichung, die Varianz und das zweite Moment von Stichproben der Zufallszahlenfolgen zum MATLAB-Befehl randn. Starten Sie den Zufallszahlengenerator mit jeweils gleichem Startzustand. Verwenden Sie die MATLAB-Befehle mean, std und var und beachten Sie die Optionen zur Normierung. Die Spannweite der Stichprobe ist gleich dem Maximalwert minus dem Minimalwert der beobachteten Zufallszahlen.
14.2 Zufallssignale Tabelle 14-3
169 Schätzwerte bei verschiedenen Stichprobenumfängen für eine normierte Normalverteilung N(0,1)
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-4 ein. Starten Sie dazu den Zufallszahlengenerator mit jeweils unterschiedlichen Startzuständen. Tabelle 14-4
Schwankung der Schätzwerte des linearen und quadratischen Mittelwerts einer normierten Normalverteilung bei einem Stichprobenumfang von 1000
Stichprobe
1
2
3
4
Linearer Mittelwert Quadratischer Mittelwert
M14.3
Schätzen Sie die eindimensionale WDF der mit randn erzeugten Zufallszahlenfolge. Setzen Sie die Zahl der Messintervalle (Klassen) auf circa 10 und variieren Sie den Stichprobenumfang wie in Tabelle 14-3. Wählen Sie dabei die Klassenmitten so, dass die Randintervalle des Histogramms mit großer Wahrscheinlichkeit nicht besetzt werden, siehe Aufgabe A14.3. Stellen Sie die Ergebnisse grafisch dar. Hinweis: siehe MATLAB-Befehle hist für die Bestimmung der absoluten Häufigkeiten und bar zur grafischen Darstellung der normierten relativen Häufigkeiten. Welchen Einfluss hat der Stichprobenumfang auf die Schätzwerte? Welchen Einfluss hat die Klasseneinteilung auf die Schätzwerte? Überlegen Sie, was geschieht bei einer immer feineren Klasseneinteilung?
M14.4
Bestimmen Sie die relativen Häufigkeiten der Amplituden eines Sprachsignals, z. B. aus der Datei speech.wav. Gehorcht das Sprachsignal einer Normalverteilung?
170
14 Kenngrößen stochastischer Signale
14.3
Korrelationsfunktion stochastischer Prozesse
14.3.1
Korrelation, Korrelationsfunktion und Leistungsdichtespektrum
Zur Charakterisierung des wechselseitigen Einflusses zweier stochastischer Variablen wird oft der Produkterwartungswert der beiden stochastischen Variablen herangezogen, auch ProduktMoment-Korrelation genannt. E X1 X 2
f
³
x1 x2 f X1X 2 x1 , x2 dx1dx2
(14.4)
f
Wegen der zweidimensionalen WDF handelt es sich dabei um eine Größe 2. Ordnung. Es werden die linearen Abhängigkeiten erfasst, weil die stochastischen Variablen linear in die Definitionsgleichung eingehen. Von unkorrelierten stochastischen Variablen spricht man, falls das Produkt der Erwartungswerte resultiert. 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. Stochastische Variablen sind orthogonal, falls der Produkterwartungswert null ist. E X1 X 2
0
(14.6)
Von besonderer Bedeutung sind die Kovarianz
Cov X1 , X 2
E > X1 P1 @ > X 2 P2 @
(14.7)
Cov X1 , X 2 V1 V 2
(14.8)
und der Korrelationskoeffizient
U12
Der Korrelationskoeffizient ist als Erwartungswert des Produkts der standardisierten stochastischen Variablen definiert. Durch die Normierung erhält man stets 1 d U d 1
(14.9)
Je größer der Betrag des Korrelationskoeffizienten, umso größer ist die lineare Abhängigkeit zwischen den stochastischen Variablen. Für U = 1 nehmen die stochastischen Variablen X1 und X2 mit Wahrscheinlichkeit eins den gleichen Wert an. Ist der Korrelationskoeffizient U = 0, sind die stochastischen Variablen unkorreliert. Anmerkungen: (i) Für die normalverteilten stochastischen Variablen folgt aus unkorreliert auch unabhängig, wie das Einsetzen von U = 0 in die bidimensionale WDF der Normalverteilung (14.1) zeigt. (ii) In der schließenden (induktiven) Statistik spielt der Korrelationskoeffizient einer herausragende Rolle, z. B. bei der linearen Regression. Ist der Korrelationskoeffizient relativ groß, so lassen sich gut „Vorhersagen“ treffen; Aussagen zu „Ursache und Wirkung“ können aus der Korrelation nicht abgeleitet werden.
14.3 Korrelationsfunktion stochastischer Prozesse
171
Zur Charakterisierung des linearen Zusammenhangs von Zufallsfolgen werden die Autokorrelationsfolge (AKF) und ihre Fouriertransformierte, das Leistungsdichtespektrum (LDS), in Tabelle 14-5 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 empirisch bestimmbar. Beachten Sie auch, dass die AKF an der Stelle null, RXX[0], gleich der Leistung des Prozesses ist, siehe Schätzung des quadratischen Mittelwertes in Tabelle 14-1. Anmerkung: Der Formelbuchstabe l für die Verschiebung, der Zeitabstand der betrachteten stochastischen Variablen, leitet sich aus dem englischen Wort lag ab. Tabelle 14-5 Ausgewählte Kenngrößen 2. Ordnung von zeitdiskreten reellen stationären Prozessen
Verbund-WDF 2. Ordnung
Autokorrelationsfolge (AKF) mit der Verschiebung l=mn
Leistungsdichtespektrum (LDS)
Scharmittelwerte (stochastisch)
Zeitmittelwerte1 (empirisch)
Prozesse X[n], Y[n]
Musterfolgen x[n], y[n]
f X n X m x1, x2 ; R XX >l @ f f
³ ³
E Xn Xm x1 x2 f X n X m x1, x2 dx1dx2
f f
S XX :
Häufigkeitsverteilung
f X nYm x1, x2
(3D-Histogramm) Zeit-Autokorrelationsfolge
x >n l @ x >n @ N 1 x >n l @ x >n@ N of 2 N 1 n N
¦
lim
f
¦ RXX >l @ e j:l
Periodogramm
l f
Zeit-Kreuzkorrelationsfolge Kreuzkorrelationsfolge (KKF) mit der Verschiebung l = m n
1
R XY >l @ E X n Ym f f
³ ³
f f
x1 x2 f X nYm x1, x2 dx1dx2
x >n l @ y >n@ N 1 x >n l @ y >n@ N of 2 N 1 n N
lim
¦
Für die Zeitmittelwerte wird, wegen der Stationarität der Prozesse, von nach beiden Seiten unendlich ausgedehnten Musterfolgen ausgegangen. Für die Verschiebung l sind alle ganzen Zahlen zugelassen, sodass sich zweiseitige Korrelationsfolgen ergeben.
14.3.2
Weißes Rauschen
Von besonderer Bedeutung in vielen Anwendungen sind unkorrelierte Prozesse, auch weißes Rauschen genannt: Die stochastischen Variablen sind mittelwertfrei und zueinander unkorreliert, weisen also untereinander keine linearen Abhängigkeiten auf. Die AKF eines unkorrelierten Prozesses ist eine mit der Leistung des Prozesses gewichtete Impulsfunktion.
172
14 Kenngrößen stochastischer Signale R XX > l @ V 2 G > l @
(14.10)
Wegen der Mittelwertfreiheit sind das zweite Moment (Leistung) und die Varianz gleich, siehe Tabelle 14-1. In Formeln wird meist die Varianz eingesetzt. Das LDS eines unkorrelierten Prozesses X ist demzufolge konstant im gesamten Frequenzbereich. S XX : V 2 :
(14.11)
In Anlehnung an die additive Farbmischung der Optik wird ein derartiger Prozess ein weißer Prozess genannt, da alle möglichen Spektralanteile vorhanden sind. Wegen der scheinbar regellosen Abfolge der Signalwerte, 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. Anmerkungen: (i) In Bild 14-1 liegen augenfällig Musterfolgen eines korrelierten Prozesses vor. (ii) Man beachte auch den Unterschied zu weißem Rauschen und dem Farbeindruck weiß bei Menschen, bei dem die Spektralkomponenten aus physiologischen Gründen in einem bestimmten, ungleichmäßigen Leistungsverhältnis zueinander liege, siehe Photorezeptorzellen.
In der digitalen Signalverarbeitung wird oft von dem Modell eines normalverteilten weißen Rauschens ausgegangen. Der Grund dafür liegt erstens darin, dass das Rauschen „normalerweise“ so verteilt ist, siehe später zentraler Grenzwertsatz in Versuch 15. Zweitens erhält man eine relativ einfache mathematische Beschreibung, weil im Sonderfall der Normalverteilung unkorrelierte stochastische Variablen auch unabhängig sind. 3 2
x[n] o
1 0 -1 -2 -3
0
10
20
30
40
50 no
60
70
80
90
100
Bild 14-3 Musterfolge eines normalverteilten weißen Prozesses
14.3.3
Schätzung der Autokorrelationsfunktion
Die Schätzung der AKF und des LDSs spielt in vielen Anwendungen eine große Rolle, da AKF und LDS mit der zentralen physikalischen Größe Leistung verbunden sind. Je nach Randbedingung und Aufgabenstellung werden unterschiedliche Schätzmethoden eingesetzt. Wir beschränken uns in diesem Versuch beispielhaft auf den grundlegenden Algorithmus und seine effiziente Anwendung. Zur Schätzung der AKF kann, die Ergodizität vorausgesetzt, der Zeitmittelwert in Tabelle 14-5 über einen Signalblock der Länge N herangezogen werden.
14.3 Korrelationsfunktion stochastischer Prozesse Rˆ XX >l @
1 N 1 x > n l @ x > n @ für l N 1 n 0
¦
173
0,1,! , L
(14.12)
Anmerkungen: (i) Bei Mittelwertfreiheit und l = 0 erhält man die bekannte Formel für die empirische Streuung s2 in Tabelle 14-1. (ii) Wie in Versuch 8 schon erwähnt wurde, kann die Schätzfunktion als Faltung, genauer Pseudofaltung, der Musterfolge der Länge N interpretiert werden.
Weil die AKF eines reellen Prozesses stets 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 werden oft die Schätzwerte mehrerer Blöcke gemittelt.
14.3.4
Schätzung des Leistungsdichtespektrums
Aus der gemessenen AKF lassen sich Schätzwerte für das LDS mit der diskreten Fouriertransformation (DFT) berechnen. Voraussetzung dafür ist, dass die AKF für alle wesentlichen Werte der Verschiebung l erfasst wurde, d. h. R XX >l @ | 0 l t L
(14.13)
Anderenfalls ergeben sich Fehler ähnlich der Fensterung in der Kurzzeit-Spektralanalyse. Darüber hinaus kann das LDS durch Auffüllen mit Nullen (Zero-padding) in einem engeren Frequenzraster dargestellt werden. Programmbeispiel 14-1 enthält eine hierzu geeignete MATLAB-Kommandozeile. Beachten Sie 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. Schließlich werden in der Mitte Nullen eingefügt. Man beachte, 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 nicht-parametrische Spektralschätzung. Alternativ können mit parametrischen Schätzverfahren die Parameter, z. B. Pole und Nullstellen, eines Modellprozesses bestimmt werden, womit das (geschätzte) LDS berechnet werden kann.
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. Dabei wird das LDS durch die Betragsquadrate der DFT-Koeffizienten geschätzt. Aufgrund des Zufallscharakters 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.
174
14 Kenngrößen stochastischer Signale
Das Verfahren ist in Bild 14-4 illustriert. Ähnlich wie bei der Kurzzeit-Spektralanalyse mit dem Spektrogramm in Versuch 6 werden aus der Musterfolge x[n] mit der Fensterfolge w[n] Blöcke der Länge N herausgeschnitten. Für jeden Block wird die DFT berechnet. Die Signalblock i Betragsquadrate der DFT-Koeffizienten werden jeweils über die Blöcke gemittelt. w[nk]
Die Signalblöcke überlagern sich dabei mittig, um bei relativ kurzen Musterfolgen genügend Blöcke für die Mittelung zur Verfügung zu haben. Ist die Musterfolge n ni ni + N1 sehr lang, so kann auf das Überlappen der Blöcke verzichtet werden. Da dann keine Signalwerte doppelt verwendet werden, Bild 14-4 Zerlegung einer Musterfolge mit der Fensterfolge w[n] in überlappende nimmt in diesem Fall die statistische Blöcke der Länge N Zuverlässigkeit zu. Für eine effiziente Berechnung wird meist eine Blocklänge verwendet, die eine Radix-2-FFT zulässt.
14.3.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 der lineare Zusammenhang zwischen X und Y durch den empirischen Korrelationskoeffizienten beurteilt werden. Geben sie die Stichprobenfunktion für den empirischen Korrelationskoeffizienten rxy an.
rxy =
A14.5
MATLAB stellt zwei Befehle für die Berechnung der empirischen Kovarianz bzw. des empirischen Korrelationskoeffizienten zur Verfügung. Für Vektoren x und y der Länge N liefert der Befehl C = cov(x,y);
als Ergebnis eine 2u2-Matrix zurück. Die Elemente auf der Hauptdiagonalen sind die empirischen Varianzen. C(1,1) = sum((x-mean(x)).^2))/(N-1); C(2,2) = sum((y-mean(y)).^2))/(N-1);
Die Elemente auf der Nebendiagonalen die liefern die Covarianzen. C(1,2) = sum((x-mean(x)).*(y-mean(y)))/(N-1); C(2,1) = C(1,2);
Der Befehl R = corrcoef(x,y)
14.3 Korrelationsfunktion stochastischer Prozesse
175
liefert eine Matrix mit normierten Covarianzen. 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 den MATLAB-Befehlen vertraut.
14.3.6
Versuchsdurchführung
M14.5
Der Bedeutung der Korrelation wird zunächst anhand von Streudiagrammen veranschaulicht. Erzeugen Sie die vier Zufallssignale 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 als Abszissenwerte und x1, x2, x3 bzw. x4 als Ordinatenwerte wählen. Hinweis: z. B. Grafikbefehl plot(x1,x3,’.’). Vergleichen Sie die Streudiagramme. Welche Aussagen können allgemein für x2 gemacht werden, wenn x1 des korrespondierenden Wertepaares (x1, x2) bekannt ist und umgekehrt? M14.6
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-6 ein und diskutieren Sie die Ergebnisse mit Blick auf die Streudiagramme. Tabelle 14-6 Empirische Korrelationskoeffizienten zu den Signalen x1[n] bis x4[n] Signal i
1
2
3
4
U1i M14.7
Erzeugen Sie eine wesentlich größere Stichprobe für die Signale x1[n] bis x4[n] und stellen Sie die bidimensionalen WDFn entsprechend den obigen Untersuchungen grafisch dar, siehe Bild 14-5 für ein Beispiel. 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 dsplab14_4 mit der Funktion hist2d für das zweidimensionale Histogramm im Programmbeispiel 14-2.
176
14 Kenngrößen stochastischer Signale 4 0.01
3 0.2
0.0
2
0.0
5
0 0.0 .02 1
0. 01
0.15
2
4 2
0
my
0.0
-3
-2 -4
-4
5 0.0
0. 0.0 01 2
2
0.01
0
-2
0.1
1 0.0
0.05
-2 2
0.15
2
0 4
0. 1
0.0
0 -1
0.1
0.05
0.0 5
0.1
yo
f(x,y) o
1
-4 -4
-3
xo
-2
-1
0 xo
1
2
3
4
Bild 14-5 Grafische Darstellung der zweidimensionalen WDF einer Normalverteilung (oben) und ihrer Höhenlinien (unten) (dsplab14_5) Programmbeispiel 14-2 Schätzung der zweidimensionalen WDF % Estimation of the bidimensional probability density function (pdf) % dsplab14_4.m * mw * 13Feb2011 N = 1e7; % number of samples % number of bins for (1-dim.) pdfs 1 or 2 M1 = 30; M2 = 30; 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 hist2 % 2-dim. histogram (absolute frequency) x1 = randn(N,1); x2 = randn(N,1) + x1; [c1,c2,f2d] = hist2d(x1,x2,h2d); % 2D histogram % Normalization (pdf) D1 = (MAX1-MIN1)/(M1-1); % width of bins for x1 D2 = (MAX2-MIN2)/(M2-1); % width of bins for x2 % normalization (relative frequency) f2d = f2d/(D1*D2*N); %% Graphics FIG1 = figure('Name','dsplab14_4 : bidimensional pdf','NumberTitle',... 'off','Units','normal','Position',[.4 .4 .45 .45]); surfl(c1,c2,f2d); % pdf xlabel('{\itx} \rightarrow'), ylabel('\leftarrow {\ity}') zlabel('{\itf}({\itx},{\ity}) \rightarrow') FIG2 = figure('Name','dsplab14_4 : contour lines of bidim. pdf',... 'NumberTitle','off','Units','normal','Position',[.4 .37 .45 .45]); V = [.01 .05 .10 .15 .2]; % contour lines [CS,CH] = contour(c1,c2,f2d,V); grid clabel(CS,CH,V); xlabel('{\itx} \rightarrow'), ylabel('{\ity} \rightarrow') Programmbeispiel 14-3 Bivariates Histogramm function [c1,c2,f2d] = hist2d(x,y,h2d) % Bivariate 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.
14.3 Korrelationsfunktion stochastischer Prozesse
177
% 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, c2 : bin centers with respect to x and y respectively % f2d : histogram (absolute frequency) % hist2d.m * mw * 13Feb2011 Lx = length(x); Ly = length(y); D1 = (h2d(3)-h2d(2))/(h2d(1)-1); % width of bins of x % width of bins of y D2 = (h2d(6)-h2d(5))/(h2d(4)-1); c1 = h2d(2)+D1*(0:h2d(1)-1); c2 = h2d(5)+D2*(0:h2d(4)-1); B1 = h2d(2)-D1/2; B2 = h2d(5)-D2/2; % one sequence x and y=x[n+m] if Ly==1 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); % histogram f2d = zeros(h2d(4),h2d(1)); for n=1:L f2d(y(n),x(n)) = f2d(y(n),x(n)) + 1; end return
M14.8
Verschaffen Sie sich einen ersten Eindruck, ob der MATLAB-Zufallszahlengenerator randn unkorrelierte Zufallszahlen erzeugt. Füllen Sie dazu Tabelle 14-7 aus. Für den Versuch 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-7
N 104
105
106
Schätzwerte für die AKF RXX[l] der durch den MATLAB-Befehl randn erzeugten Zufallszahlenfolge für den Stichprobenumfang N RXX[0]
max( |RXX[l]| ) für l = 1, 2, ..., 20
178
14 Kenngrößen stochastischer Signale
M14.9
Hören Sie sich eine Probe des von randn erzeugten Rauschsignals an, z. B. mit dem Befehl soundsc. Variieren Sie dabei die Grenzfrequenz (Abtastfrequenz) des Rauschsignals.
M14.10
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) zwischen den Signalwerten vor. Als Schätzwert für die Kohärenzdauer verwenden Sie die Verschiebung bis die AKF 50 % ihres Maximalwertes erstmalig unterschreitet. tc = Vergleiche Sie die Ergebnisse auch mit den Resultaten in Versuch 6, Abschnitt 6.3. Anmerkungen: (i) Zur grafischen Darstellung normieren Sie die AKF auf den Maximalwert 1 und beschriften Sie die Ordinate mit R[l]/R[0]. Für die Abszisse wählen Sie die Verschiebung l. (ii) Für das Leistungsdichtespektrum wählen Sie auch eine normierte Darstellung S(:)/Smax, mit Smax = max(S(:)). Für die Abszisse wählen Sie :/S im Intervall von 0 bis 1. (iii) Weil ein abgetastetes Signal zugrunde liegt, kann in den Grafiken auch Bezug auf die stetigen Variablen genommen werden: Also R(W)/R(0) mit der Verschiebung W in ms, und S( f )/Smax mit der Frequenz f in kHz.
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 mithilfe der Help-Funktion Erläuterungen und Beispiele am Bildschirm anzeigen lassen können, siehe auch vorherige Versuche. Tabelle 14-8 MATLAB-Befehle benutzte Programme und Dateien Grafikbefehle
clable, contour, surfl, zlabel
Mathematische Funktionen
ceil, erf, erfinv
Statistische Funktionen
corrcoef, cov, hist, histc, mean, median, mode, std, var
Funktionen der Signalverarbeitung
periodogram, rand, randi, randn, xcorr
Þ Onlineressourcen
dsplab14_1.m, dsplab14_2.m, dsplab14_3.m, dsplab14_4.m, dsplab14_5.m, histogram.m, hist2d.m, speech.wav
179
15
Stochastische Signale und LTI-Systeme
Dieser Versuch knüpft an den Untersuchungen zu den empirischen Kenngrößen von Zufallssignalen an. Im Mittelpunkt steht nun die Frage nach den Veränderungen der Kenngrößen bei Filterung der Signale mit LTI-Systemen. Schlüsselbegriffe Autokorrelationsfunktion (AKF), Leistungsdichtespektrum (LDS), lineare Abbildung, LTI-System, Mittelwert, Übertragungsfunktion, Varianz, Zufallssignal Lernziele Nach Bearbeiten dieses Versuches können Sie x
den linearen Mittelwert und die Varianz einer stochastischen Variablen durch eine lineare Abbildung einstellen
x
den linearen Mittelwert und die Varianz eines Zufallssignals nach dem Durchgang durch ein LTISystem berechnen
x
Die Zeit-Autokorrelationsfunktion und die Leistungsübertragungsfunktion eines LTI-Systems bestimmen
x
die Autokorrelationsfunktion und das Leistungsdichtespektrum eines Zufallssignals nach dem Durchgang durch ein LTI-Systems angeben
x
die Bedeutung des Korrelationskoeffizienten anhand der zweidimensionalen WDF einer Normalverteilung erläutern
15.1
Lineare Abbildung stochastischer Signale
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 häufig zusammen mit Störsignalen auf, wie z. B. thermisches Rauschen in Verstärkern oder Bildrauschen bei Kameras. Reale digitale Systeme arbeiten mit endlicher Wortlänge, sodass nach einer Multiplikation das sogenannte Rundungsrauschen entsteht. 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 anzuwenden. Die folgenden Überlegungen beschränken sich auf die Basisoperationen von LTI-Systemen: die Multiplikation eines Signals mit einer Konstanten und die Addition von Signalen.
M. Werner, Digitale Signalverarbeitung mit MATLAB®, DOI 10.1007/978-3-8348-8621-7_15, © Vieweg+Teubner Verlag | Springer Fachmedien Wiesbaden GmbH 2012
180
15.1.1
15 Stochastische Signale und LTI-Systeme
Grundlagen
Lineare Abbildung einer stochastischen Variablen Wir betrachten zunächst die Multiplikation einer stochastischen Variablen X mit einer reellen positiven Zahl a. Ein anschauliches Beispiel liefern die WDFn bei der Abbildung einer gleichverteilten stochastischen Variablen in Bild 15-1. Wichtig ist, dass die Flächen unter den WDFn als Maß für die Wahrscheinlichkeiten vor und nach der Abbildung stets eins ergeben. Dementsprechend resultiert für die allgemeine lineare Abbildung (a z 0)
a X b
Y
(15.1)
die Ergebnis-WDF als Funktion der Original-WDF
1 § y b· fX ¨ ¸ a © a ¹
fY y
(15.2)
Für lineare Mittelwerte und Varianzen folgen aus der Erwartungswertbildung allgemein
PY
a PX b
V Y2
und
a 2 V X2
fX (x)
fY (y)
Fläche = 1
Fläche = 1
1/3 2
(15.3)
0
2
1/6
x
4
2
0
2
4
y
Bild 15-1 WDF vor und nach der Abbildung Y = 2X
Addition zweier stochastischer Variablen Die Addition zweier stochastischer Variablen Y
X1 X 2
(15.4)
führt zu etwas aufwendigeren Überlegungen. Im wichtigsten Sonderfall unabhängiger stochastischer Variablen resultiert die zweidimensionale WDF aus der Faltung der WDFn. f
fY y
³
f X1 x f X 2 y x dx
(15.5)
f
Für den Fall zweier unabhängiger stochastischer Variablen Y
a X1 b X 2
(15.6)
ergibt sich unabhängig von den jeweiligen Verteilungen für den linearen Mittelwert und die Varianz der Summe stets
PY
a P X1 b P X 2
bzw.
V Y2
a 2 V X2 b 2 V X2 1
2
(15.7)
15.1 Lineare Abbildung stochastischer Signale
181
Anmerkungen: Es ist 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, was die große Bedeutung der Normalverteilung unterstreicht. Für die digitale Signalverarbeitung ist weiter interessant: Wendet man die DFT auf einen Block normalverteilter stochastischer Variablen an, so sind die DFT-Koeffizienten ebenfalls normalverteilt und umgekehrt.
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 unabhängiger, in ihrer Wirkung jeweils 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 gleichem linearen Mittelwert P und gleicher Varianzen V 2. Nach dem Grenzwertsatz von Lindeberg-Levy [BSMM99] erhalten wir durch die Abbildung Y
1
N X P ¦ i
N i 1
(15.8)
V
für N o f eine normierte, normalverteilte stochastische Variable Y.
15.1.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 stochastischer Variablen. Zeichnen Sie in Bild 15-2 die resultierende WDF der Summe ein. Hinweis: Keine lange Rechnung.
f (x)
1
x 1
0
1
2
Bild 15-2 WDF der Summe zweier unabhängiger, in [0, 1] gleichverteilter stochastischer Variablen
182
15 Stochastische Signale und LTI-Systeme
15.1.3
Versuchsdurchführung
M15.1
Den Ausgangspunkt bilden zwei in sich unabhängige, in [0,1] gleichverteilte stochastische Prozesse X1[n] und X2[n]. Erzeugen Sie mit MATLAB zwei Musterfolgen x1[n] und x2[n]. Durch y[n] = x1[n] + x2[n] erhalten Sie eine Musterfolge des Summenprozesses Y[n] = X1[n] + X2[n]. Messen Sie die WDF des Summenprozesses. Welche WDF ergibt sich?
M15.2
Wiederholen Sie den Versuch für die Addition mehrerer Prozesse, z. B. zehn. 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
Addieren Sie nun elementweise die Musterfolgen zweier unabhängiger, normalverteilter Prozesse 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.
15.2
Abbildung stochastischer Signale an LTI-Systemen
In der digitalen Signalverarbeitung liegen für FIR- oder IIR-Systeme in der Regel die typischen Blockdiagramme aus den Abschnitten 10 und 12 zugrunde. Legt man am Eingang ein Zufallssignal an, ergeben sich für die Signalverarbeitung in den LTI-Systemen nur die beiden relativ einfachen Rechenoperationen „Multiplikation mit einer Konstanten“ und „Addition mit anderen stochastischen Variablen“, also die im vorangehenden Abschnitt behandelten Rechenoperationen.
15.2.1
Grundlegende Beziehungen
Durch Filterung eines stochastischen Prozesses mit einem zeitdiskreten kausalen und reellwertigen LTI-System entsteht am Ausgang ein neuer Prozess, dessen Kenngrößen vom Eingangsprozess und dem System definiert werden. Die wichtigsten Zusammenhänge zwischen den Prozesskenngrößen am Eingang und am Ausgang sind in Tabelle 15-1 zusammengestellt. Wichtigstes Resultat der wahrscheinlchkeitstheoretischen Überlegungen ist, dass sich die Faltung der Impulsantwort mit den Musterfolgen auf die Faltung der zugehörigen Korrelationsfunktionen überträgt. Letztere entspricht im Frequenzbereich der Multiplikation der zugehörigen Leistungsdichtespektren. 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 des Systems
RYY > l @ V X2 G > l @ Rhh > l @ V X2 Rhh > l @
(15.9)
und für das LDS das Betragsquadrat des Frequenzgangs, auch die Leistungsübertragungsfunktion des Systems genannt,
15.2 Abbildung stochastischer Signale an LTI-Systemen
183
SYY : V X2 ) hh :
(15.10)
Tabelle 15-1 Stochastische Signale und zeitdiskrete, kausale und reelle LTI-Systeme Impulsantwort
h > n @ \ mit h > n @ 0 n 0
(reell und rechtsseitig)
f
¦ h >n@ e j:n n 0
H e j:
Frequenzgang
Zeit-Autokorrelationsfunktion
Rhh >l @ h > l @ h > l @
(Zeit-AKF)
f
¦ h > n @ h >l n @
n 0
Leistungsübertragungsfunktion
) hh :
(im Frequenzbereich) Energie der Impulsantwort
Rhh >0@
(Leistungsübertragungsfaktor für weißes Rauschen)
1 2S
S
³
H e j:
2
f
¦ h2 >n@
) hh : d :
n 0
S
Eingangs-Ausgangs-Gleichungen für stochastische Prozesse
Stochastischer Prozess
X[n]
LTI-System
Autokorrelationsfunktion
RXX [l]
h[n]
Leistungsdichtespektrum
SXX (:)
H(e j: )
Y [n] = X [n] * h [n] RYY [l] = RXX [l] Rhh [l] SYY (:) = SXX (:) )hh (:)
Eingang Linearer Mittelwert Quadratischer Mittelwert
Ausgang
PX 2 X
PY = PX H(1) 2 X
m2X = V + P
m2Y = RYY [0] = VY2 + PY2
Autokorrelationsfolge (AKF)
R XX >l @
RYY >l @
Leistungsdichtespektrum (LDS)
S XX :
SYY :
Kreuzkorrelationsfolge (KKF)
R XY >l @
R XX >l @ Rhh > l @ S XX : ) hh :
R XX >l @ h > l @
184
15 Stochastische Signale und LTI-Systeme
15.2.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. Hinweis: Bestimmen Sie erst die Impulsantwort des Systems, siehe Versuch 11, und berechnen Sie dann die Zeit-AKF durch Faltung. Beachten Sie, dass die Zeit-AKF eines reellen LTI-Systems eine reelle gerade Funktion ist. Es ist daher vorteilhaft, die Berechnung zunächst nur für den Fall l t 0 durchzuführen und dann die Lösung für l < 0 symmetrisch fortzusetzen. h[n] = RYY[l] = A15.4
Berechnen Sie zu Aufgabe A15.3 die AKF RYY[l] aus der Übertragungsfunktion im Bildbereich mit dem Lösungsansatz Rhh >l @ h > l @ h > l @ l ) hh z
H z H z 1
(15.12)
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. Hinweise: 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 ergibt. Dabei sind die Pole im Einheitskreis der zEbene dem rechtsseitigen Anteil der AKF und die Pole außerhalb dem linksseitigen 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.
Partialbruchzerlegung
) hh z
AKF „rechter Teil“
RYY > l t 0@
Gesuchte AKF
RYY >l @
15.2 Abbildung stochastischer Signale an LTI-Systemen Im(z)
185 z
1
Re(z)
Bild 15-3 Pol-Nullstellendiagramm der z-Transformierten der AKF RYY[l]
A15.5
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.
A15.6
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. Es genügt eine Befehlszeile.
15.2.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 WDF 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. Hinweis: Siehe MATLAB-Befehle filter, histogram.
186 M15.6
15 Stochastische Signale und LTI-Systeme Schätzen Sie die AKF und das LDS zum System mit der Übertragungsfunktion (15.11). Erregen Sie das System mit normiertem, gleichverteiltem Rauschen. Kontrollieren Sie Ihre Rechnung aus der Vorbereitung anhand der empirschen Resultate? Hinweis: Beachten Sie die Vorgabe der Mittelwertfreiheit des Eingangssignals.
Wiederholen Sie die Schätzung mit normiertem normalverteiltem Rauschen. Ergibt sich ein wesentlicher Unterschied? 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. H2 z H3 z
M15.8
0.06 z 2 0.12 z 0.06 z 2 1.3 z 0.845 0.845 z 2 1.3 z 1 z 2 1.3 z 0.845
Schätzen Sie die zweidimensionale 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 am Ausgang und ihre Höhenlinien grafisch dar. 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 (x, y)-Koordinaten in der 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 diese Häufungen mit dem Korrelationskoeffizienten stehen.
15.2 Abbildung stochastischer Signale an LTI-Systemen
187
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 mithilfe der Help-Funktion Erläuterungen und Beispiele am Bildschirm anzeigen lassen können, siehe auch vorherige Versuche. Tabelle 15-2 MATLAB-Befehle benutzte Programme und Dateien Grafikbefehle
scatter
Funktionen der Signalverarbeitung
conv, fft, filter, freqz, fvtool, impz, rand, randn, xcorr
Þ Onlineressourcen
dsplab15_1.m, dsplab15_2.m, dsplab15_3.m, dsplab15_4.m, histogram.m, hist2d.m
188
16
Analog-Digital-Umsetzung
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. Welche Konsequenzen sich daraus für die Signalverarbeitung ergeben, wird theoretisch und praktisch aufgezeigt. Schlüsselbegriffe Abtasttheorem, Abtastung, Aliasing, Analog-Digital-Umsetzer, Digitalisierung, Dynamik, Festkommaformat, Gleitkommaformat, IEEE 754-1985, Quantisierung, 6dB-pro-Bit-Regel Lernziele Nach Bearbeiten dieses Versuches können Sie y
die notwendigen Verarbeitungsschritte der Analog-Digital-Umsetzung anhand eines Blockschaltbildes skizzieren und erläutern
y
das Abtasttheorem angeben und seine Bedeutung erklären
y
die Quantisierung anhand der Quantisierungskennlinie analysieren
y
ein einfaches Modell für den Quantisierungsfehler angeben und das Verhältnis der Leistungen des (Nutz-)Signals und des Quantisierungsrauschens in Abhängigkeit der Wortlänge abschätzen
y
das Gleitkommaformat und das Festkommaformat vorstellen und bezüglich der Dynamik und Präzision bewerten
y
die Zahlendarstellung im Zweierkomplement- und im Gleitkommaformat (IEEE 754-1985) anwenden
16.1
Digitalisierung
Die Verarbeitungsschritte zur Digitalisierung eines analogen Signals zeigt Bild 16-1. Die Vorfilterung durch den Tiefpass mit der Grenzfrequenz fg kann unterbleiben, falls das Eingangssignal bereits entsprechend bandbegrenzt ist. Zunächst wird bei der zeitlichen Diskretisierung, der idealen Abtastung (Sampling Operation), jeweils alle Abtastintervalle Ts ein Abtastwert (Sample) aus dem analogen Signal entnommen. Die zeitdiskrete Abtastfolge x[n] besitzt noch wertkontinuierliche Amplituden. zeitdiskretes Signal
analoges Signal x’(t)
Tiefpass fg
x(t)
Abtastung
Abtastintervall Ts
x[n] = x(t = nTs)
digitales Signal
Quantisierung
[x[n]]Q
Quantisierungskennlinie
Bild 16-1 Digitalisierung: vom analogen zum digitalen Signal
M. Werner, Digitale Signalverarbeitung mit MATLAB®, DOI 10.1007/978-3-8348-8621-7_16, © Vieweg+Teubner Verlag | Springer Fachmedien Wiesbaden GmbH 2012
16.2 Abtastung
189
Bei der Quantisierung werden den Amplituden Werte aus dem diskreten Zeichenvorrat der 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 [TiSc10]. 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.2
Abtastung
Die Darstellung analoger Signale durch Signalwerte und deren effiziente Übertragung im Zeitmultiplex beschäftigte die Nachrichtentechnik zu Beginn des 20. Jahrhunderts. Es stand die Frage im Raum, ob ein Signal, wie z. B. die Telefonsprache, ohne Informationsverlust durch eine Folge von Signalwerten ersetzt werden kann, und welche Bedingungen dabei einzuhalten sind?
16.2.1
Abtasttheorem
Eine sinnvolle zeitliche Diskretisierung liegt vor, wenn die Veränderungen des analogen Signals durch die Abtastfolge gut wiedergegeben werden. Damit das analoge Signal aus der Abtastfolge durch eine Interpolation hinreichend genau wieder gewonnen werden kann, muss ein sich schnell änderndes Signal häufiger als ein dazu relativ langsam veränderliches Signal abgetastet werden. Diese grundsätzliche Überlegung wird im Abtasttheorem präzisiert. Abtasttheorem Eine Funktion x(t), deren Spektrum für | f | t fg null ist, wird durch die Abtastwerte vollständig beschrieben, wenn das Abtastintervall Ts, bzw. die Abtastfrequenz fs, so gewählt wird, dass Ts
1 1 d fs 2 f g
(16.1)
Die so abgetastete Funktion kann aus den Abtastwerten durch die si-Interpolation fehlerfrei rekonstruiert werden. x t
f
¦ x nTs si fs S >t nTs @
(16.2)
n f
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-Halte-Glied erzeugt zunächst ein treppenförmiges analoges Signal, das anschließend durch einen Tiefpass geglättet wird.
190
16 Analog-Digital-Umsetzung
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. Anmerkungen: (i) 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, sodass die Folge nicht erfasst wird. (ii) In praktischen Fällen sollte das Betragsspektrum des analogen Signals bis zur halben Abtastfrequenz „genügend“ abgeklungen sein, damit ein Aliasing-Beitrag vernachlässigt werden kann. (iii) Mit dem Abtasttheorem werden u. a. Whittaker (1915), Nyquist (1928), Kotel‘nikov (1933), Raabe (1939) und Shannon (1948) in Verbindung gebracht. Die mindestens erforderliche Abtastrate wird manchmal auch Nyquist-Rate genannt.
16.2.2
Vorbereitende Aufgaben
A16.1
Im Programmbeispiel 16-1 wird der Einfluss der zur Abtastung notwendigen Bandbegrenzung hörbar. Ein Audiosignal wird bandbegrenzt, unterabgetastet und auf der PC Sound Card ausgegeben. Machen Sie sich mit dem Programm vertraut und erklären Sie, wie die Bandbegrenzung durchgeführt wird. Hinweise: 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, sodass sich ein entsprechender Höreindruck ergibt. Der MATLABBefehl menu stellt eine einfache graphische Benutzerschnittstelle am Bildschirm bereit.
Programmbeispiel 16-1 Unterabtastung eines Audiosignals (Filterung mit DFT-Tiefpass) % Subsampling of an audio signal % dsplab16_1.m * mw * 1Apr2011 fprintf('dsplab16_1 : subsampling \n') filename = input('name of audio file (*.wav): ','s'); [x,fs,bits] = wavread(filename); % load audio signal 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 Quantisierung
191
16.2.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.3
Quantisierung
Es gehört zum Wesen digitaler Prozessoren, dass zur Speicherung von Zahlen in den Registern nur eine eng begrenzte Anzahl von Binärstellen zur Verfügung steht. Typischerweise ist die (Register-)Breite 8, 16, 32 oder 64 Bit. Dementsprechend eignen sich die Prozesoren zur Verarbeitung von Informationseinheiten, Maschinenwörter genannt, aus 8, 16, 32 bzw. 64 Bit. Man spricht dann auch von der Wortlänge. Bei einer Wortlänge von 8 Bit lassen sich genau 28 = 256 unterschiedliche Informationseinheiten, Programmcode oder Daten, darstellen. Ein analoges Signal zu digitalisieren, heißt somit neben der Abtastung auch eine Diskretisierung der Signalwerte durchzuführen. Die üblichen reellen Werte des analogen Signals sind auf den begrenzten Vorrat an Maschinenzahlen abzubilden, zu Quantisieren. In der Regel ist dies mit einer Vergröberung oder Rasterung des Signals und damit mit einem Verlust an Information verbunden. Andererseits können reale Signale nur im Rahmen der physikalischen Meßgenauigkeit beobachtet werden: die Werte liegen mit gewissen Wahrscheinlichkeiten in gewissen Intervallen.
16.3.1
Quantisierungskennlinie
Das analoge Signal x(t) sei auf das normierte Amplitudenintervall [1,1[ begrenzt. Falls nicht, wird das Signal vor der Quantisierung geeignet verstärkt bzw. gedämpft. Im Weiteren wird stets von einem normierten 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 wird der Quantisierungsbereich in 2w/bit gleichgroße Intervalle geteilt. Es resultiert die Quantisierungsintervallbreite
Q
w bit 1 2
(16.3)
Anmerkungen: (i) Üblich sind auch die Sprechweisen Quantisierungsstufe und Quantisierungsstufenhöhe. (ii) Häufig wird die Wortlänge in den Formeln auch ohne die Pseudoeinheit bit verwendet.
192
16 Analog-Digital-Umsetzung
Die 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. Im Beispiel oben wird der Wert x = 0,71… auf den Repräsentanten [x]Q = 0,5 abgebildet. Bei der gleichförmigen Quantisierung mit Runden liegen die Repräsentanten jeweils in der Mitte der Quantisierungsintervalle, sodass der Betrag der Differenz zwischen Abtastwert und Repräsentant, der Betrag des Quantisierungsfehlers, die halbe Intervallbreite nicht überschreitet. Anhand von Bild 16-2 lassen sich die zwei 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 0 herum wechselt. Dieses Problem kann umgangen werden, wenn ein Quantisierungsintervall um 0 eingeführt wird, wie unten in Bild 16-2; also der Wert 0 explizit durch einen Repräsentanten dargestellt wird.
[x]Q
Sättigungskennlinie
3/4
Beispiele
Repräsentant 1/2
x
[x]Q
0.7
0.5
0
0
1/2
0.2
0.25
3/4
1.1
1
1/4 0 1
1/2
1/4
1/2
1
x
1
[x]Q
Sättigungskennlinie
3/4
Beispiele
1/2
x
[x]Q
1.1
0.75
0.7
0.75
1/2
0
0
3/4
0.2
0
1/4 0 1
1/2
1/4
1
x
1
Bild 16-2 Quantisierungskennlinie mit Abschneiden (oben) und Runden (unten) bei gleichförmiger Quantisierung mit der Wortlänge 3 Bits und Zweierkomplementdarstellung
16.3 Quantisierung
193
Es ist somit stets wichtig, den Eingang des A/D-Umsetzers passend auszusteuern. Im praktischen Einsatz können weitere statische und dynamische Fehler durch den A/D-Umsetzer hinzutreten.
16.3.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 Gleitkommaformat und das Festkommaformat. Gleitkommaformat Im Gleitkommaformat 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 1 ist. Sie kann deshalb weggelassen (gemerkt) werden, womit 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 weitverbreiteten 64-Bit-Formats (Double Precision) nach dem Standard for Floating-Point Arithmetic IEEE 754-1985 bedeutet das x
1 s 2 E 1 M f
(16.4)
mit dem Exponenten mit Bias 10
¦ ei 2i 1023
E
(16.5)
i 0
und der Mantisse 252
Mf
51
¦ fi 2i
(16.6)
i 0
Wir machen uns die Anwendung an Beispielen deutlich.
31 30
Single Precision
63 62
Double Precision
s
Vorzeichen s 1 Bit
s
0
23 22
e7 … e0
f22 … f0
0
52 51
e10 … e0 Exponent E 8 bzw. 11 Bits
f51 f50
…
f1 f0
Mantisse Mf 23 bzw. 52 Bits
Bild 16-3 Gleitkommaformat nach IEEE 754-1985 für Single Precision und Double Precision
194
16 Analog-Digital-Umsetzung
Beispiel 16-1 Gleitkommaformat Für die natürliche Zahl 100 ergibt sich zu (16.4) zunächst die Zerlegung
1 0 26 1 0.5625
(16.7)
0O 100' 0000' 01011001' 0000...0000
(16.8)
100
und daraus das zugehörige Bitmuster
100d
s
e 61023
M f 0.5625
Für die negative Dezimalzahl –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 21023
(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 für den positiven Überlauf (f), -Inf für den negativen Überlauf (f) und NaN für Not a Number. Letzteres resultiert als Ergebnis für undefinierte Ausdrücke, wie der 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. Tabelle 16-1 Codierung von Gleitkommazahlen (IEEE 754-1985) Exponent
Mf
Mantisse
Reelle Zahl mit E = e Bias
1 d e < emax
fm, …, f0
1 + Mf
1 s 2 E 1 M f
Denormalisiert
0, …, 0
fm, …, f0
Mf
1 s 2 Emin M f
02
0, …, 0
0, …, 0
0
emax
1, …, 1
emax
0, …, 0
Typ Normalisiert1
NaN Inf, -Inf
2
1
Signifikant: 1 + Mf
2
0 und -0 werden ebenso wie Inf und -Inf durch das Vorzeichenbit s = 0 bzw. 1 unterschieden
Formate
m
emax
Emin
Emax = emax1Bias
Bias
Single Precision
22
255
126
127
127
Double Precision
51
2047
1022
1023
1023
16.3 Quantisierung
195
Man beachte auch den Unterschied zwischen den normalisierten und denormalisierten Zahlen. Die kleinste von 0 verschiedene positive Zahl in normalisierter Form ist 2Emin. Durch Denormalisieren kann diese Zahl auf 223 2Emin bzw. 252 2Emin verkleinert werden. So wird das Problem des Zahlenunterlaufs wirksam reduziert. Anmerkungen: (i) MATLAB benutzt auch Softwaremodule, die von IEEE 754 abweichen können. (ii) Für eine überarbeitete Version des Standards siehe IEEE 754-2008.
Festkommaformat
Für die Darstellung von Festkommazahlen gibt es verschiedene Möglichkeiten: Nach Betrag und Vorzeichen, im Einerkomplement- oder Zweierkomplementformat. Wir beschränken uns auf das in der digitalen Signalverarbeitung häufig verwendete Zweierkomplement (Two’s Complement) mit der Wortlänge w in Bits. Im Zweierkomplementformat gibt es genau 2w/bit verschiedene Maschinenzahlen, wobei 0 explizit ausgedrückt wird. x
a0 20
w/bit 1
¦
ai 2i mit ai ^0,1` für 1 d x d 1 2 w/bit 1
(16.11)
i 1
Die Negation geschieht vorteilhaft durch Komplementbildung und Addition des Bits mit geringster Wertigkeit, dem LSB (Least Significant Bit). x
a0 20
w / bit 1
¦
ai 2i 2 w bit 1 mit ai ^0,1` für 1 d x d 1 2 w/bit 1
(16.12)
i 1
Anmerkungen: (i) Das Zweierkomplementformat 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 von 1 verzichtet. (ii) Das Festkommaformat mit Zweierkomplement ermöglicht eine effiziente Addition von positiven und negativen Zahlen durch elektronische Schaltungen.
Beispiel 16-2 Festkommaformat einer negativen Dezimalzahl
Im Beispiel der Zahl –0.328125 ergibt sich aus (16.11) zunächst die Darstellung des Betrages.
0.328125
22 24 26
(16.13)
Bei einer Wortlänge von 16 Bits ist dann das zugehörige Bitmuster mit dem LSB rechts 0.328125 d
0010'1010' 0000' 00002c
(16.14)
Durch Bildung des Zweierkomplements 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 aus größter zu kleinster positiv darstellbaren Zahl
196
16 Analog-Digital-Umsetzung
und die Präzision, d. h. die Feinheit der Zahlendarstellung definiert als der maximale Fehler beim Runden; je größer das Quantisierungsintervall desto kleiner die Präzision. Tabelle 16-2 Vergleich des Festkomma- und Gleitkommaformats für Digitalrechner bei gleicher Wortlänge Festkommaformat Aussteuerungsbereich (Dynamik)
Kleiner
Größer
Quantisierungsfehler (Präzision)
Konstant
Exponentenabhängig
Meist erforderlich
Meist nicht erforderlich
Kleiner
Größer
Kleiner
Größer
Schwieriger
Einfacher
Niedriger
Höher
Skalierung Hardware-Komplexität Energieaufnahme
1
Software-Portabilität Preis 1
Gleitkommaformat
Mit der zunehmenden Verbreitung von mobilen Anwendungen gewinnt der Aspekt Energieaufnahme an Bedeutung.
16.3.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. 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, eines Fehlersignals, hier in Anlehnung an die Sprachtelefonie auch Quantisierungsgeräusch genannt, siehe Bild 16-4.
Eingangswert
Quantisierung
Quantisierter Wert
[x]Q
x
'
> x@
x
Q Anmerkung: Die (mathematische) Quantisierung Quantisierungsfehler wirkt auf Momentanwerte unabhängig von früheren oder folgenden Werten. Sie ist deshalb ge- Bild 16-4 Ersatzmodell für die Quantisierung mit dächtnislos. Der Einfachheit halber betrachten wir dem Quantisierungsgeräusch ' im Folgenden ein zeitkontinuierliches dreieckförmiges Eingangssignal als Testsignal.
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. 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
16.3 Quantisierung
197
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 0 im Zweierkomplementformat fehlt die Darstellung der 1. Im Falle eines Eingangswertes 1 ergäbe sich der Quantisierungsfehler Q. Für Eingangswerte größer gleich 12w/bit wird der größte darstellbare Wert 12-(w/bit1) zugewiesen, siehe Sättigung.
[x(t)]Q 1 3/4 1/4 0
T0/2
S
1 T0
T0/2
1/4
t
1/2 3/4
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 (Signalto-Noise Ratio), zugrunde gelegt. Im Beispiel des dreieckförmigen Signals ergibt sich bei Vollaussteuerung die (mittlere) Signalleistung
x(t)
1/2
1 '(t) = [x(t)]Q x(t) Q/2
t Q/2 Bild 16-5 Quantisierung eines periodischen dreieckförmigen Signals (oben) mit Quantisierungsgeräusch '(t) (unten)
T0
2 ³ x t dt 0
1 3
(16.16)
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 vereinfachte Modellüberlegung vernachlässigt. Dann sind die Werte des Quantisierungsgeräusches auf das Intervall [Q/2, Q/2] beschränkt. Die mittlere Leistung ergibt sich demzufolge wie in (16.16) zu N
1 §Q· ¨ ¸ 3 ©2¹
2
Q2 12
22 w bit 3
(16.17)
wobei die Quantisierungsintervallbreite durch die Wortlänge ersetzt wurde. Für die vereinfachte Modellüberlegung resultiert das SNR im logarithmischen Maß §S· ¨ ¸ © N ¹dB
10 log10 22 w
bit
dB = 20 bitw log10 2 dB | 6 bitw
dB
Das SNR verbessert sich demzufolge um 6 dB pro zusätzlichem Bit Wortlänge.
(16.18)
198
16 Analog-Digital-Umsetzung
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 Anwendungen: Für eine symmetrische gleichförmige Quantisierung mit hinreichender Wortlänge w in Bits und Vollaussteuerung gilt die 6dB-pro-Bit-Regel w §S· dB ¨ ¸ | 6 bit © N ¹dB
(16.19)
Für die Näherung liegt erfahrungsgemäß eine hinreichende Wortlänge vor, wenn das Signal mehrere Quantisierungsintervalle durchläuft. Viele Signale, wie Sprach- und Audiosignale, haben einen hohen Dynamikumfang, wobei die kleinen Amplituden relativ häufig vorkommen. Bei Vollaussteuerung ist die Signalleistung deshalb deutlich kleiner als 1/3, sodass das tatsächliche SNR um einige dB kleiner sein kann als in (16.19).
16.3.4
Vorbereitende Aufgaben
A16.2
Überlegen Sie, wie Sie mit einem MATLAB-Programm die kleinste Maschinenzahl größer eins bestimmen können. Hinweis: ( 1 + H ) mit H > 0, wenige Programmzeilen genügen.
A16.3
Geben Sie für die Wortlänge w in Bits die fehlenden Einträge zum Zweierkomplementformat in Tabelle 16-3 an.
Tabelle 16-3 Zweierkomplementformat Wortlänge
w
8 bit
16 bit
Kleinste positive Zahl (LSB) Größte positive Zahl (1LSB) Kleinste negative Zahl Dynamik Präzision1 1
A16.4
Maximaler Quantisierungsfehler bei Runden (aussteuerungsunabhängig
Geben Sie für die Zahlenwerte in Tabelle 16-4 im Zweierkomplementformat für die Wortlänge w = 8 bit in hexadezimaler Form an. Runden Sie gegebenenfalls die letzte Stelle. Tragen Sie die quantisierten Werte zum Vergleich als übliche Gleitkommazahlen ein.
16.3 Quantisierung Tabelle 16-4
199
Quantisierung im Zweierkomplementformat 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
A16.5
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 Dezimalformat.
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
Wortlänge des Exponenten we und Wortlänge der Matisse wM Maschinen-Epsilon Maximaler Quantisierungsfehler bei Runden aufgrund der Wortlängenbeschränkung der Mantisse (aussteuerungsabhängig, man beachte den Exponenten)
200 A16.6
16 Analog-Digital-Umsetzung Machen Sie sich mit dem Programmbeispiel 16-2 zur Simulation einer Quantisierung im Zweierkomplementformat vertraut.
Programmbeispiel 16-2 Quantisierung im Zweierkomplementformat function [xq] = quant2c(x,w,TMode) % 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 * 02Apr2011 LSB = 2^(-w+1); % least significant bit xq = max(-1,min(1-LSB,x)); % clipping (saturation) % Quantizer if TMode == 't', xq = floor(xq/LSB)*LSB; elseif TMode == 'r', xq = round(xq/LSB)*LSB; else error('quant2c - invalid mode') end
16.3.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 Zweierkomplementformat 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_3 in Programmbeispiel 16-3 mit der Funktion quant2c.m
Programmbeispiel 16-3
Testprogramm für die Quantisierung im Zweierkomplementformat mit Runden mit dem Programm quant2c
% Test of tow's complement quantizer function quant2c % dsplab16_3.m * mw * 02Apr2011 n = -1:.001:1; x = n; % input signal % quantization with rounding xq = quant2c(x,3,'r');
16.3 Quantisierung
201
% Graphics FIG1=figure('Name','dsplab16_3 : 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_3.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_4 in Programmbeispiel 16-4.
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_4.m * mw * 02Apr2011 n = 0:.001:1; L = length(n); w = 2:16; % word length SNR = zeros(size(w)); % linear signal x = n; 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 % signal-to-noise ratio SNR(k) = S/N; end % Graphics FIG = figure('Name','dsplab16_4: 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.
202
16 Analog-Digital-Umsetzung
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 16-6 MATLAB-Befehle benutzte Programme und Dateien Spezielle Befehle und Konstanten
eps, realmax, realmin, format ceil, floor, round, uint8, uint16, double
Programmsteuerung
break, menu, while
Þ Onlineressourcen
dsplab16_1.m, dsplab16_2.m, dsplab16_3.m, dsplab16_3b.m, dsplab16_3c.m, dsplab16_4.m, dsplab16_5.m, dsplab16_6.m, quant2c.m, speech.wav, guitar.wav, handel.wav
203
17
Reale digitale Filter: Koeffizientenquantisierung
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. Schlüsselbegriffe Arithmetikfehler, fdatool, FIR-Filter, Kaskadenform, Polausdünnung, Pol-Nullstellenaufteilung, Wortlängeneffekte
Koeffizientenquantisierung,
IIR-Filter,
Lernziele Nach Bearbeiten dieses Versuches können Sie x
die Fehlerquellen bei realen digitalen Filtern nennen und verstehen
x
die maximale Frequenzgangsabweichung durch Quantisierung der Koeffizienten bei FIR-Filtern abschätzen und bewerten
x
mit MATLAB den tatsächlichen Fehler durch Quantisierung der Koeffizienten bei FIR-Filtern analysieren und bewerten
x
die Wirkung der Koeffizientenquantisierung von IIR-Filtern auf den Frequenzgang anhand des PolNullstellendiagramms analysieren und bewerten
x
den Effekt der Polausdünnung anhand einer Skizze in der z-Ebene veranschaulichen und bewerten
x
ein IIR-Filter höherer Ordnung in eine für die Realisierung günstige Kaskadenform umwandeln
x
mit MATLAB den tatsächlichen Fehler durch Quantisierung der Koeffizienten bei IIR-Filtern analysieren und bewerten
x
das MATLAB-Werkzeug fdatool zum Entwurf und der Analyse von Filtern gezielt einsetzen
17.1
Wortlängeneffekte
Praktische Systeme zur digitalen Signalverarbeitung werden häufig auf speziellen Mikrocontrollern implementiert, den digitalen Signalprozessoren (DSP, Digital Signal Processor). Nach Art der Zahlendarstellung werden zwei Gruppen unterschieden: Festkommaprozessoren und Gleitkommaprozessoren. Wichtige Vor- und Nachteile der beiden Prozessorarchitekturen stellt Tabelle 17-1 gegenüber. Beim praktischen Einsatz digitaler Systeme sind drei Fehlerquellen und ihre Folgen zu berücksichtigen:
Quantisierungsfehler bei der A/D-Umsetzung Quantisierungsfehler bei der Darstellung der Filterkoeffizienten / Entwurfsspezifikationen verletzt, Filter wird möglicherweise instabil
M. Werner, Digitale Signalverarbeitung mit MATLAB®, DOI 10.1007/978-3-8348-8621-7_17, © Vieweg+Teubner Verlag | Springer Fachmedien Wiesbaden GmbH 2012
204
17 Reale digitale Filter: Koeffizientenquantisierung
- Filter bleibt ein lineares System
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. Die Arithmetikfehler werden im nächsten Versuch behandelt. Tabelle 17-1
Vergleich der Festkomma- und Gleitkommaarchitektur für Signalprozessoren Festkommaarchitektur
Gleitkommaarchitektur
Dynamik
kleiner
größer
Präzision
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
Skalierung Befehlssatz (Assembler) Optimierungsmöglichkeiten Entwicklungszeit Geschwindigkeit Energieverbrauch Preis
Sonstiges
17.2
Spezielle Architekturmerkmale zur Software von einem PC oder Vermeidung von Arithmetikfehlern Arbeitsplatzrechner leichter auf den (Sättigungskennlinien, AkkumuDSP portierbar latoren mit vergrößerter Wortlänge)
FIR-Filter mit quantisierten Koeffizienten
Für FIR-Filter werden in Versuch 10 sechs günstige Eigenschaften aufgezählt, darunter die relative Robustheit gegenüber Wortlängeneffekten. Die Ergebnisse der folgenden Versaufgabe bestätigen dies. Sollen jedoch Systeme mit geringer Wortlänge, z. B. 8 oder 16 Bit, realisiert werden, ist eine Fehlerbetrachtung unerlässig.
17.2.1
Fehlermodell und Fehlerfrequenzgang
Bei einem nichtrekursiven Filter der Ordnung N sind die Filterkoeffizienten gleich der Impulsantwort, siehe Bild 17-1.
17.2 FIR-Filter mit quantisierten Koeffizienten D
x[n] h0
205 D
D
D hN-1
h1
hN
y[n] Bild 17-1 FIR-Filter in transversaler Struktur
Die Quantisierung der Koeffizienten wirkt sich bei FIR-Filtern direkt auf die Impulsantwort und schließlich die Übertragungsfunktion und den Frequenzgang aus. Fasst man den Effekt der Koeffizientenquantisierung als additive Störgröße hF[n] auf h[ n ]
> h[n ]@Q hF [n ]
(17.1)
so resultiert das Modell einer Parallelschaltung aus dem nicht-quantisierten System und dem Fehlersystem wie in Bild 17-2. Wegen der Additivität linearer Systeme gilt für den Frequenzgang des quantisierten Systems, dem Fehlerfrequenzgang,
H Q e j:
H e j: H F e j:
Bei einer Realisierung im Festkommaformat liegen meist Zahlen im Zweierkomplementformat vor. Sie beschränkt den Zahlenbereich auf Werte zwischen 1 und 1LSB. Der maximale Quantisierungsfehler beträgt bei Runden LSB/2.
(17.2)
h[n] y[n]
x[n] hF[n]
Damit kann die Abweichung vom Frequenzgang aufgrund der Koeffizientenquantisierung abgeschätzt werden. Eine obere Schranke für die Abweichung des Be- Bild 17-2 Parallelschaltung aus nichttragsfrequenzgangs liefert die Annahme, dass sich alle quantisiertem System und Quantisierungsfehler der Koeffizienten ungünstig überFehlersystem lagern. Bei einer Quantisierung der Koeffizienten mit der Wortlänge w in Bit und Runden ergibt sich demzufolge
max H F e j: :
d N 1
Q 2
N 1 2 w bit
(17.3)
Die Abschätzung erweist sich bei vielen 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.
206
17 Reale digitale Filter: Koeffizientenquantisierung
Wird das Zweierkomplementformat 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 1 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 prinzipiell zu Überläufen führen.
17.2.2
Vorbereitende Aufgaben
A17.1
Bei der Versuchsdurchführung sind Filterkoeffizienten zu quantisieren. Geben Sie die MATLAB-Befehlszeile an, die eine Zahl x mit –1 d x d 1–LSB auf den Dezimalwert xq mit Runden umrechnet. Verwenden Sie das Zweierkomplementformat mit der Wortlänge w in Bit. xq =
A17.2
Geben Sie für die Filterordnung N = 20 die obere Schranke (17.3) für die Abweichung des Betragsfrequenzgangs bei Koeffizientenquantisierung in Tabelle 17-2 an. Welche Aussagen können durch die Abschätzungen beim Entwurf eines selektiven Filters mit vorgegebenem Toleranzschema für die Sperrdämpfung gemacht werden? Tabelle 17-2
Abschätzung der maximalen Abweichung des Betragsfrequenzgangs aufgrund der Koeffizientenquantisierung (17.3)
Wortlänge w
8 bit
16 bit
Quantisierungsintervallbreite Q Maximimale Abweichung (17.3)
A17.3
Überlegen Sie, ob durch die Koeffizientenquantisierung die (verallgemeinerte) lineare Phase eines FIR-Filters verloren geht?
17.2.3
Versuchsdurchführung
M17.1
a) Entwerfen Sie zum Toleranzschema in Bild 17-3 einen FIR-Tiefpass mit Equiripple-Verhalten mit dem MATLAB-Werkzeug fdatool. Hinweis: Überprüfen Sie, ob das Toleranzschema eingehalten wird. Wenn nicht, wiederholen Sie den Entwurf mit restriktiveren Vorgaben.
b) Skalieren Sie das Filter nach (17.4). Hinweis: Verwenden Sie der Einfachheit halber den Maximalwert aus dem Toleranzschema.
17.3 IIR-Filter mit quantisierten Koeffizienten
207
c) Berechnen Sie die Filterkoeffizienten im Zweierkomplementformat mit der Wortlänge 8 Bit und Runden. Hinweis: quant2c
d) Benutzen Sie das MATLAB-Werkzeug fvtool um die Betragsfrequenzgänge in dB des skalierten Filters, des quantisierten Filters und des Fehlerfilters in einem Bild darzustellen. Wird das Toleranzschema nach der Koeffizientenquantisierung erfüllt? Vergleichen Sie den maximalen Betragsfehler mit der Abschätzung (17.3). Hinweis: Möglicher Programmaufruf fvtool(h1,1,h2,1,h1-h2,1)
e) Ist das Toleranzschema einzuhalten, wenn nun die Wortlänge von 16 Bits für die Koeffizienten verwendet wird? 2GD = 0.04 Frequenzgang H(ej:)
1
2GS = 0.008 0 0.2
0
GD /S = 0.2
0.6 0.4 = GS /S
0.8
1
normierte Kreisfrequenz : / S Bild 17-3 Toleranzschema zum Entwurf des FIR-Tiefpasses
17.3
IIR-Filter mit quantisierten Koeffizienten
An die Implementierung von IIR-Filter werden höhere Anforderungen als bei FIR-Filtern gestellt, weil IIR-Filter wegen ihrer rekursiven Struktur anfälliger gegen Wortlängeneffekte sind.
17.3.1
Kaskadenform
Die direkte Umsetzung der Übertragungsfunktion eines IIR-Filters
H z
b0 b1 z 1 " bN z N
a0 a1 z 1 " a N z N
(17.5)
führt auf Strukturen, wie die in Bild 17-4 gezeigte transponierte Direktform II. Letztere zeichnet sich durch die minimal mögliche Zahl von Additionen und Multiplikationen aus und wird deshalb häufig eingesetzt, siehe auch kanonische Form.
208
17 Reale digitale Filter: Koeffizientenquantisierung x[n] bN
b2
bN1
b0
aN1
a2
y[n]
D
D
D aN
b1
a1
Bild 17-4 Blockdiagramm der IIR-Filterstruktur in transponierter Direktform II (a0 = 1)
Theoretische Analysen und praktische Erfahrungen zeigen, dass die Realisierung als Kaskade von Blöcken 2. Ordnung relativ robust gegenüber Wortlängeneffekten ist.
H z
H1 z H 2 z " H K z
(17.6)
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.
x[n]
H1(z)
H2(z)
HK(z)
y[n]
Bild 17-5 Kaskadenform mit Teilsystemen 1. und 2. Ordnung
Die Aufteilung der Pole und Nullstellen auf die Teilsysteme sowie deren Skalierungen sind nicht beliebig. Auf eine Optimierung wird häufig verzichtet, da eine einfache Faustregel brauchbare Resultate liefert. Der Einfachheit halber gehen wir von konjugiert komplexen Pol- und Nullstellenpaaren aus, wie sie für die Standardfilter typisch sind. Die Faustregel zur Aufteilung der Pole und Nullstellen auf die Teilsysteme wird in Bild 17-6 veranschaulicht. Leitgedanke dabei ist, den Einfluss der einzelnen 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 Pol- und Nullstellenpaare erfasst sind. ) Die Teilsysteme 2. Ordnung werden in steigender oder fallender Reihenfolge des Zusammenfassens implementiert.
17.3 IIR-Filter mit quantisierten Koeffizienten Im(z)
209
Im(z)
z
a)
Im(z)
z
b)
1
z
c)
Re(z)
1
Re(z)
1
Re(z)
Bild 17-6 Gruppieren der Pole und Nullstellen in Blöcken 2. Ordnung für einen Cauer-Tiefpass nach der Faustregel
17.3.2
Koeffizientenquantisierung und Polausdünnung
Im Weiteren wird exemplarisch ein einzelner Block der Kaskadenform betrachtet, ein reellwertiges rekursives System 2. Ordnung mit konjugiert komplexem Polpaar und konjugiert komplexem Nullstellenpaar. zf1
U f e jMf
zf 2 und z01
U 0 e jM 0
* z02
(17.7)
Eingesetzt in die Übertragungsfunktion liefert H z
b0 b1 z 1 b2 z 2 1 a1 z 1 a2 z 2
b0
1 2 U 0 cos M 0 U 02 1 2 U f cos M f U f2
(17.8)
Die Realisierung des Blockes 2. Ordnung im üblichen Zweierkomplementformat erfordert die Quantisierung der Filterkoeffizienten. HQ z
>b0 @ Q >b1 @ Q z 1 >b2 @ Q z 2 1 > a1 @ Q z 1 > a2 @ Q z 2
(17.9)
Wegen
a1
2 Re zf1 und a2
zf1
2
(17.10)
wirkt sich die Quantisierung auf die Realteile und die Beträge 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 d a1 2 und 0 a2 1
(17.11)
sodass a1 den Zahlenbereich des Zweierkomplementformats ü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.
210
17 Reale digitale Filter: Koeffizientenquantisierung x[n] b1
b2
b0
a2
y[n]
D
D a1/2
Bild 17-7 Block 2. Ordnung für quantisierte Koeffizienten in transponierter Direktform II
Für die für die Stabilität wichtigen Pole gilt
ª a1 º «¬ 2 »¼ Q
ª¬ Re zf º¼ Q
und
> a2 @Q
ª U f2 º ¬ ¼Q
(17.12)
Demzufolge sind nur diskrete Werte für den Realteil und den Betrag eines Pols möglich. Bild 17-8 zeigt die sich demzufolge ergebenden möglichen Lagen der komplexen Pole im ersten Quadranten für die Wortlänge von 5 Bit. 1 Im(z)
z
0.5
0
0.5
Re(z)
1
Bild 17-8 Mögliche Lagen der komplexen Pole (x) im ersten Quadranten und auf der imaginären Achse der z-Ebene für w = 5 bit
Bild 17-8 zeigt, dass sich die Lage der Pole durch die Quantisierung meist verschiebt, weshalb 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 0 liegen, also die Pole in der Nähe von z = 1, macht sich bei schmalbandigen Tiefpässen 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.
17.3 IIR-Filter mit quantisierten Koeffizienten
211
Nach der Quantisierung bleiben die Pole des Blockes 2. Ordnung stets im Einheitskreis. Das quantisierte 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, z. B. in Normalform, in Leiterstruktur oder als Wellendigitalfilter.
17.3.3
Vorbereitende Aufgaben
A17.4
In der Versuchsdurchführung sollen Sie die Schritte vom Toleranzschema bis zum IIR-Filter mit quantisierten Koeffizienten in MATLAB selbständig durchführen. Zur Vorbereitung machen Sie sich mit dem folgenden Entwurfsbeispiel in fünf Schritten vertraut. c Entwurfsvorgaben Toleranzschema und Filterprototyp Cauer-Filter GD = 0.05
|HTP(ej:)| 1
GS = 0.001
0.02 0
:D = 0.3S 0.4S = :S
:/S
1
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 die Menüauswahl 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 Matrix SOS enthält die Filterkoeffizienten der Teilblöcke 2. Ordnung (Second Order System) für die Kaskadenform des IIRTiefpasses. Und der Vektor G beschreibt die Gewichtsfaktoren (Gain, Scale Values) der Teilblöcke und des Gesamtsystems. Im Beispiel ergeben sich die Zahlenwerte in Tabelle 17-3. Bild 17-10 Menü Export
212
17 Reale digitale Filter: Koeffizientenquantisierung
Bild 17-11 Tiefpassentwurf mit dem MATLAB-Werkzeug fdatool zum Toleranzschema in Bild 17-9 Tabelle 17-3
Filterparameter des Cauer-Tiefpasses nach Bild 17-9 und Bild 17-11 (fdatool)
SOS = 1.0000 1.0000 1.0000 G
-0.1237 1.4010 -0.5911
1.0000 1.0000 1.0000
1.0000 1.0000 1.0000
-1.1877 -1.3316 -1.1105
0.7129 0.5005 0.9147
= 0.6347 0.9689 0.0123 1.0000
Die Angaben in Tabelle 17-3 entsprechen einem IIR-Filter in Kaskadenform H ( z ) G1 H1 ( z ) G2 H 2 ( z ) G3 H 3 ( z ) G4 mit Gi = G(i)
Die Teilsysteme sind definiert durch
(17.13)
17.3 IIR-Filter mit quantisierten Koeffizienten
Hi z mit
213
b0i b1i z 1 b2i z 2
(17.14)
a0i a1i z 1 a2i z 2
b0i = SOS(i:1), b1i = SOS(i:2) und b2i = SOS(i:3) a0i = SOS(i:4), a1i = SOS(i:5) und 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. e Überprüfung der Pol-Nullstellenaufteilung
Mit dem fdatool wird das Pol-Nullstellendiagramm in Bild 17-12 dargestellt. Die Zuordnung der Pole und Nullstellen zu den Teilsystemen erfolgt im Beispiel anhand der Filterkoeffifzienten in Tabelle 17-3. Die letzte Spalte der SOS-Matrix enthält die Polradien in der Reihenfolge der Teilsysteme 1, 2 und 3 von oben nach unten. Mit den gerundeten Polradien 0.7, 0.5 und 0.9 ergibt sich eine eindeutige Zuordung in Bild 17-12. Für die Zuordnung der Nullstellen ist die zweite Spalte geeignet. Sie enthält 2Re(U0), sodass mit den gerundeten Realteilen 0,06, 0,7 und 0,3 ebenfalls die Zuordnung erfolgen kann. Die von MATLAB vorgenommene Pol-Nullstellenaufteilung folgt der Fausregel. Anmerkung: MATLAB bietet Optimierungensmöglichkeiten bei der Konversion der Filterkoeffizienten in die der Teilsysteme mit dem MATLAB-Befehl tf2sos an. Wie im nächsten Versuch vorgestellt wird, sind für die Implementierung auf Festkommarechnern die Überlaufwahrscheinlichkeit und das innere Rauschen in Betracht zu ziehen.
Pole/Zero Plot 1
1
0.8
3
0.6
Imaginary Part
0.4
2
0.2 0 -0.2 -0.4 -0.6 -0.8 -1 -1
-0.5
0 Real Part
0.5
1
Bild 17-12 Pol-Nullstellendiagramm mit der Aufteilung in Teilsysteme mit dem MATLAB-Werkzeug fdatool zum Toleranzschema in Bild 17-9
214
17 Reale digitale Filter: Koeffizientenquantisierung f Quantisierung der Koeffizienten im Zweierkomplementformat
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 Rauschen 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 so auf die Teilsysteme übertragen, dass der maximale Zählerkoeffizient stets kleiner gleich .5 ist, also G = 0.3174 0.4845 0.0490 1.0000
Zu beachten ist ferner, dass die Koeffizient a1i entsprechend Bild 17-7 und (17.12) zu quantisieren sind. Für die Modellüberlegungen werden die Koeffizienten a1i durch zwei geteilt, quantisiert und danach wieder mit zwei multipliziert. Das Ergebnis der Quantisierung ist in Tabelle 17-4 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-4 Skalierte (g) und quantisierte (q) Koeffizienten der Teilsysteme zum CauerTiefpass SOSg =
0.3174 0.4845 0.0490
-0.0392 0.6787 -0.0290
0.3174 0.4845 0.0490
1.0000 1.0000 1.0000
-1.1877 -1.3316 -1.1105
0.7129 0.5005 0.9147
SOSq =
0.3203 0.4844 0.0469
-0.0391 0.6797 -0.0313
0.3203 0.4844 0.0469
1.0000 1.0000 1.0000
-1.1875 -1.3281 -1.1094
0.7109 0.5000 0.9141
g Überprüfung des Filters im Festkommaformat
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-13 zeigt die Einstellungen. Zum Vergleich mit der Entwurfsvorschrift wird im Darstellungsfenster des MATLAB-Werkzeugs fdatool die normierte Darstellung mit dem Maximum des Betragsfrequenzganges gleich eins gewählt. Das quantisierte System weicht im Durchlassbereich deutliche vom Wunschbetragsfrequenzgang ab. Am Rande des Durchlassbereichs treten Werte kleiner als 0,9 auf.
17.3 IIR-Filter mit quantisierten Koeffizienten
215
Die Abweichungen im Durchlassbereich sind teilweise größer als 0.1, gefordert sind maximal 0.05. Ein Blick auf den Sperrbereich (nicht in Bild 17-13) ergibt eine minimale Sperrdämpfung von etwas über 55 dB statt der geforderten von 60 dB bei der normierten Kreisfrequenz ungefähr gleich 0.42. Alles in allem, erweist sich der entworfene IIR-Tiefpass als relativ robust gegenüber der Quantisierung der Koeffizienten in Kaskadenform auf nur 8 Bits.
Bild 17-13 Untersuchung des auf 8-Bit-Wortlänge quantisierten Cauer-Tiefpasses (SOSq) mit dem MATLAB-Werkzeug fdatool
17.3.4
Versuchsdurchführung
M17.2
Führen Sie die Entwurfsschritte der Vorbereitung selbst mit MATLAB durch.
M17.3
Entwerfen Sie mit dem MATLAB-Programm fdatool einen Chebyshev-II-Tiefpass mit den Vorgaben des Toleranzschemas: :D = 0.04S
GD = 0.02
:S = 0.1S
GS = 0.0001
216
17 Reale digitale Filter: Koeffizientenquantisierung Das System soll in Kaskadenform mit Blöcken 1. und 2. Ordnung mit der Wortlänge 16 Bit realisiert werden. Führen Sie die dazu notwendigen Schritte durch. Überprüfen Sie die Pol-Nullstellenaufteilung durch MATLAB. Erfüllt das in Kaskadenform realisierte Filter die Entwurfsspezifikationen?
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 17-5 MATLAB-Befehle benutzte Programme und Dateien Spezielle Befehle
load, save, sos2tf, tf2sos
MATLAB-Programme
fdatool, fvtool
Þ Onlineressourcen
quant2c.m, quant2cIIR.m
217
18
Reale digitale Filter: Quantisierte Arithmetik
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 schon im Filterentwurf berücksichtigt werden kann, treten die Wortlängeneffekte bei den arithmetischen Operationen während des Betriebs auf. Schlüsselbegriffe Betragsabschneiden, Grenzzyklus, inneres Rauschen, quantisierte Arithmetik, Überlauf, Rauschzahl, Runden, Rundungsrauschen, Sättigungskennlinie Lernziele Nach Bearbeiten dieses Versuches können Sie y
das Überlaufverhalten der Zweierkomplement-Addition anhand der Überlaufkennlinie und der Sättigungskennlinie erläutern
y
die Vor- und Nachteile der Wortlängenverkürzung durch Runden und Betragsabschneiden nennen
y
die Entstehung kleiner Grenzzyklen erklären und ihre Auswirkungen auf das Verhalten der Systeme abschätzen
y
die Entstehung großer Grenzzyklen erläutern und ihre Auswirkungen auf das Verhalten der Systeme abschätzen
y
den Effekt des inneren Rauschens erklären
y
ein Blockschaltbild zur Schätzung der Leistung des inneren Rauschens skizzieren und erläutern
y
die Anwendung digitaler Filter unter realistischen Bedingungen beurteilen und kritische Fehler vermeiden
18.1
Quantisierte Arithmetik
Lineare digitale Filter setzen sich aus drei Arten unterschiedlicher Bausteine 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.1.1
Addierer Überlauf und große Grenzzyklen
Das Zweierkomplementformat ist in der digitalen Signalverarbeitung sehr verbreitet, weil die Addition bitweise mit einem einfachen Übertrag erfolgt, und so simple Addierschaltungen möglich werden. Bei der Addition im Zweierkomplementformat 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. Bei einer Übersteuerung wird die „Addition“ zu einer nichtlinearen Operation. Wie im Versuch zu beobachten ist, kann der Überlauf von einem Ende des Zahlenbereichs in den anderen zu
M. Werner, Digitale Signalverarbeitung mit MATLAB®, DOI 10.1007/978-3-8348-8621-7_18, © Vieweg+Teubner Verlag | Springer Fachmedien Wiesbaden GmbH 2012
218
18 Reale digitale Filter: Quantisierte Arithmetik
großen Grenzzyklen, auch Überlaufschwingungen genannt, führen. Die Signalverarbeitung wird dadurch unbrauchbar.
Als Maßnahme gegen Überläufe (große Grenzzyklen) werden unter anderem 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. Dabei ist der Überlauf durch Exor-Verknüpfung der Vorzeichenbit der Summanden und des Resultats ohne großen Schaltungsaufwand zu erkennen.
1 ZweierkomplementÜberlaufkennlinie
1
[x]Q
0
x
1
1
1 Sättigungskennlinie
1
[x]Q
0
x
1
1
Bild 18-1 Kennlinien zur Zweierkomplement-Addition
Tabelle 18-1 Addition von zwei 8-Bit-Zahlen im Zweierkomplementformat mit Überlaufkennlinie Reell
Quantisiert
Reell
Quantisiert
Reell
Quantisiert
x1
0.5d
0100 00002c
0.5d
0100 00002c
0.5d
0100 00002c
x2
0.25d
0010 00002c
0.5d
0100 00002c
0.75d
0110 00002c
x1 + x2
0.75 d
18.1.2
0110 00002c = 0.75d
1.0d
1000 00002c = 1d
1.25d
1010 00002c = 0. 75d
Multiplizierer Inneres Rauschen und kleine Grenzzyklen
Bei der Multiplikation von Zweierkomplementzahlen 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 Zweierkomplementformat kann auf Digitalrechnern vorteilhaft auf Schiebeoperationen und Additionen zurückgeführt werden. Das Vorzeichen wird gesondert ausgewertet. Das Beispiel der beiden Zweierkomplementzahlen x1 = 0.5078125d = 21 + 27 = 0100 00012c
18.1 Quantisierte Arithmetik
219
und x2 = 0.0078125d = 27 = 0000 00012c
liefert eine um sieben Binärstellen nach rechts verschobene Zweierkomplement-Zahl mit 14 signifikanten Binärstellen x1 x2 = 0.00396728515625d = 28 + 214 = 0000 0001 0000 00102c
Vor der Weiterverarbeitung des Produktes, z. B. bei Zwischenspeicherung, muss in der Regel eine Wortlängenverkürzung vorgenommen werden. Damit wird auch die „Multiplikation“ auf Digitalrechnern zu einer nichtlinearen Operation. Zwei gängige Methoden der Wortlängenverkürzung sind das Runden und das Betragsabschneiden. Die zugehörigen Kennlinien sind in Bild 16-2 dargestellt. Man beachte, dass beim Betragsabschneiden die Wortlängenverkürzung stets hin zu 0 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 ein 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 beim 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. 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
x
2Q
2Q
1
1
1/2
x
2Q
2Q
1/2
1/2
1
1
1
Bild 18-2 Quantisierungskennlinien für das Runden und das Betragsabschneiden mit Quantisierungsintervallbreite Q und Repräsentanten
für w = 3 bit
In der Regel, 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 Ersatzblockdiagramm für die Multiplikation mit Wortlängenverkürzung. Mit der Annahme, dass das Rundungsrauschen im Intervall [Q/2, Q/2]
220
18 Reale digitale Filter: Quantisierte Arithmetik
gleichverteilt ist, ergibt sich seine Leistung, weil mittelwertfrei auch die Varianz, aus der Quantisierungsintervallbreite Q = 2(w/bit1) zu
V r2
Q2 12
1 2 w 2 3
bit
(18.1)
Die Analyse der Wortlängeneffekte bei Systemen höherer Ordnung ist aufwendig. 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 studiert.
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 Rauschsignale an einer Additionsstelle zusammengefasst werden. Wegen der Unabhängigkeit addieren sich die Leistungen. Man erhält das Blockdiagramm in Bild 18-4. Beachten Sie, dass sich wegen der zweifachen Addition in der Mitte die Varianz des Rundungsrauschens bezüglich des Koeffizienten a1 vervierfacht.
b
Vr2
y[n] = b x[n] + r[n] Bild 18-3 Blockdiagramm für die Multiplikation mit Wortlängenverkürzung durch Runden
Das am Systemausgang beobachtbare Rauschsignal aller inneren Quellen wird inneres Geräusch bzw. Rauschen genannt. In der englischsprachigen Literatur ist der Begriff round-off noise üblich. Bei der Analyse des inneren Rauschens 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 günstigste Konfiguration von Polen und Nullstellen in den Teilblöcken der Kaskadenform analytisch bestimmt werden. x[n] 2Vr2
b2
5Vr2
b1
D a2
Vr2
D
b0
y[n]
a1/2
Bild 18-4 Lineares Blockdiagramm für einen System 2. Ordnung mit innerem Rundungsrauschen
Das lineare Blockdiagramm in Bild 18-4 ermöglicht eine quantitative Abschätzung der Übertragung des inneren Rauschens am den Systemausgang. Das Einspeisen der internen Rauschsignalersatzquellen kann, wie in Bild 18-5, als externe Speisung aufgefasst werden. Anmerkung: Das System hat nur rekursiven Zweigen, weshalb das innere Rauschen nur durch die Pole des ursprünglichen Systems geformt wird.
18.1 Quantisierte Arithmetik
221 Rauschsignalquelle
Vr2
D
yr[n]
D
Inneres Rauschen a1
a2
Bild 18-5 Lineares Blockdiagramm für einen System 2. Ordnung mit Rundungsrauschen
Mit den für das Runden gemachten Annahmen eines im Quantisierungsintervall gleichverteilten und unkorrelierten Rauschsignals ergibt sich mit (18.1) für die Rauschleistung am Systemausgang
V 2yr
Q2 Ri ,0 12
(18.2)
mit der Rauschzahl Ri,0 des Ersatzsystems in Bild 18-5. Die Rauschzahl beschreibt die Verstärkung des Rundungsrauschens durch die Rückkopplung im System. Entsprechend den Überlegungen in Versuch 15.2, Tabelle 15-1, ist die Rauschzahl gleich der Energie der Impulsantwort des Ersatzsystems in Bild 18-5. Es gilt allgemein f
Ri ,0
¦ hi >n @
n 0
2
1 2S j
v³
dzz
H i z H i z 1
z 1
(18.3)
Die Berechnung kann entweder über die Autokorrelationsfolge, siehe Abschnitt 15, oder mit der komplexen Umkehrformel (18.3) erfolgen. Letzteres liefert die übersichtlichere Formel Ri ,0
1 a2 1 a2 ª«¬1 a2 2 a12 º»¼
(18.4)
wobei die Koeffizienten nach ihrer Quantisierung einzusetzen sind. Die numerische Auswertung der Formel liefert einen interessanten Zusammenhang zwischen der Lage des konjugiert komplexen Polpaares in der z-Ebene und der Rauschzahl, siehe auch (17.12) mit a2 = Uf2 und a1 = 2 Re(zf). Bild 18-6 zeigt das Ergebnis: Die Rauschzahl nimmt mit wachsender Nähe der Pole zum Einheitskreis und zur reellen Achse zu. Schmalbandige Tief- und Hochpässe sind demzufolge von innerem Rauschen besonders betroffen. Die Wirkung aller inneren Rauschquellen des Systems fasst die 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.
222
18 Reale digitale Filter: Quantisierte Arithmetik 35 Ri,0 in dB 25 20 15
a1 entfällt für Uf = 0.95 Mf = 90° 0.9
10 5
0.8 0.6
0 0
20
40
60
80
100 120 M 180 f in Grad
Bild 18-6 Rauschzahl Ri,0 eines reellwertigen Systems 2. Ordnung in Abhängigkeit von dem Betrag Uf und der Phase Mf des konjugiert komplexen Polpaares
Ni
Q2 NQ Ri ,0
12 Ri
Q2 Ri 12
(18.5)
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 an Präzision von etwa 5 Bit Wortlänge. 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 einer Polphase 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.1.3
Nichtlineares Blockdiagramm für ein System 2. Ordnung
Zum Abschluss werden die Überlegungen zu den Wortlängeneffekten bezüglich Multiplikation und Addition in Bild 18-7 zusammengeführt. Man beachte, dass das System 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 Hardwarekomponenten, 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 Systems 2. Ordnung in Bild 18-7 könnten durch zwei Überlaufbit im Akkumulator
18.2 Vorbereitende Aufgaben
223
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.
x[n] 2Vr2
b2
b1
5Vr2
Vr2
D
b0
y[n]
D s2[n]
a2
s1[n] a1/2
Bild 18-7 Nichtlineares Blockdiagramm für das System 2. Ordnung mit Rauschquelle zu den Multiplizierern und Sättigungskennlinien zu den Addierern
18.2
Vorbereitende Aufgaben
A18.1
Kleiner Grenzzyklus
Das Auftreten von kleinen Grenzzyklen wird am System 2. Ordnung in Bild 18-8 veranschaulicht. Es wird angenommen: (i)
Die Rechnung erfolgt im Dezimalsystem, wobei auf die erste Nachkommastelle (Dezimale) gerundet wird, z. B. [0.27]Q = 0.3.
(ii) Die Filterkoeffizienten sind a2 = 0.8 und a1 = 0.9. (iii) Zum Zeitpunkt n = 0 ist die Erregung x[n] abgeklungen, d. h. x[n] = 0 für n t 0. Zu diesem Zeitpunkt haben die Zustandsgrößen, die Speicher, die Werte s1[0] = 0.2 und s2[0] = 0.2. Bestimmen Sie die fehlenden Werte der Zustandsgrößen s1[n] und s2[n] in Tabelle 18-2 und tragen Sie die Werte in das Zustandsdiagramm Bild 18-9 ein. s2[n] x[n]
s1[n]
D
D
Runden
Runden
a2
a1
y[n]
Bild 18-8 System 2. Ordnung mit Runden (a2 = 0.8, a1 = 0.9)
224
18 Reale digitale Filter: Quantisierte Arithmetik Tabelle 18-2 Zustandsgrößen zu Bild 18-8 0
1
s1[n]
0.2
0
0.2
s2[n]
0.2
0.2
0.2
n
2
3
4
5
6
Nach sechs Takten stellen sich die Zustandsgrößen wieder ein. Es ergibt sich ein kleiner Grenzzyklus mit der Periode 6. Da die Zustandsgröße s1[n] am Ausgang beobachtet wird, ergibt sich ein periodisches Ausgangssignal in der Größe einiger LSB. s2 / LSB 4
2
4
s1 / LSB
0
2
2
2
n =1
4
n =0
4
Bild 18-9 Kleiner Grenzzyklus: Zustandsgrößen im Zustandsraumdiagramm (System 2. Ordnung)
A18.2
Großer Grenzzyklus
Ausgehend vom System 2. Ordnung in Bild 18-10 soll das Entstehen großer Grenzzyklen nachvollzogen werden. Es wird angenommen: (i)
Die Rechnung erfolgt im Dezimalsystem. Nach der Multiplikation wird das Betragsabschneiden auf die erste Nachkommastelle, z. B. [0.27]Q = 0.2, eingesetzt.
(ii) Für die Darstellung der Zustandsgrößen wird die Zweierkomplement-Überlaufkennlinie entsprechend Bild 18-1 oben verwendet. (iii) Die Filterkoeffizienten sind a2 = 0.7 und a1 = 1.6. (iv) Zum Zeitpunkt n = 0 ist die Erregung x[n] abgeklungen, d. h. x[n] = 0 für n t 0. Und für die Zustandsvariablen gelten die Werte s1[0] = 0.5 und s2[0] = 0.5.
18.2 Vorbereitende Aufgaben
225
Bild 18-11 zeigt die ersten resultierenden Werte für die Zustandsgrößen. Zeigen Sie, dass ein großer Grenzzyklus entsteht. 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 der Periode 8 ein.
s2[n]
ÜK
x[n]
s1[n]
ÜK
D
BA
BA
a2
a1/2
y[n]
D
Bild 18-10 System 2. Ordnung mit Betragsabschneiden (BA) und Überlaufkennlinie (ÜK) für die Zustandsgrößen (a2 = 0.7, a1 = 1.6)
s2 1
0.5
1
0
0.5
n=0
2
0.5
1
s1
3
0.5 1
1
Bild 18-11 Großer Grenzzyklus: Zustandsgrößen im Zustandsraumdiagramm (System 2. Ordnung)
226
18 Reale digitale Filter: Quantisierte Arithmetik
A18.3-3 Leistung des inneren Rauschens
Zur Bestimmung der Leistung des inneren Rauschens wird eine Vergleichsmessung wie in Bild 18-12 durchgeführt. Der Monte-Carlo-Simulation wird ein reales quantisiertes System mit der Wortlänge w zugrunde gelegt. Als Eingangssignal wird eine zunächst im Intervall ]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?
Digitale Rauschquelle
gleichverteilt in ]1, 1[ rand
Skalierungs- c faktor
Ideales System (IEEE 754-1985) 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 am Systemausgang durch Monte-CarloSimulation
18.3
Versuchsdurchführung
M18.1
Kleiner Grenzzyklus
Das System 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 Polphasen jeweils das Ausgangssignal zu beobachten. Die Zählerkoeffizienten sind b0 = 0.9375, b1 = 0, b2 = 0, und der Pol ist gegeben durch Betrag U = 0 .95 und Phase M = 0° ... 90°. Untersuchen Sie mit dem Programm dsplab18_1 und filt2_rc, siehe Programmbeispiele 18-1 und 18-2, ob kleine Grenzzyklen auftreten. Tragen Sie die Ergebnisse in Tabelle 18-3 ein. Hinweise: (i) Die Ergebnisse schwanken für unterschiedliche Polphasen und Amplituden der Erregung deutlich. (ii) Es genügt für die Versuchsdurchführung sich einen Überblick über die Funktion der Programme zu verschaffen. In der Versuchsdurchführung wird nur der Parameter phi im Programm dsplab18_1, wie in der Tabelle 18-3 vorgegeben, eingestellt. (iii) MATLAB bietet zur Unterstützung von Anwendungen mit Festkommaarithmetik ein eigenes Werkzeug an, die Fixed-
18.3 Versuchsdurchführung
227
Point Toolbox. Weil für den Versuch dieses Werkzeug nicht vorausgesetzt werden soll und es didaktisch sinnvoller erscheint, wird in den Beispielprogrammen die Zweierkomplementarithmetik mit elementaren MATLAB-Befehlen nachgebildet. Tabelle 18-3
Polphase Mf
Beispiel für kleine Grenzzyklen in einem System 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
12
12
12
0° 30° 60° 90°
Wiederholen Sie die Untersuchungen des Systems 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 System 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 * 16Apr2011 N = 100; % number of simulation cycles w = 16; LSB = 2^(-w+1); % word length and LSB MODE = 'rc'; % rounding, two's-complement overflow % pole magnitude and phase rho = 0.95; phi = 30*pi/180; % Filter parameters b = [.9375 0 0]; % numerator coefficients a = [1 -2*rho*cos(phi) rho^2]; % denominator coefficients 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 = [16*LSB zeros(1,N-1)]; % Referenz system : 2nd order block with MATLAB default arithmetic %initial values for state space variables si = [0; 0]; [yref,zref] = filter(bq,aq,xq,si); % 2nd order block with fixed-point arithmetic switch MODE case 'rc' %rounding, two's-complement overflow [y,s,OC] = filt2_rc(bq,aq,xq,si,w); % truncation, two's-complement overflow case 'ts' [y,s,OC] = filt2_ts(bq,aq,xq,si,w); otherwise disp('Unknow method: MODE') end
228
18 Reale digitale Filter: Quantisierte Arithmetik
%% Indicate overflow fprintf('\nOverflow counter = %g\n',OC) % Search for limit cycle start = 0; period = 0; CYCLE = 'false'; for n = N-1:-1:1 if s(:,N) == s(:,n) start = n; period = N-n; LIMCYC = 'true'; % limit cycle discovered break end end if LIMCYC fprintf('Limit cycle detected\n') %4i\n Period %4i\n',start,period) fprintf(' Start fprintf(' Minimum %4i*LSB\n Maximum %4i*LSB\n',... min(s(1,start:start+period)/LSB),max(s(1,start:start+period)/LSB)) else fprintf('No limit cycle detected\n') end %% Graphics FIG1 = figure('Name','dsplab18_1 : 2nd order block with quantized arithmetic',... 'NumberTitle','off','Units','normal','Position',[.30 .30 .55 .55]); subplot(2,1,1), plot(0:N-1,y/LSB,'o',0:N-1,yref/LSB,'x'); grid xlabel('{\itn} \rightarrow'); ylabel('{\ity}[{\itn}] / LSB \rightarrow') if LIMCYC % limit cycle detected n1 = start; n2 = start + period; subplot(2,1,2), plot(s(1,n1:n2)/LSB,s(2,n1:n2)/LSB,'ro',... s(1,n1:n2)/LSB,s(2,n1:n2)/LSB,'b') grid; title(['limit cycle with periode ',num2str(period)]); xlabel('{\its}_1[{\itn}] / LSB \rightarrow') ylabel('{\its}_2[{\itn}] / LSB \rightarrow') end
Programmbeispiel 18-2 System 2. Ordnung mit Arithmetik im Zweierkomplement-Format function [y,s,OC] = filt2_rc(b,a,x,si,w) % 2nd order block for IIR filter with quantization by % rounding and two's-complement overflow mode % - signals and filter coefficients in two's-complement format % [y,s,OC] = filt2_rc(b,a,x,si,w) % b : numerator coefficients [b0 b1 b2] % a : denominator coefficients [1 a1 a2] % x : input sequence % si : initial values for state space variables [s1 s2] % w : word length % y : output sequence % s : sequences of state space variables % s(1,:) = s1[n] and s(2,:) = s2[n] % OC : overflow counter % filt2_rc.m * mw * 15Apr2011 LSB = 2^(-w+1); % least significant bit % Memory allocations N = length(x); s = zeros(2,N+1); y = zeros(1,N); OC = 0;
18.3 Versuchsdurchführung
229
% Two's-complement numbers s(:,1) = min(si',1-LSB); s(:,1) = max(s(:,1),-1); % initial values % Filtering with rounding and two's-complement overflow mode for n = 1:N % output signal y[n] = b0*x[n] + s1[n] with word length reduction b0x = LSB*round(b(1)*x(n)/LSB); y(n) = b0x + s(1,n); % two's-complement overflow [y(n),OI] = overflow(y(n)); OC = OC + OI; % state space variable 1 % s1[n+1] = b1*x[n] + s2[n] + 2*(-a1/2)*y[n] with word length reduction b1x = LSB*round(b(2)*x(n)/LSB); a1y = LSB*round((-a(2)/2)*y(n)/LSB); s(1,n+1) = b1x + s(2,n) + a1y + a1y; % two's-complement overflow [s(1,n+1),OI] = overflow(s(1,n+1)); OC = OC + OI; % state space variable 2 % s2[n+1] = b2*x[n] + (-a2)*y[n] with word length reduction b2x = LSB*round(b(3)*x(n)/LSB); a2y = LSB*round(-a(3)*y(n)/LSB); s(2,n+1) = b2x + a2y; % two's-complement overflow [s(2,n+1),OI] = overflow(s(2,n+1)); OC = OC + OI; end return function [xO,OI] = overflow(x) % Subfunction : two's-complement overflow detection % [xO,OI] = overflow(x) % x : input value % xO : two's-complement repesentation % OI : Overflow indicator (1: overflow, 0: no overflow) xO = rem(x,2); OI = 0; % two's-complement overflow if xO = 1 xO = xO - 2*sign(xO); OI = 1; end return
M18.2
Großer Grenzzyklus
Wiederholen Sie die Messungen von vorhin mit den in Tabelle 18-4 angegebenen Impulsamplituden. Tragen Sie die Messresultate dort ein und diskutieren Sie das Ergebnis. Hinweis: Setzen Sie gegebenenfalls die Zahl der Simulationszyklen angemessen hoch.
Wiederholen Sie die Untersuchungen des Systems 2. Ordnung für die Arithmetik mit Betragsabschneiden und Sättigung, siehe Programm filt2_ts. Können große Grenzzyklen beobachtet werden?
230
18 Reale digitale Filter: Quantisierte Arithmetik Tabelle 18-4 Beispiel für Grenzzyklen in einem System 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. Polphase Mf
ymin / LSB
ymax / LSB
Periode
0° 30° 60° 90°
M18.3
Inneres Rauschen
In diesem Versuchsteil soll die Leistung des inneren Rauschens eines Systems 2. Ordnung geschätzt werden. In Bild 18-12 ist der prinzipielle Messaufbau gezeigt. Durch den Vergleich der Ausgangssignale eines idealen Systems (filter) und des realen Systems (filt2_rc) wird das innere Rauschen messbar. Voraussetzung ist, dass das reale System linear bleibt, d. h., keine Überläufe auftreten. Der Skalierungsfaktor c ist hierfür geeignet zu wählen. Führen Sie Simulationen zu den in Tabelle 18-5 und Tabelle 18-6 gegebenen Parametern durch und tragen Sie die Ergebnisse dort ein. Erklären Sie die Resultate. Erklären Sie insbesondere den Unterschied in den Ergebnissen für die Polphasen 89° und 90°. Welcher Zusammenhang besteht zwischen der Leistung des inneren Rauschens und der Wortlänge in Tabelle 18-6? Tabelle 18-5 Inneres Rauschen eines Systems 2. Grades, siehe Bild 18-4, mit Zählerkoeffizienten b0 = 0.9375, b1 = b2 = 0, Polradius Uf = 0.95 und der Wortlänge von 16 Bits bei Wortlängenverkürzung durch Runden Polwinkel Mf Leistung des inneren Rauschens in dB 1
0°
30°
analytisch1
80.0
geschätzt
80.0
siehe (18.4) und (18.5)
60°
89°
90°
18.3 Versuchsdurchführung
231
Tabelle 18-6 Inneres Rauschen eines Systems 2. Ordnung, siehe Bild 18-4, mit Zählerkoeffizienten b0 = 0.9375, b1 = b2 = 0, Polradius Uf = 0.95, Polphase Mf = 30° und Wortlängenverkürzung durch Runden Wortlänge in Bits Leistung des inneren Rauschens in dB
10
12
14
16 80.1
Programmbeispiel 18-3 Untersuchung des inneren Rauschens eines Systems 2. Ordnung % Estimation of round-off noise in 2nd order block with quantized % coefficients and fixed-point arithmetic % used functions: filt2_rc.m % dsplab18_2.m * mw * 16Apr2011 w = 16; LSB = 2^(-w+1); % word length rho = .95; phi = 30*pi/180; % pole magnitude and phase N = 1e5; % number of simulation cycles % noise scaling factor c = 2^(-16+8); % 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 % quantized coefficients bq = LSB*round(b/LSB); aq = [1 2*LSB*round((a(2)/2)/LSB) LSB*round(a(3)/LSB)]; % Input signal - noise % uniformly distributed in ]-1,1[ x = 2*rand(1,N)-ones(1,N); xq = LSB*round(c*x/LSB); % scaled and quantized input signal % referenz system : 2nd order block with MATLAB default arithmetic [yref,sref] = filter(bq,aq,xq,si); % 2nd order block with fixed-point arithmetic [y,s,OC] = filt2_rc(bq,aq,xq,si,w); % rounding, two's-complement overf. fprintf('\nOverflow counter = %g\n',OC) % indicate overflow r = yref - y; % error signal Pr = sum(r.^2)/length(r); PrdB = 10*log10(Pr); % power estimates % Theoretical estimation of noise power at the filter output % noise figure Ri0 = (1+aq(3))/((1-aq(3))*((1+aq(3))^2-(aq(2))^2)); Nb = length(find(bq)); % number of non-zero numerator coefficients Na = 1; if aq(2)~=0 Na = 5; end NP = (Nb+Na)*Ri0*(LSB^2)/12; % Display results fprintf('Pole: rho = %g Omega = %g°\n',sqrt(a(3)),... (180/pi)*acos(-aq(2)/(2*sqrt(a(3))))) fprintf('Round-off noise figure: %+6.2f dB\n',10*log10(Ri0)) fprintf('Round-off noise power \n') : %+6.2f dB\n',10*log10(NP)) fprintf('- Theory : %+6.2f dB\n',PrdB) fprintf('- Estimation
232 M18.4
18 Reale digitale Filter: Quantisierte Arithmetik Inneres Rauschen eines Cauer-Tiefpasses 6. Ordnung
Die Filterkoeffizienten eines Cauer-Tiefpasses 6. Ordnung in Kaskadenform sind in Tabelle 18-7 zusammengestellt. Messen Sie die Leistung des inneren Geräusches des Cauer-Tiefpasses, siehe auch Tabelle 17-5. Tabelle 18-7 Koeffizienten des Cauer-Tiefpasses 6. Ordnung SOSq = 0.3203 0.4844 0.0469
-0.0391 0.6797 -0.0313
0.3203 0.4844 0.0469
1.0000 1.0000 1.0000
-1.1875 -1.3281 -1.1094
0.7109 0.5000 0.9141
Wiederholen Sie Messung für alle möglichen Reihenfolgen der Blöcke und tragen Sie die Ergebnisse in Tabelle 18-8 ein. Tabelle 18-8 Leistung des inneren Rauschens Ni eines Cauer-Tiefpasses 6. Ordnung in Kaskadenform mit quantisierter Arithmetik bei der Wortlänge von 16 Bits Reihenfolge1 Ni in dB 1
123
132
213
231
312
321
82.1
Die Reihenfolge 123 entspricht der Reihenfolge in Tabelle 18-7 mit den Blöcken 2. Ordnung entsprechend den Zeilen von SOS.
Programmbeispiel 18-4
Untersuchung des inneren Rauschens eines Cauer-Tiefpasses
% Roundoff noise in elliptic IIR filters of 6th order in % cascade form of 2nd order blocks with quantized coefficients % and fixed-point arithmetic, see filt2_rc % dsplab18_3.m * mw * 16Apr2011 w = 16; LSB = 2^(-w+1); % word length and least significant bit N = 1e5; % number of simulation cycles c = 2^(-w+12); % noise scaling factor % Quantized filter coefficients of block 1,2 and 3 of elliptic lowpass SOS = [0.3203 -0.0391 0.3203 1.0000 -1.1875 0.7109 0.4844 0.6797 0.4844 1.0000 -1.3281 0.5000 0.0469 -0.0313 0.0469 1.0000 -1.1094 0.9141]; bq = LSB*round(SOS(:,1:3)/LSB); aq = [ones(3,1) 2*LSB*round((SOS(:,5)/2)/LSB) LSB*round(SOS(:,6)/LSB)]; % initial values for state space variables si = [0 0]; % input signal - noise % uniformly distributed in ]-1,1[ x = 2*rand(1,N)-ones(1,N); xq = LSB*round(c*x/LSB); % scaled and quantized input signal % Reference system [yref1,sref1] = filter(bq(1,:),aq(1,:),xq); [yref2,sref2] = filter(bq(2,:),aq(2,:),yref1); [yref3,sref3] = filter(bq(3,:),aq(3,:),yref2); % System with rounding and two's-complement overflow % block order k1 = 1; k2 = 2; k3 = 3; [y1,si1,OC] = filt2_rc(bq(k1,:),aq(k1,:),xq,si,w); fprintf('\ndsplab18_3\n')
18.3 Versuchsdurchführung
233
fprintf('(1) Overflow counter = %g\n',OC) [y2,si2,OC] = filt2_rc(bq(k2,:),aq(k2,:),y1,si,w); fprintf('(2) Overflow counter = %g\n',OC) [y3,si3,OC] = filt2_rc(bq(k3,:),aq(k3,:),y2,si,w); fprintf('(3) Overflow counter = %g\n',OC) % Evaluation - power measurement % error signal r = yref3 - y3; Pr = sum(r.^2)/length(r); PrdB = 10*log10(Pr); % power of error signal Py = sum(y3.^2)/length(y3); PydB = 10*log10(Py); % output signal power fprintf('Round-off noise power %+6.2f dB\n',PrdB) fprintf('Signal-to-noise ratio %+6.2f dB\n ',PydB - PrdB)
Hinweise zu MATLAB-Funktionen und M-Files Im Folgenden werden für die Versuchsdurchführung nützliche MATLAB-Befehle und -Funktionen aufgelistet, zu denen Sie sich mithilfe der Help-Funktion Erläuterungen und Beispiele am Bildschirm anzeigen lassen können, siehe auch vorherige Versuche. Tabelle 18-9 MATLAB-Befehle benutzte Programme und Dateien
Þ Online-Ressourcen
dsplab18_1.m, dsplab18_2.m, dsplab18_3.m, filt2cr.m, filt2ts.m
234
19
Lernkontrollfragen zu stochastischen Signalen und realen Systemen
Dieser Abschnitt stellt einige Aufgaben und Fragen zu stochastischen Signalen, der AnalogDigital-Umsetzung und realen digitalen Systemen bereit, die Sie zur Wiederholung nutzen können. Hinweis: Treffen Sie gegebenenfalls vereinfachende Modellannahmen und verwenden Sie geeignet gerundete bzw. geschätzte Zahlenwerte. Die Aufgaben sind zu zwei Gruppen zusammengestellt, die in maximal 45 Minuten ohne lange Rechnungen zu lösen sind.
19.1
Aufgabenkatalog A
Aufgabe 19A1 Histogramm
In einer MATLAB-Simulation wurde mit y = hist(x,[0 1 2 3 4 5])
die Bildschirmausgabe erzeugt die Werte y =
2
10
38
42
7
1
a) Zeichnen Sie das Histogramm. b) Geben Sie die Wahrscheinlichkeitsdichtefunktion der approximierenden Normalverteilung analytisch an. Aufgabe 19A2 Rauschsignal und Filterung
Mit dem MATLAB-Befehl x = 0.2 + 0.5*randn(M,1);
wurde ein Rauschsignal der Länge M erzeugt. a) Geben Sie den linearen Mittelwert und die mittlere Leistung des Rauschsignals an. b) Das Rauschsignal wird nun in einen idealen Tiefpass eingespeist mit dem Frequenzgang H e j:
1 für : S / 2 ® ¯0 sonst
Geben Sie den linearen Mittelwert und die mittlere Leistung des Signals am Tiefpassausgang an.
M. Werner, Digitale Signalverarbeitung mit MATLAB®, DOI 10.1007/978-3-8348-8621-7_19, © Vieweg+Teubner Verlag | Springer Fachmedien Wiesbaden GmbH 2012
19.1 Aufgabenkatalog A
235
Aufgabe 19A3 Wortlängeneffekte
In der digitalen Signalverarbeitung unterscheidet man zwischen Quantisierungsfehlern und Arithmetikfehlern. Erläutern Sie die beiden Begriffe. Wo treten diese Fehler auf, wie werden sie verursacht und welche Auswirkungen haben sie? Aufgabe 19A4 Zahlendarstellung im Zweierkomplementformat
Ergänzen Sie die fehlenden Angaben in Tabelle 19-1. Tabelle 19-1 Zahlendarstellung Dezimalformat
Zweierkomplementformat mit 8 Bit 1010 10002c
+0.3672d 0.3672d
Aufgabe 19A5 Reale Systeme
a) Das System zum Pol-Nullstellendiagramm in Bild 19-1 soll in Kaskadenform realisiert werden. Fassen Sie die Pole und Nullstellen zu Teilsystemen geeignet zusammen. Hinweis: Markieren Sie die zusammengehörigen Pole und Nullstellen im Bild.
b) Ist die Reihenfolge der Teilsysteme von Bedeutung? Begründen Sie Ihre Antwort. 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
-0.5
0 Real Part
0.5
Bild 19-1 Pol-Nullstellendiagramm
1
236
19 Lernkontrollfragen zu stochastischen Signalen und realen Systemen
19.2
Aufgabenkatalog B
Aufgabe 13B1 Rauschsignale
In Bild 19-2 sind vier Ausschnitte von Musterfolgen stochastischer Prozesse zu sehen. Dabei handelt es sich zweimal um weißes Rauschen. Zwei Musterfolgen sind durch Filterung weißen Rauschens mit einem Tiefpass bzw. einem Hochpass entstanden. Ordnen Sie die beiden gefilterten Signale richtig zu. Begründen Sie Ihre Auswahl.
x1[n] o
1
0
-1
0
20
40
60 no
80
100
120
0
20
40
60 no
80
100
120
0
20
40
60 no
80
100
120
0
20
40
60 no
80
100
120
x2[n] o
1
0
-1
x3[n] o
1
0
-1
x4[n] o
1
0
-1
Bild 19-2 Musterfolgen stochastischer Prozesse
Aufgabe 13B2 A/D-Umsetzung
a) Worauf ist bei der A/D-Umsetzung bezüglich des Eingangssignals besonders zu achten? Begründen Sie Ihre Antwort. b) Wie wird das Verhältnis aus der Leistung des (Nutz-)Signals zu der des Quantisierungsrauschens einfach abgeschätzt? Aufgabe 13B3 Reale Systeme
Was sind kleine und große Grenzzyklen? Wie entstehen sie und was kann gegen Sie unternommen werden?
19.2 Aufgabenkatalog B
237
Aufgabe 19B4 Zahlendarstellung im Gleitkommaformat
Ergänzen Sie die fehlenden Angaben in Tabelle 19-2. Tabelle 19-2 Zahlendarstellung Dezimalformat
IEEE Single Precision (normalisiert) 1011 1111 1000 0000 0000 0000 0000 0000
1.625101
Aufgabe 13B5 Reale Systeme
Um störende Wortlängeneffekte bei der Signalverarbeitung im Zweierkomplementformat zu vermeiden, wird die Filterstruktur in Bild 19-3 mit unterschiedlichen Wortlängen vorgeschlagen: die Multipliziererausgänge und das Akkumulator-Register des Addierers besitzen die doppelte Wortlänge (2w). Das Ausgangssignal des Addierers wird wieder auf die einfache Wortlänge (w) zurückgeführt. Können mit der Struktur ungünstige Wortlängeneffektet durch die arithmetischen Operationen verhindert werden? Begründen Sie Ihre Antwort.
2w
w x[n] D
w y[n]
+
b0 2 w
D
2w a1/2
b1 D
D b2 2w
2w
a2
Bild 19-3 Blockdiagramm der Teilsystems in Direktform I
238
19 Lernkontrollfragen zu stochastischen Signalen und realen Systemen
19.3
Auswahlfragen
Welche der folgenden Aussagen sind uneingeschränkt richtig? Kreuzen Sie die richtigen Aussagen an. Mindestens eine Antwortalternative bzw. Aussage ist jeweils richtig (x aus 5). Zu Versuch 14: Kenngrößen stochastischer Signale a)
Eine normierte stochastische Variable nimmt nur Werte im Intervall [0, 1] an.
{
b)
Wegen der Verwendung von Zufallszahlen werden bei wiederholten Monte-CarloSimulationen niemals die gleichen Ergebnisse erzielt.
{
c)
Ist ein Zufallsprozess ergodisch, so können die stochastischen Kenngrößen durch Zeitmittelwerte geschätzt werden. {
d)
Mit dem empirischen Korrelationskoeffizienten wird der lineare Zusammenhang zwischen zwei Zufallszahlenfolgen bestimmt.
e)
{
Ein Zufallsprozess ist stationär, wenn sich alle Musterfunktionen auf denselben Endwert einschwingen. {
Zu Versuch 15: Stochastische Signale und Systeme a)
Die Varianz der Summe zweier unabhängiger stochastischer Variablen ist gleich der Summe der Varianzen der Variablen.
{
b)
Das Leistungsdichtespektrum am Ausgang eines LTI-Systems hängt bei Erregung mit weißem Rauschen vom Frequenzgang des Systems ab. {
c)
Die z-Transformierte der Zeit-Autokorrelationsfolge stabiler LTI-Systeme hat nur Pole im Inneren des Einheitskreises. {
d)
Die Autokorrelationsfolge eines weißen Prozesses ist die Impulsfolge.
{
e)
Die Zeit-Autokorrelationsfolge an der Stelle null ist gleich der Energie der Impulsantwort.
{
Zu Versuch 16: Analog-Digital-Umsetzung a)
Im Gleitkommaformat ist die Präzision exponentenabhängig.
{
b)
Quantisierung mit dem Zweierkomplementformat vermeidet granulares Rauschen.
{
c)
Mit der 6dB-pro-Bit-Regel wird das SNR der Analog-Digital-Umsetzung abgeschätzt. {
d)
Die Präzision im Zweierkomplementformat beträgt genau ein LSB.
{
e)
In der digitalen Signalverarbeitung ist das Gleitkommaformat die bessere Lösung.
{
Zu Versuch 17: Reale Filter: Koeffizientenquantisierung a)
Durch Quantisierung der Filterkoeffizienten können FIR-Systeme instabil werden.
{
b)
Die Quantisierung der Filterkoeffizienten kann zur Verletzung der Entwurfsvorgaben führen.
{
c)
Der Effekt der Polausdünnung betrifft besonders schmalbandige Tiefpässe.
{
d)
IIR-Systeme werden in Kaskadenform implementiert, damit sich die Effekte der Koeffi{ zientenquantisierung über die Teilblöcke gegenseitig kompensieren.
e)
Bei der Realisierung von IIR-Systemen in Kaskadenform mit Teilblöcken 2. Ordnung ist { die Reihenfolge nicht beliebig.
19.3 Auswahlfragen
239
Zu Versuch 18: Reale Filter: Quantisierte Arithmetik a)
Kleine Grenzzyklen entstehen durch das Runden der Multiplizierer.
{
b)
Die Rauschzahl eines Systems 2. Ordnung in transponierter Direktform II und mit konjugiert komplexem Polpaar ist bei der Polphase von r90° maximal.
{
Bei der Addition im Zweierkomplementformat verhindert die Sättigungskennlie Überläufe.
{
Das Rundungsrauschen in typischen Systemen kann mithilfe eines linearen Ersatzblockdiagramms modelliert werden.
{
Beim Betragsabschneiden wird dem System Energie entzogen.
{
c) d) e)
240
20
Lösungen zu den Versuchen
20.1
Vorbemerkungen
Nachfolgend finden Sie Hinweise, Ergebnisse und wo angemessen auch ausführliche Lösungen zu den Aufgaben und Versuchsdurchführungen. Zum Buch sind Programme und Dateien entstanden, die Sie als Zusatzmaterial im OnlinePLUS-Programm des Verlags über die Homepage www.viewegteubner.de kostenlos abrufen können.
20.2
Lösungen: Zeitdiskrete Signale
A2.1 u. 2 Siehe Bild 20-1 und Programm dsplab2_2
1
1
0.8
0.8 x2[n] o
x1[n] o
Hinweis: Sinus- und Kosinusfolgen lassen sich als Stabdiagramme meist schnell skizzieren, wenn mit den zugrundeliegenden zeitkontinuierlichen Funktionen als Hilfslinien begonnen wird.
0.6 0.4 0.2
0.4 0.2
0 -5
0 n o
0 -5
5
1
1
0.5
0.5 x4[n] o
x3[n] o
0.6
0 -0.5 -1
0 n o
5
5 n o
10
0 -0.5
0
5 n o
10
-1
0
Bild 20-1 Signalbeispiele (dsplab2_2)
A2.3
Das Signal 3 hat die Perioden 7. Das Signal 4 ist aperiodisch.
M2.2
Mit dem Programm dsplab2_2 wurden die Bilder der Signale x1[n] bis x4[n] in Bild 20-1 erzeugt.
M2.2 bis 6 Ausgehend vom Programmbeispiel 2-3 wurden folgende Programme generiert: Audiosignal mit ADSR-Bewertung ) dsplab2_3b
M. Werner, Digitale Signalverarbeitung mit MATLAB®, DOI 10.1007/978-3-8348-8621-7_20, © Vieweg+Teubner Verlag | Springer Fachmedien Wiesbaden GmbH 2012
20 Lösungen zu den Versuchen
241
Audiosignal mit ADSR-Bewertung und höheren Harmonischen ) dsplab2_3c Die höchste Signal(grund)frequenz leitet sich aus dem Ton d2 mit ungefähr 587 Hz ab. Damit ist die Zahl der Oberschwingungen auf 5 beschränkt (6f0 = 3524 Hz). Abspielen einer WAVE-Datei ) dsplab2_4
20.3
Lösungen: Diskrete Fourier-Transformation
A3.1
Orthogonalität für komplexe Exponentielle Für k = mN ist der Exponent mit j2Sm stets ein ganzzahliges Vielfaches von 2S, so dass jeder der N Summanden gleich 1 ist. Für k z mN (insbesondere auch k z 0) folgt für die (endliche) geometrische Reihe 1 e j 2S k 1 N e j 2S k N 1
1 N 1 2S § · k n¸ exp ¨ j N n 0 N © ¹
¦
0
da der Zähler 0 ist und der Nenner endlich und von 0 verschieden ist. A3.2
DFT-Paare DFT
x1[n ] G [n n0 ]
DFT
x3[n ] sin :0n
x4 [n ] e j:0n
x5[n ] 1
§ 2S · X 1[k ] exp ¨ j n0k ¸ N © ¹
l
l
DFT
l
DFT
l
X 3[k ]
X 4 [k ]
X 5 [k ]
2S · § j ¨ :0 k ¸ N ¹ © 1 e
j
2S k N
N G [k ]
DFT-Paare § 2S · DFT x2 > n @ cos ¨ On ¸ l © N ¹ x4 > n @ e j 2SO n N
M3.1-2
2S · § j :0 k ¸ N N ¹
¨ 1 e ©
1 e j 2S k 1 e
A3.3
2S · 2S · § § ª j ¨ :0 k ¸N j ¨ :0 k ¸N N N ¹ « © ¹ © 1 1 e 1 e « 2S · 2S · § § 2j « j ¨ :0 k ¸ j ¨ :0 k ¸ N ¹ N ¹ «¬ 1 e © 1 e ©
DFT
l
X 2 >k @
X 4 >k @
N G > k O @ G ª¬ k N O º¼ 2
N G >k O @
Signalerzeugung, DFT und grafische Darstellung siehe dsplab3_1b.
º » » » »¼
242 M3.3
20.3 Lösungen: Diskrete Fourier-Transformation Mit dem Begriff Leckphänomen (Leakage phenomenon) wird das „Ausfliesen“ der DFT-Koeffizienten bezeichnet, wenn ein Ausschnitt eines periodischen Signals der DFT unterworfen wird und die DFT-Länge nicht genau ein ganzzahliges Vielfaches der Periode erfasst, siehe Bild 20-2. Es treten mehrere von null verschiedene DFTKoeffizienten auf, obwohl ein Eintonsignal zugrunde liegt. Das Leckphänomen wird nicht durch einen Fehler hervorgerufen, sondern ist durch die Segmentierung der Kurzzeit-Spektralanalyse (Blocktransformation) bedingt.
1
1
0.5
0.5
Im( x2[n] ) o
Re( x2[n] ) o
Nach der parsevalschen Gleichung muss die Signalenergie im DFT-Spektrum erscheinen, weshalb außer bei einer Nullfolge nicht alle DFT-Koeffizienten gleich null sein können. Die Energieanteile von (Fourier-)Spektralkomponenten, die im Frequenzraster des DFT-Spektrums keine direkte Entsprechung haben, tauchen deshalb zwangsweise an anderen Stellen auf.
0 -0.5 -1
0
10
20
0 -0.5 -1
30
0
10
no
30
20
30
10 Im( X2[k] ) o
10 Re(X2[k]) o
20 no
5 0 -5 -10
5 0 -5 -10
0
10
20
30
0
ko
10 ko
Bild 20-2 Leckphänomen (dsplab3_1b)
M3.4
Fouriersynthese, siehe auch Programm zur inverse DFT idft Den Zusammenhang zur Fourier-Reihe zeigen folgende Überlegungen auf. Zuerst wird die kompakt gegebene Fourier-Reihe so umgeformt, dass ein Koeffizientenvergleich leichter ersichtlich wird.
x t
1 2 f 1 sin 2m 1 2S t 2 S m 0 2m 1
¦
1 2 ª 1 1 º sin 2S t sin 3 2S t sin 5 2S t "» 2 S «¬ 3 5 ¼ f 1 2 1 sin 2S k t 2 S k 1,3,5,! k
¦
20 Lösungen zu den Versuchen
243
Mit N = 16 Abtastwerten pro DFT-Block, d. h. pro Signalperiode T0, gilt für das Abtastintervall Ts = T0 / N. Damit ergibt sich die Abtastfolge für n = 0:15 bei auf die Periode T0 normierter Zeit x[n ]
x t
1 2 2 S k
nTs
1 2 2 S k
f
1 § 2S · sin ¨ k nT0 ¸ k N © ¹ 1,3,5,!
¦
T0 1
f
1 § 2S · sin ¨ k n¸ k N © ¹ 1,3,5,!
¦
Die Abtastfolge ist rein reell. Sie besitzt die Konstante 1/2 und ansonsten nur Sinusterme. Aus dem Zuordnungsschema in Tab. 3-2 folgt: Die Konstante liefert einen (reellen) Impulsanteil mit Amplitude N / 2 = 8 im Spektrum für k = 0. Die Sinusterme sind ungerade, was auf einen ebenfalls ungeraden Imaginärteil im Spektrum führt. Für N = 16 gerade heißt das X[1] = X[15], X[2] = X[14], … , X[7] = X[9], X[8] = 0 Der Koeffizientenvergleich mit den Sinustermen in x[n] liefert X[1] = j(N/2)(2/S) | j5.0930.
1
1
0.5
0.5
Im( x[n] )o
Re( x[n] )o
Fouriersynthese siehe Bild 20-3.
0 -0.5
0 -0.5
-1
-1 0
5
10
15
0
5
5
15
10
15
5 Im( X[k] ) o
Re( X[k] ) o
10 no
no
0 -5 0
5
10
15
0 -5 0
5
ko
ko
Bild 20-3 Fouriersynthese mit N = 16 (dsplab3_2)
M3.5
Rechenzeit für die DFT eines Audiosignals nach der Summenformel (dft) PC: Intel® Core™ 2 Duo CPU, 2.53 GHz und 6 GByte Arbeitsspeicher „Rechenzeit“ für die DFT-Länge 1024 etwa 0.53 s und für das Audiosignal der Dauer 1 Sekunde etwa 40.6 s bei der Abtastfrequenz fA = 8192 Hz, also DFT-Länge gleich 8192 (dsplab3_3).
244
20.3 Lösungen: Diskrete Fourier-Transformation
s(t) o
1 0
| S(f) | / S0 o
| S(f) | / S0 o
-1
0
0.02
0.04
0.06 0.08 Time t in s o
0.1
0.12
0.14
1 0.5 0
10
10
0
500
1000
1500 2000 2500 Frequency f in Hz o
3000
3500
4000
0
500
1000
1500 2000 2500 Frequency f in Hz o
3000
3500
4000
0
-2
Bild 20-4 Audioclip und DFT-Betragspektrum in linearer bzw. logarithmischer Darstellung (dsplab3_3)
M3.6
Effiziente DFT reeller Folgen mit geraden Längen Programmausschnitt für die DFT-Berechnung nach (3.23) und (3.24)
%% DFT implementation with for loops M = N/2; % complex sequence v = s(1:2:end) + 1i*s(2:2:end); V = dft(v); % DFT of complex sequence V = [V V(1)]; % append V[k=0] Sf = zeros(1,N); M = N/2; wN = exp(-1i*2*pi/N); for k = 0:M Sf(1+k) = .5*( V(1+k) + conj(V(1+M-k)) )... - 1i*.5*wN^k*( V(1+k)-conj(V(1+M-k)) ); end for k = M+1:N-1 % DFT of audio clip Sf(1+k) = conj(Sf(1+N-k)); end
Die benötigte Rechenzeit für das Audiosignal der Dauer 1 Sekunde beträgt nunmehr circa 9.5 s und somit etwa 23 %. Die Rechenzeitersparnis beträgt 77 %. Man vergleiche Rechenzeit und DFT-Länge. Die DFT-Länge wurde um den Faktor 2 und die Rechenzeit um den Faktor 4 verkürzt.
20 Lösungen zu den Versuchen
20.4
Lösungen: Schnelle Fourier-Transformation
A4.2
Wachstum der Komplexität
245
Das Wachstum der Komplexität der DFT, in (4.3) abgeschätzt durch die Anzahl der benötigten FLOPs, liefert einen quadratischen Anstieg mit zunehmender DFTLänge. Eine Verdopplung der DFT-Länge bedeutet demzufolge eine Vervierfachung der Anzahl der FLOPs. Für die DIT-Radix-2-FFT folgt mit der Abschätzung (4.14) ein im Wesentlichen linearer Anstieg der Komplexität mit der DFT-Länge. Eine Verdopplung der DFTLänge bedeutet dann eine Verdopplung der Anzahl der FLOPs. Nimmt man an, dass die bei der Ausführung des Algorithmus durch den Rechner verbrauchte Zeit proportional zu der Anzahl der FLOPs ist, so sollte das lineare bzw. quadratische Wachstum an den Rechenzeiten beobachtbar sein. M4. 1
Programm für die DIT-Radix-2-FFT
function X = dit2fft(x) % Computation oft the decimation-in-time radix-2 fft [OpSc75] % function X = dit2fft(x) % x : time-domain signal % X : dft spectrum of x % dit2fft.m * mw * 13Oct2010
X = x; N = length(X); NV2 = N/2; NM1 = N-1; J = 1; % Decimation in time (reverse ordering) for I=1:NM1 if (I