Digitale Signalverarbeitung mit MATLAB®: Grundkurs mit 16 ausfuhrlichen Versuchen [5 ed.] 978-3-8348-1473-9, 978-3-8348-8621-7

Das Buch führt in die Grundlagen und Anwendungen der digitalen Signalverarbeitung durch praktische Übungen am PC ein. Es

330 28 4MB

German Pages 318 [328] Year 2012

Report DMCA / Copyright

DOWNLOAD PDF FILE

Table of contents :
Front Matter....Pages I-XI
Erste Schritte in MATLAB....Pages 1-17
Zeitdiskrete Signale....Pages 18-28
Diskrete Fourier-Transformation....Pages 29-39
Schnelle Fourier-Transformation....Pages 40-54
Kurzzeit-Spektralanalyse: Grundlagen....Pages 55-71
Kurzzeit-Spektralanalyse: Beispiele....Pages 72-81
Lernkontrollfragen zur DFT, FFT und Kurzzeit-Spektralanalyse....Pages 82-87
Faltung, Differenzengleichungen und Systeme....Pages 88-102
Finite-duration-impulse-response-Systeme....Pages 103-113
Entwurf digitaler FIR-Filter....Pages 114-127
Infinite-duration-impulse-response-Systeme....Pages 128-137
Entwurf digitaler IIR-Filter....Pages 138-153
Lernkontrollfragen zu FIR- und IIR-Systemen und zum Filterentwurf....Pages 154-161
Kenngrößen stochastischer Signale....Pages 162-178
Stochastische Signale und LTI-Systeme....Pages 179-187
Analog-Digital-Umsetzung....Pages 188-202
Reale digitale Filter: Koeffizientenquantisierung....Pages 203-216
Reale digitale Filter: Quantisierte Arithmetik....Pages 217-233
Lernkontrollfragen zu stochastischen Signalen und realen Systemen....Pages 234-239
Lösungen zu den Versuchen....Pages 240-309
Back Matter....Pages 310-318
Recommend Papers

Digitale Signalverarbeitung mit MATLAB®: Grundkurs mit 16 ausfuhrlichen Versuchen [5 ed.]
 978-3-8348-1473-9, 978-3-8348-8621-7

  • 0 0 0
  • Like this paper and download? You can publish your own PDF file online for free in a few minutes! Sign Up
File loading please wait...
Citation preview

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 (1˜4 + 7˜5 + 3˜6) ausgeführt. >> x*y € ans = 57 Die explizite Definition von Vektoren und Matrizen durch Eingabe der Elemente kann beschwerlich sein. Um dem abzuhelfen, bietet MATLAB spezielle Befehle an. Mit den folgenden Befehlen werden häufig benötigte Matrizen erzeugt. >> x = ones(2,3) € x =

1 1

1 1

1 1

>> 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 2˜n 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(2S˜n/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 440˜2+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 k˜f0 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 j˜2S ˜ f0 ˜k ˜t

¦

x (t )

Aperiodische Zeitfunktion

x[n ]

k f

ck

1 ˜ T0

t0 T0

³

x (t ) ˜ e  j˜2S ˜ f0 ˜k ˜t dt

N 1

X [k ]

t0

¦ x[n] ˜ e

 j˜2S ˜

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 k˜f0 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

j˜2S ˜ 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 = 2S˜f

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 2S˜f0˜k erzeugt, ordnet die DFT wegen der Periodizität der Exponentialfunktion exp(j˜2S˜k/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  j˜2S 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˜ ˜n˜k 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 §¨ j˜16˜ 2k ˜n  j˜16˜ 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 @

§  j˜2S ˜ 2 k · j˜2S ˜ 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

n˜l 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)

m˜k 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 = 2˜M 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+l˜M] 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

m˜N

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.5˜S / 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 2˜m 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 @ ˜ wNn˜k

für k = 0:N1

(4.1)

n 0

mit den komplexen Faktoren n˜k wN

e

 j˜

2S ˜n˜k 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 @ ˜ wNn˜k

¦ x >n @ ˜ wNn˜k  ¦ x >n @ ˜ wNn˜k

(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@ ˜ wN2m˜k  ¦ x >2m  1@ ˜ wN

2 m 1 ˜k

(4.6)

Berücksichtigt man noch die Umformungen für die komplexen Faktoren 2 m˜k wN

m˜k wM

(4.7)

und

2m 1 ˜k wN

k m˜k 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@ ˜ wMm˜k  wNk ˜ ¦ x >2m  1@ ˜ wMm˜k

(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@ ˜ wMm˜k

m 0 

U >k @

k  wN ˜

M 1

¦ v >m @ ˜ wMm˜k

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

m˜k m˜M wM ˜w M N

m˜k 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 8˜N˜log2(N) FLOPs. Das exponentielle Wachstum des Rechenaufwandes mit der DFTLänge ist nun durch ein, im Wesentlichen, lineares Wachstum ersetzt. Im Beispiel einer DFTLänge N = 1024 benötigt die Berechnung der DFT in der direkten Form (4.3) 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



2S N

k ˜ ': DFT für k = 0 : N  1

(5.19)

entspricht. X w >k @



X w e j˜2S ˜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(:0˜n) 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

20˜lg(0.04714) dB | 26.5 dB

20˜lg(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

8˜S / N

26.5 dB

Blackman

0.0508

12˜S / N

58.1 dB

Fensterfolge (Parameter)

Chebyshev (D = 60 dB)

10˜S / N

Gaussian (E = 2.5)

13˜S / N

Hamming

8˜S / N

Kaiser (E = 5.4)

8˜S / N

Rectangular

M5.4

0.0273

4˜S / 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)

2˜N

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

2˜N

(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)

2˜N

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

2˜N

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 2˜L.

{

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

E X

(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 « » ˜  2˜U ˜  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 = 2˜X

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? 2˜GD = 0.04 Frequenzgang H(ej:)

1

2˜GS = 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.3˜S 0.4˜S = :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 2˜Re(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.04˜S

GD = 0.02

:S = 0.1˜S

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 2˜n  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] 2˜Vr2

b2

5˜Vr2

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



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



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.625˜101

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 (2˜w). 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.

2˜w

w x[n] D

w y[n]

+

b0 2˜ w

D

2˜w a1/2

b1 D

D b2 2˜w

2˜w

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 (6˜f0 = 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 = m˜N ist der Exponent mit j˜2S˜m stets ein ganzzahliges Vielfaches von 2S, so dass jeder der N Summanden gleich 1 ist. Für k z m˜N (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) | j˜5.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