Digitale Signalverarbeitung mit MATLAB®: Grundkurs mit 16 ausführlichen Versuchen [6., durchges. u. akt. Aufl. 2019] 978-3-658-18646-3, 978-3-658-18647-0

Das Buch führt in die Grundlagen und Anwendungen der digitalen Signalverarbeitung durch praktische MATLAB®-Übungen am PC

856 109 20MB

German Pages XXI, 392 [402] Year 2019

Report DMCA / Copyright

DOWNLOAD FILE

Polecaj historie

Digitale Signalverarbeitung mit MATLAB®: Grundkurs mit 16 ausführlichen Versuchen [6., durchges. u. akt. Aufl. 2019]
 978-3-658-18646-3, 978-3-658-18647-0

Table of contents :
Front Matter ....Pages I-XXI
Erste Schritte in MATLAB (Martin Werner)....Pages 1-25
Elementare zeitdiskrete Signale (Martin Werner)....Pages 27-42
Diskrete Fourier-Transformation (Martin Werner)....Pages 43-65
Kurzzeitspektralanalyse Grundlagen (Martin Werner)....Pages 67-86
Spektrogramm (Martin Werner)....Pages 87-112
Schnelle Fourier-Transformation (Martin Werner)....Pages 113-141
LTI-Systeme: Grundlagen (Martin Werner)....Pages 143-167
Finite-duration-impulse-response-Systeme (Martin Werner)....Pages 169-186
Entwurf digitaler FIR-Filter (Martin Werner)....Pages 187-211
Infinite-duration-impulse-response-Systeme (Martin Werner)....Pages 213-228
Entwurf digitaler IIR-Filter (Martin Werner)....Pages 229-253
Kenngrößen stochastischer Signale (Martin Werner)....Pages 255-287
Stochastische Signale und LTI-Systeme (Martin Werner)....Pages 289-304
Analog-Digital-Umsetzung (Martin Werner)....Pages 305-331
Reale digitale Filter: Koeffizientenquantisierung (Martin Werner)....Pages 333-353
Reale digitale Filter: Quantisierte Arithmetik (Martin Werner)....Pages 355-384
Back Matter ....Pages 385-392

Citation preview

Martin Werner

Digitale Signalverarbeitung mit MATLAB® Grundkurs mit 16 ausführlichen Versuchen 6. Auflage

Digitale Signalverarbeitung mit MATLAB®

Martin Werner

Digitale Signalverarbeitung mit MATLAB® Grundkurs mit 16 ausführlichen Versuchen 6., vollständig überarbeitete Auflage

Martin Werner Fulda, Deutschland

ISBN 978-3-658-18646-3    ISBN 978-3-658-18647-0 (eBook) https://doi.org/10.1007/978-3-658-18647-0 Die Deutsche Nationalbibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detaillierte bibliografische Daten sind im Internet über http://dnb.d-nb.de abrufbar. Springer Vieweg © Springer Fachmedien Wiesbaden GmbH, ein Teil von Springer Nature 2001, 2003, 2006, 2009, 2012, 2019 Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Jede Verwertung, die nicht ausdrücklich vom Urheberrechtsgesetz zugelassen ist, bedarf der vorherigen Zustimmung des Verlags. Das gilt insbesondere für Vervielfältigungen, Bearbeitungen, Übersetzungen, Mikroverfilmungen und die Einspeicherung und Verarbeitung in elektronischen Systemen. Die Wiedergabe von allgemein beschreibenden Bezeichnungen, Marken, Unternehmensnamen etc. in diesem Werk bedeutet nicht, dass diese frei durch jedermann benutzt werden dürfen. Die Berechtigung zur Benutzung unterliegt, auch ohne gesonderten Hinweis hierzu, den Regeln des Markenrechts. Die Rechte des jeweiligen Zeicheninhabers sind zu beachten. Der Verlag, die Autoren und die Herausgeber gehen davon aus, dass die Angaben und Informationen in diesem Werk zum Zeitpunkt der Veröffentlichung vollständig und korrekt sind. Weder der Verlag, noch die Autoren oder die Herausgeber übernehmen, ausdrücklich oder implizit, Gewähr für den Inhalt des Werkes, etwaige Fehler oder Äußerungen. Der Verlag bleibt im Hinblick auf geografische Zuordnungen und Gebietsbezeichnungen in veröffentlichten Karten und Institutionsadressen neutral. Springer Vieweg ist ein Imprint der eingetragenen Gesellschaft Springer Fachmedien Wiesbaden GmbH und ist ein Teil von Springer Nature. Die Anschrift der Gesellschaft ist: Abraham-Lincoln-Str. 46, 65189 Wiesbaden, Germany

Vorwort

Die digitale Signalverarbeitung ist eine der Schlüsseltechnologien des Informationszeitalters: in Mobiltelefonen ist sie unser steter Begleiter, in Anti-Blockiersystemen vermeidet sie Unfälle auf den Straßen, in Computertomographen verschafft sie Einblicke ohne Verletzung der Patienten. Die digitale Signalverarbeitung macht unser Leben bequemer, produktiver und sicherer. Kenntnisse in der digitalen Signalverarbeitung sind deshalb zu einem wichtigen Bestandteil vieler technisch-wissenschaftlicher Berufe geworden. Das Buch „Digitale Si­ gnal­verarbeitung mit MATLAB®“ stellt anhand von 16 ausführlichen Versuchen eine Auswahl wichtiger Grundlagen und Anwendungen zum Selbststudium vor: • • • • • •

Zeitdiskrete Signale Signalverarbeitung im Frequenzbereich Signalverarbeitung im Zeitbereich Entwurf digitaler Filter Stochastische Signale Analog-Digital-Umsetzung, Reale Systeme und Wortlängeneffekte

Zu jedem Versuch gibt es eine kompakte Einführung in die Grundlagen. Die Versuchsvorbereitung 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 jedes Kapitels findet sich ein ausführlicher Lösungsteil und es gibt ein Quiz mit Lernkontrollfragen zur Wiederholung. 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.  MATLAB® ist ein eingetragenes Warenzeichen der Firma The MathWorks, Inc., U.S.A., www. mathworks.com 1

V

VI

Vorwort

• Die MATLAB-Bedienoberfläche bietet nützliche Hilfen und Zugang zu einer ausführlichen Online-Dokumentation. Aus diesem Grund konnte der Einführungsteil „Erste Schritte in MATLAB“ kurz gehalten werden. • Wegen der einfachen Bedienung sowie der guten grafischen Eigenschaften von MATLAB kann schon bei den ersten Schritten mit der digitalen Signalverarbeitung begonnen werden. • Die Kombination aus PC und MATLAB ermöglicht es, auf einfache Weise reale Audiosignale zu verwenden. • 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. • MATLAB ist als preiswerte Studentenversion erhältlich. Technische Hinweise und Softwarekompatibilität Die zum Buch entstandenen Programme und Datensätze sind auf der Produktseite der Verlagshomepage kostenlos erhältlich. Alle Programme wurden mit MATLAB Version R2018b getestet. Da aus didaktischen Gründen überwiegend einfache Befehle verwendet werden, sollten die Programme meist auch mit früheren MATLAB-Versionen laufen. Für das Praktikum ist die MATLAB Si­ gnal 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 im Nachrichtentechnik-Labor dieses Buch so nicht hätte entstehen können. Für die freundliche Unterstützung bedanke ich mich bei der Firma The MathWorks und besonders den Mitarbeiterinnen und Mitarbeitern des Verlags Springer Vieweg für viele Jahre guter Zusammenarbeit. Zum Schluss ein persönlicher Blick zurück an den Anfang. Im WS 1982 nahm ich an der Universität Erlangen-Nürnberg im Praktikum „Digitale Signalverarbeitung“ bei Professor H. W. Schüßler und Praktikumsleiter Dipl.-Ing. J. Weith teil. Es hat Spaß gemacht, ich habe viel gelernt und nichts davon ist heute überholt. Diese Erfahrungen wünsche ich auch allen Lesern. Fulda, Deutschland Mai 2019

Martin Werner

Übersicht über die Versuche

An die beiden einführenden Versuche schließen sich die beiden Schwerpunkte „diskrete Fourier-Transformation“ und „LTI-Systeme“, mit vier bzw. fünf Versuchen, an. Der dritte Schwerpunkt führt an die praktische digitale Signalverarbeitung heran. Dabei stehen typische Effekte in realen digitalen Filtern im Mittelpunkt. Zu deren Beschreibung spielen Zufallsprozesse eine wichtige Rolle - und nicht nur dort. Deshalb sind diesem wichtigen Thema vorab zwei einführende Versuche gewidmet (Abb. 1). DSV mit MATLAB®

Diskrete FourierTransformation (DFT) 3

Erste Schritte in MATLAB 1

Elementare zeitdiskrete Signale 2

LTI-Systeme: Grundlagen 7

Kenngrößen stochastischer Prozesse 12

Stochastische Signale und LTISysteme 13 KurzzeitSpektralanalyse: Grundlagen 4

Finite-durationimpulse-responseSysteme (FIR) 8

Infinit-durationimpulse-responseSysteme (IIR) 10

Entwurf digitaler FIR-Filter 9

Entwurf digitaler IIR-Filter 11

Analog-DigitalUmsetzung 14

Spektrogramm 5

Schnelle FourierTransformation (FFT) 6

Reale digitale Filter: Koeffizientenquantisierung 15

Reale digitale Filter: Quantisierte Arithmetik 16

Abb. 1  Die Praktikumsversuche in der Übersicht VII

Formelzeichen und Abkürzungen

Konstanten und Variablen as,dB

Nebenzipfeldämpfung (minimale) im logarithmischen Maß („side-lobe attenuation“) ak, bk Fourier-Koeffizienten der trigonometrischen Form („Fourier coefficients“) ak, bl Nenner- bzw. Zählerkoeffizienten der Übertragungsfunktion („denominator coefficients“, „numerator coefficients“) α Transformationsparameter der bilinearen Transformation bias Bias Bi,j Koeffizienten der Partialbruchentwicklung („partial fraction expansion“) β Formparameter des Kaiser-Fensters bn Filterkoeffizienten (FIR-Filter) ck Fourier-Koeffizienten der komplexen Form („Fourier coefficients“) C Scheitelfaktor („crest factor“) d Klirrfaktor („distortion“) df Freiheitsgrad („degree of freedom“) Binärstelle im gebrochenen Teil des Signifikanten di δD, δS Durchlass- bzw. Sperrtoleranz („passband tolerance“, „stopband tolerance“) Δ Quantisierungsfehler („quantization error“) Δf, ΔΩ Frequenzauflösung bzw. spektrale Auflösung („frequency resolution“) ΔΩ, ΔΩ3dB Hauptzipfelbreite („main-lobe width“) bzw. 3dB-Hauptzipfelbreite e Eulersche Zahl („Euler number“) (e = 2,71828…, ≈ 19/7) e Exponent mathematisch E Exponent mit Bias f Frequenzvariable („frequency“) fs Abtastfrequenz („sampling frequency“) fg Grenzfrequenz („corner frequency“, „cut-off frequency“) f0 Grundfrequenz, Frequenz der ersten Harmonischen i, j Imaginäre Einheit (i2 = –1) („imaginary number/unit“) IX

X

Formelzeichen und Abkürzungen

k Indexvariable der DFT („DFT index“) l Verschiebung, Verzögerung („lag“) M Mantisse μ Chirp-Rate („chirp rate“) μ Linearer Mittelwert („mean“) n normierte Zeitvariable („normalized time“, „time index“) N DFT-(Transformations)Länge, Blocklänge, Fensterlänge N Filterordnung („filter order“) N Geräuschleistung („noise power“) N Stichprobenumfang („sample size“) ω Kreisfrequenz („radian frequency“) (ω = 2 π·f) ω Stochastische Variable („random variable“) Ω Normierte Kreisfrequenz („normalized radian frequency“) ΩD, ΩS Normierte Durchlass- bzw. Sperrkreisfrequenz („normalized passband/ stopband cut-off radian frequency“) Ωg, Ω3dB Normierte Grenzkreisfrequenz bzw. normierte 3dB-Grenzkreisfrequenz ΩM Normierte Momentankreisfrequenz („normalized instantaneous radian frequency“) p Bitbreite der Mantisse („precision“) p Stufenzahl der Radix-2-FFT φ, φ∞, φ0 Phase/Argument einer komplexen Zahl („phase“) bzw. Polwinkel (Argument) („pole phase“) oder Nullstellenwinkel („zero phase“) π Kreiszahl („pi“) (π = 3,14159…, ≈ 22/7) Q Quantisierungsintervallbreite/-stufenbreite („quantization step size“) ri,j Residuen („residues“) der Partialbruchentwicklung („partial fraction expansion“) R Komplexität der DFT/FFT Rauschzahl des inneren Rauschens Ri ρ, ρ∞, ρ0 Betrag/Modul einer komplexen Zahl bzw. eines Pols (Polradius) oder einer Nullstelle ρ (Pearson-)Korrelationskoeffizient („[Pearson] correlation coefficent“) rXY Empirischer (Pearson-)Korrelationskoeffizient („sample [Pearson] correlation coefficient“) s Komplexe (Kreis)Frequenz, komplexe Variable der Laplace-Transformation s Vorzeichen (signum, „sign“) s, s2 Empirische Standardabweichung („sample standard deviation“) bzw. Stichprobenvarianz („sample variance“) S Signalleistung („signal power“) SNR Signal-Geräusch-Leistungsverhältnis („signal-to-noise [power] ratio“) σ, σ2 Standardabweichung („standard deviation“) bzw. Varianz („variance“) t Zeitvariable („time“) tα/2,df (1–α/2)-Quantil der t-Verteilung mit Freiheitsgrad df

Formelzeichen und Abkürzungen

τg Gruppenlaufzeit („group delay“) T Prüfgröße („test variable“) T Gebrochener Teil des Signifikanten TB Blockdauer Ts Abtastintervall („sampling interval“) T0 Periode („period“) w Wortlänge in bit („word length“) n·k wN Komplexer (Dreh)Faktor der DFT x Zeitmittelwert („sample mean“) X, Y Stochastische Variable (allg.) („random variable“) z Komplexe Variable der z-Transformation z0l, z∞k Nullstelle bzw. Pole der Übertragungsfunktion („zero“, „pole“)

Signale und Funktionen ⌈.⌉ ∗ a(Ω), a(ω)

Aufrundungsfunktion („ceiling function“) Faltungsstern („asterisk“) Dämpfungsgang („attenuation“) für zeitdiskrete bzw. zeitkontinuierliche Systeme arg(.) Argument der komplexen Zahl b(Ω) Phasengang („phase response“) cos(.) Kosinusfunktion („cosine function“) δ[n], δ(t) Impulsfunktion (zeitdiskret bzw. zeitkontinuierlich) („unit impulse“) Δ(t) (Quantisierungs)Fehlersignal („[quantization] error signal“) exp(.) Exponentialfunktion („exponental function“) fX(x) Wahrscheinlichkeitsdichtefunktion zur stochastischen Variablen X („probability density function“) Φhh(z) Komplexes Leistungsdichtespektrum („complex power density spectrum“) zur Filter-AKF h[n], h(t) Impulsantwort („impulse response“) zeitdiskreter bzw. zeitkontinuierlicher Systeme H(ejΩ), H(jω) Frequenzgang („frequency response“) zeitdiskreter bzw. zeitkontinuierlicher Systeme H(z), H(s) Übertragungsfunktion („transfer function“) zeitdiskreter bzw. zeitkontinuierlicher Systeme I0(.) Modifizierte Besselfunktion erster Art der Ordnung null ld(.), lg(.), ln(.) Duallogarithmus (logarithmus dualis, „binary logarithm“), Zehnerlogarithmus/dekadischer Logarithmus („common logarithm“) und natürlicher Logarithmus (logarithmus naturalis, „natural logarithm“) p(t) Impulskamm („impulse train“)

XI

XII

Rhh[l] RXX[l] Rˆ XX [l ] RXY[l] s[n] si[n] si(.) sin(.) sinc(.) SXX(Ω) u[n], u(t) w[n] W(ejΩ) x[n], y[n] X[k] X(ejΩ) X(jω)

Formelzeichen und Abkürzungen

Zeit-Autokorrelationsfunktion (Filter-AKF) zur Impulsantwort h[n] (zeitdiskret) Autokorrelationsfunktion (zeitdiskret) zum stochastischen Prozess X („autocorrelation function“) Autokorrelationsfunktion (geschätzt) Kreuzkorrelationsfunktion (zeitdiskret) zu den stochastischen Prozessen X und Y („cross-correlation function“) Sprungantwort („[unit] step response“) Zustands[raum]variable („state[-space] variable“) si-Funktion (sinus cardinalis, Spaltfunktion, „unnormalized sinc function“) (si(x) = sin(x)/x) Sinusfunktion („sine function“) Normierte si-Funktion („normalized sinc function“) (sinc(x) = sin(πx)/ (πx)) Leistungsdichtespektrum („power density spectrum“, „spectral density“) (zeitdiskret) Sprungfunktion (zeitdiskret bzw. zeitkontinuierlich) („unit step function“) Fensterfolge („window sequence“) Spektrum der Fensterfolge Zeitdiskrete Funktion/Signal/Folge (allg.) („discrete-time signal“, „signal sequence“) DFT-Spektrum bzw. DFT-Koeffizient („DFT coefficient“) Fourier-Transformierte (Spektrum) eines zeitdiskreten Signals Fourier-Transformierte (Spektrum) eines zeitkontinuierlichen Signals

Operatoren und Transformationen [.]Q 2 .2 Cov(X,Y) D{.}

Quantisierung („quantization“) Blockenergie („block energy“) (Quadrat der Euklidischen Norm) Kovarianz („covariance“) Verschiebungsoperator, Verzögerungsoperator („shift operator“, „delay operator“) (D im Blockdiagramm) DFT{.}, IDFT{.} Diskrete Fourier-Transformation und Inverse E(X) Erwartungswert („mean“) F{.}, F–1{.} Fourier-Transformation und Inverse x[n] ↔ X[k] DFT-(Transformations)Paar („DFT pair“) x[n] ↔ X(ejΩ) Fourier-(Transformations)Paar („Fourier pair“) (zeitdiskret) x[n] ↔ X(z) z-Transformationspaar („z-transform pair“) x(t) ↔ X(jω) Fourier-(Transformations)Paar (zeitkontinuierlich) x(t) ↔ X(s) Laplace-(Transformations)Paar („Laplace transform pair“)

Formelzeichen und Abkürzungen

XIII

Abkürzungen ADSR Attack-decay-sustain-release ADU Analog-Digital-Umsetzer („analog-to-digital converter“) AKF Autokorrelationsfunktion („autocorrelation function“) BIBO Bounded-input-bounded-output BP Bandpass („bandpass“) BS Bandsperre („bandstop“) BW-TP Butterworth-Tiefpass („Butterworth lowpass“) CPDS Komplexes Leistungsdichtespektrum („complex power density spectrum“) DAU Digital-Analog-Umsetzer („digital-to-analog converter“) DGL Lineare Differenzengleichung („linear difference equation“) DFT Diskrete Fourier-Transformation („discrete Fourier transform“) DIT Dezimation-in-time DTMF Dual-tone multi-frequency FFT Schnelle Fourier-Transformation („fast Fourier transform“) FLOP Gleitkommaoperation („floating point operation“) FIR Finite-duration impulse response HP Hochpass („highpass“) IDFT Inverse DFT („inverse DFT“) IIR Infinite-duration impulse response KI Konfidenzintervall („confidence interval“) KKF Kreuzkorrelationsfunktion („cross-correlation function“) LDS Leistungsdichtespektrum („power density spectrum“, „spectral density“) LSB Least significant bit (Bit mit der niedrigsten Wertigkeit in der Binärzahl) LTI Linear time-invariant MAC Multiply-and-accumulate MATLAB Matrix Laboratory MFV Mehrfrequenzwahlverfahren SFG Signalflussgraph („signal flow graph“) SOS (Teil)Block 2. Ordnung („second order section“) SNR Signal-Geräusch-Leistungsverhältnis („signal-to-noise [power] ratio“) SV Stochastische Variable („random variable“) THD Klirrfaktor („total harmonic distortion“) TP Tiefpass („lowpass“) WDF Wahrscheinlichkeitsdichtefunktion („probability density function“)

Inhaltsverzeichnis

1 Erste Schritte in MATLAB ����������������������������������������������������������������������������������  1 1.1 Lernziele ������������������������������������������������������������������������������������������������������   1 1.2 Warum MATLAB?����������������������������������������������������������������������������������������   2 1.3 Programmstart und einfache Befehle������������������������������������������������������������   2 1.3.1 MATLAB-Entwicklungsumgebung��������������������������������������������������   2 1.3.2 Einfache arithmetische Operationen ������������������������������������������������   3 1.3.3 Konstanten und Variablen ����������������������������������������������������������������   4 1.3.4 MATLAB help-Kommando��������������������������������������������������������������   5 1.3.5 Vektoren und Matrizen����������������������������������������������������������������������   6 1.3.6 Vordefinierte MATLAB-Funktionen und einfache Grafiken������������  10 1.4 Schreiben eines MATLAB-Programms im Editor-Window ������������������������  12 1.4.1 MATLAB-Editor������������������������������������������������������������������������������  12 1.4.2 Programmkontrolle und logische Operatoren����������������������������������  14 1.4.3 Verkettete Programme und Unterprogramme ����������������������������������  15 1.4.4 Versuchsdurchführung����������������������������������������������������������������������  18 1.5 MATLAB Help und MATLAB Demo����������������������������������������������������������  18 1.6 Übungen��������������������������������������������������������������������������������������������������������  19 1.7 Zusammenfassung����������������������������������������������������������������������������������������  21 1.8 Quiz 1������������������������������������������������������������������������������������������������������������   22 1.9 Lösungshinweise������������������������������������������������������������������������������������������  22 Literatur������������������������������������������������������������������������������������������������������������������  25 2 Elementare zeitdiskrete Signale���������������������������������������������������������������������������� 27 2.1 Lernziele ������������������������������������������������������������������������������������������������������  27 2.2 Grundlagen����������������������������������������������������������������������������������������������������  28 2.2.1 Zeitdiskrete Signale��������������������������������������������������������������������������  28 2.2.2 Vorbereitende Aufgaben��������������������������������������������������������������������  32 2.2.3 Versuchsdurchführung����������������������������������������������������������������������  32 2.3 Audiosignale ������������������������������������������������������������������������������������������������  33 2.3.1 Töne, Klänge und Geräusche������������������������������������������������������������  33 2.3.2 Synthese eines Audiosignals ������������������������������������������������������������  34 XV

XVI

Inhaltsverzeichnis

2.3.3 ADSR-Profil��������������������������������������������������������������������������������������  36 2.3.4 Harmonische ������������������������������������������������������������������������������������  37 2.3.5 Vorbereitende Aufgaben��������������������������������������������������������������������  38 2.3.6 Versuchsdurchführung����������������������������������������������������������������������  38 2.4 Zusammenfassung����������������������������������������������������������������������������������������  39 2.5 Quiz 2������������������������������������������������������������������������������������������������������������   40 2.6 Lösungshinweise������������������������������������������������������������������������������������������  40 Literatur������������������������������������������������������������������������������������������������������������������  42 3 Diskrete Fourier-Transformation ������������������������������������������������������������������������ 43 3.1 Lernziele ������������������������������������������������������������������������������������������������������  43 3.2 Warum diskrete Fourier-Transformation?����������������������������������������������������  44 3.3 Grundlagen����������������������������������������������������������������������������������������������������  44 3.3.1 Fourier-Transformation von periodischen Folgen����������������������������  45 3.3.2 DFT der Kosinusfolge����������������������������������������������������������������������  47 3.3.3 Eigenschaften der diskreten Fourier-Transformation ����������������������  49 3.3.4 Vorbereitende Aufgaben��������������������������������������������������������������������  51 3.3.5 Versuchsdurchführung����������������������������������������������������������������������  52 3.4 Klirrfaktormessung mit der DFT������������������������������������������������������������������  53 3.4.1 Klirrfaktor ����������������������������������������������������������������������������������������  53 3.4.2 Vorbereitende Aufgaben��������������������������������������������������������������������  56 3.4.3 Versuchsdurchführung����������������������������������������������������������������������  57 3.5 Zusammenfassung����������������������������������������������������������������������������������������  59 3.6 Quiz 3������������������������������������������������������������������������������������������������������������   59 3.7 Lösungshinweise������������������������������������������������������������������������������������������  60 Literatur������������������������������������������������������������������������������������������������������������������  65 4 Kurzzeitspektralanalyse Grundlagen������������������������������������������������������������������ 67 4.1 Lernziele ������������������������������������������������������������������������������������������������������  67 4.2 Grundlagen der Spektralanalyse mit der DFT����������������������������������������������  68 4.2.1 Spektralanalyse ��������������������������������������������������������������������������������  68 4.2.2 Spektrum des zeitdiskreten Signals��������������������������������������������������  71 4.2.3 Fensterung����������������������������������������������������������������������������������������  73 4.2.4 Diskrete Fourier-Transformation������������������������������������������������������  76 4.2.5 Vorbereitende Aufgaben��������������������������������������������������������������������  78 4.2.6 Versuchsdurchführung����������������������������������������������������������������������  78 4.3 Mehrfrequenzwahlverfahren������������������������������������������������������������������������  79 4.3.1 DTMF-Töne��������������������������������������������������������������������������������������  79 4.3.2 Vorbereitende Aufgaben��������������������������������������������������������������������  79 4.3.3 Versuchsdurchführung����������������������������������������������������������������������  80 4.4 Zusammenfassung����������������������������������������������������������������������������������������  81 4.5 Quiz 4������������������������������������������������������������������������������������������������������������   82 4.6 Lösungshinweise������������������������������������������������������������������������������������������  83 Literatur������������������������������������������������������������������������������������������������������������������  86

 Inhaltsverzeichnis

XVII

5 Spektrogramm�������������������������������������������������������������������������������������������������������� 87 5.1 Lernziele ������������������������������������������������������������������������������������������������������  88 5.2 Kurzzeit-Spektralanalyse������������������������������������������������������������������������������  88 5.2.1 Grundlagen����������������������������������������������������������������������������������������  88 5.2.2 Vorbereitende Aufgaben��������������������������������������������������������������������  92 5.3 Fensterfolgen zur Spektralanalyse����������������������������������������������������������������  93 5.3.1 Dreieck- und Blackman-Fenster ������������������������������������������������������  93 5.3.2 Vorbereitende Aufgaben��������������������������������������������������������������������  96 5.3.3 Versuchsdurchführung����������������������������������������������������������������������  96 5.4 Kurzzeitspektralanalyse mit dem Spektrogramm ����������������������������������������  99 5.4.1 Chirp-Signal��������������������������������������������������������������������������������������  99 5.4.2 Spektrogramm���������������������������������������������������������������������������������� 100 5.4.3 Audiosignale ������������������������������������������������������������������������������������ 102 5.4.4 Vorbereitende Aufgaben�������������������������������������������������������������������� 104 5.4.5 Versuchsdurchführung���������������������������������������������������������������������� 104 5.5 Zusammenfassung���������������������������������������������������������������������������������������� 105 5.6 Quiz 5������������������������������������������������������������������������������������������������������������ 106 5.7 Lösungshinweise������������������������������������������������������������������������������������������ 106 Literatur������������������������������������������������������������������������������������������������������������������ 112 6 Schnelle Fourier-Transformation ���������������������������������������������������������������������� 113 6.1 Lernziele ������������������������������������������������������������������������������������������������������ 113 6.2 Warum schnelle Fourier-Transformation?���������������������������������������������������� 114 6.3 Komplexität der DFT������������������������������������������������������������������������������������ 114 6.3.1 Summenformel der DFT ������������������������������������������������������������������ 115 6.3.2 Vorbereitende Aufgaben�������������������������������������������������������������������� 116 6.3.3 Versuchsdurchführung���������������������������������������������������������������������� 116 6.4 Radix-2-FFT ������������������������������������������������������������������������������������������������ 117 6.4.1 Algorithmus der Radix-2-FFT���������������������������������������������������������� 117 6.4.2 Butterfly-Operation �������������������������������������������������������������������������� 119 6.4.3 Komplexität der Radix-2-FFT���������������������������������������������������������� 121 6.4.4 Programmierung der DIT-Radix-2-FFT�������������������������������������������� 122 6.4.5 Vorbereitende Aufgaben�������������������������������������������������������������������� 127 6.4.6 Versuchsdurchführung���������������������������������������������������������������������� 128 6.4.7 MATLAB-Befehle zur diskreten Fourier-Transformation���������������� 129 6.5 FFT für reelle Signale ���������������������������������������������������������������������������������� 129 6.5.1 Grundlagen���������������������������������������������������������������������������������������� 129 6.5.2 Simultane FFT zweier reeller Signale���������������������������������������������� 131 6.5.3 FFT für reelle Signale ���������������������������������������������������������������������� 131 6.5.4 Vorbereitende Aufgaben�������������������������������������������������������������������� 132 6.5.5 Versuchsdurchführung���������������������������������������������������������������������� 132 6.6 Schnelle Faltung�������������������������������������������������������������������������������������������� 133 6.6.1 FFT statt Faltungssumme������������������������������������������������������������������ 133 6.6.2 Versuchsdurchführung���������������������������������������������������������������������� 134

XVIII

Inhaltsverzeichnis

6.7 Zusammenfassung���������������������������������������������������������������������������������������� 134 6.8 Quiz 6������������������������������������������������������������������������������������������������������������ 135 6.9 Lösungshinweise������������������������������������������������������������������������������������������ 135 Literatur������������������������������������������������������������������������������������������������������������������ 141 7 LTI-Systeme: Grundlagen���������������������������������������������������������������������������������� 143 7.1 Lernziele ������������������������������������������������������������������������������������������������������ 143 7.2 Faltung���������������������������������������������������������������������������������������������������������� 144 7.2.1 Faltungssumme �������������������������������������������������������������������������������� 144 7.2.2 Vorbereitende Aufgaben�������������������������������������������������������������������� 146 7.2.3 Versuchsdurchführung���������������������������������������������������������������������� 148 7.3 Lineare zeitinvariante Systeme �������������������������������������������������������������������� 148 7.3.1 Impulsantwort und Frequenzgang von LTI-Systemen���������������������� 149 7.3.2 Lineare Differenzengleichung und Übertragungsfunktion �������������� 151 7.3.3 Versuchsdurchführung���������������������������������������������������������������������� 154 7.4 Differenzengleichung������������������������������������������������������������������������������������ 155 7.4.1 Goertzel-Algorithmus 1. Ordnung���������������������������������������������������� 156 7.4.2 Goertzel-Algorithmus 2. Ordnung���������������������������������������������������� 158 7.4.3 Vorbereitende Aufgaben�������������������������������������������������������������������� 160 7.4.4 Versuchsdurchführung���������������������������������������������������������������������� 160 7.5 Zusammenfassung���������������������������������������������������������������������������������������� 161 7.6 Quiz 7������������������������������������������������������������������������������������������������������������ 161 7.7 Lösungshinweise������������������������������������������������������������������������������������������ 162 Literatur������������������������������������������������������������������������������������������������������������������ 167 8 Finite-duration-impulse-response-Systeme ������������������������������������������������������ 169 8.1 Lernziele ������������������������������������������������������������������������������������������������������ 169 8.2 Eigenschaften von FIR-Systemen���������������������������������������������������������������� 170 8.3 Vorbereitende Aufgaben�������������������������������������������������������������������������������� 174 8.4 Versuchsdurchführung���������������������������������������������������������������������������������� 178 8.5 Zusammenfassung���������������������������������������������������������������������������������������� 180 8.6 Quiz 8������������������������������������������������������������������������������������������������������������ 181 8.7 Lösungshinweise������������������������������������������������������������������������������������������ 181 Literatur������������������������������������������������������������������������������������������������������������������ 186 9 Entwurf digitaler FIR-Filter������������������������������������������������������������������������������ 187 9.1 Lernziele ������������������������������������������������������������������������������������������������������ 187 9.2 FIR-Filterstruktur������������������������������������������������������������������������������������������ 188 9.3 Entwurfsvorschriften im Frequenzbereich���������������������������������������������������� 189 9.3.1 Toleranzschema für den Tiefpassentwurf ���������������������������������������� 190 9.3.2 Vorbereitende Aufgaben�������������������������������������������������������������������� 191

 Inhaltsverzeichnis

XIX

9.4 Fourier-Approximation �������������������������������������������������������������������������������� 192 9.4.1 Fourier-Reihe des Frequenzganges�������������������������������������������������� 192 9.4.2 Vorbereitende Aufgaben�������������������������������������������������������������������� 193 9.4.3 Versuchsdurchführung���������������������������������������������������������������������� 193 9.5 Fourier-Approximation mit Fensterung�������������������������������������������������������� 193 9.5.1 Glättung durch Fensterung���������������������������������������������������������������� 194 9.5.2 Vorbereitende Aufgaben�������������������������������������������������������������������� 195 9.5.3 Versuchsdurchführung���������������������������������������������������������������������� 195 9.6 Chebyshev-Approximation �������������������������������������������������������������������������� 197 9.6.1 Equiripple-Methode�������������������������������������������������������������������������� 198 9.6.2 Versuchsdurchführung���������������������������������������������������������������������� 199 9.7 Zusammenfassung���������������������������������������������������������������������������������������� 201 9.8 Quiz 9������������������������������������������������������������������������������������������������������������ 201 9.9 Lösungen zu den Aufgaben�������������������������������������������������������������������������� 202 Literatur������������������������������������������������������������������������������������������������������������������ 211 10 Infinite-duration-impulse-response-Systeme���������������������������������������������������� 213 10.1 Lernziele ���������������������������������������������������������������������������������������������������� 213 10.2 Einfluss der Pole auf den Frequenzgang���������������������������������������������������� 214 10.3 Blockdiagramm������������������������������������������������������������������������������������������ 216 10.4 Impulsantwort �������������������������������������������������������������������������������������������� 218 10.5 Partialbruchzerlegung der Übertragungsfunktion�������������������������������������� 220 10.6 Sprungantwort�������������������������������������������������������������������������������������������� 223 10.7 IIR-Filter 4. Ordnung���������������������������������������������������������������������������������� 223 10.8 Zusammenfassung�������������������������������������������������������������������������������������� 224 10.9 Quiz 10�������������������������������������������������������������������������������������������������������� 224 10.10 Lösungshinweise���������������������������������������������������������������������������������������� 225 Literatur������������������������������������������������������������������������������������������������������������������ 228 11 Entwurf digitaler IIR-Filter�������������������������������������������������������������������������������� 229 11.1 Lernziele ���������������������������������������������������������������������������������������������������� 229 11.2 IIR-Filter ���������������������������������������������������������������������������������������������������� 230 11.3 Entwurf eines Butterworth-Tiefpasses�������������������������������������������������������� 231 11.3.1 Toleranzschema und Filtertyp������������������������������������������������������ 231 11.3.2 Zeitkontinuierlicher Butterworth-Tiefpass ���������������������������������� 231 11.3.3 Dimensionierung des zeitkontinuierlichen Butterworth-Tiefpasses������234 11.3.4 Vorbereitende Aufgaben – Butterworth-Tiefpass ������������������������ 236 11.3.5 Bilineare Transformation�������������������������������������������������������������� 237 11.3.6 Frequenztransformation���������������������������������������������������������������� 239 11.4 IIR-Filterentwurf mittels Standardapproximationen analoger Tiefpassfilter������������������������������������������������������������������������������������������������ 241 11.5 Zusammenfassung�������������������������������������������������������������������������������������� 243

XX

Inhaltsverzeichnis

11.6 Quiz 11�������������������������������������������������������������������������������������������������������� 244 11.7 Lösungshinweise���������������������������������������������������������������������������������������� 244 Literatur������������������������������������������������������������������������������������������������������������������ 253 12 Kenngrößen stochastischer Signale�������������������������������������������������������������������� 255 12.1 Lernziele ���������������������������������������������������������������������������������������������������� 256 12.2 Stochastischer Prozess�������������������������������������������������������������������������������� 256 12.3 Zufallssignale���������������������������������������������������������������������������������������������� 260 12.3.1 Zufallszahlen am Digitalrechner�������������������������������������������������� 260 12.3.2 Empirische Kenngrößen und Histogramm ���������������������������������� 262 12.4 Korrelationsfunktion und Leistungsdichtespektrum���������������������������������� 268 12.4.1 Korrelation, Kovarianz und Korrelationskoeffizfient�������������������� 268 12.4.2 Autokorrelationsfolge, Kreuzkorrelationsfolge und Leistungsdichtespektrum�������������������������������������������������������������� 270 12.4.3 Weißes Rauschen�������������������������������������������������������������������������� 271 12.4.4 Schätzung der Autokorrelationsfunktion�������������������������������������� 273 12.4.5 Schätzung des Leistungsdichtespektrums������������������������������������ 276 12.5 Zusammenfassung�������������������������������������������������������������������������������������� 278 12.6 Quiz 12�������������������������������������������������������������������������������������������������������� 279 12.7 Lösungshinweise���������������������������������������������������������������������������������������� 279 Literatur������������������������������������������������������������������������������������������������������������������ 287 13 Stochastische Signale und LTI-Systeme������������������������������������������������������������ 289 13.1 Lernziele ���������������������������������������������������������������������������������������������������� 290 13.2 Lineare Abbildung stochastischer Signale�������������������������������������������������� 290 13.3 Abbildung stochastischer Prozesse an LTI-Systemen�������������������������������� 292 13.3.1 Grundlegende Beziehungen���������������������������������������������������������� 293 13.3.2 Vorbereitende Aufgaben �������������������������������������������������������������� 296 13.3.3 Versuchsdurchführung������������������������������������������������������������������ 296 13.4 Zusammenfassung�������������������������������������������������������������������������������������� 298 13.5 Quiz 13�������������������������������������������������������������������������������������������������������� 298 13.6 Lösungshinweise���������������������������������������������������������������������������������������� 299 Literatur������������������������������������������������������������������������������������������������������������������ 304 14 Analog-Digital-Umsetzung���������������������������������������������������������������������������������� 305 14.1 Lernziele ���������������������������������������������������������������������������������������������������� 306 14.2 Digitalisierung�������������������������������������������������������������������������������������������� 306 14.3 Abtastung���������������������������������������������������������������������������������������������������� 307 14.3.1 Abtasttheorem������������������������������������������������������������������������������ 307 14.3.2 Vorbereitende Aufgaben �������������������������������������������������������������� 308 14.3.3 Versuchsdurchführung������������������������������������������������������������������ 309 14.4 Quantisierung���������������������������������������������������������������������������������������������� 310 14.4.1 Quantisierungskennlinie �������������������������������������������������������������� 310 14.4.2 Maschinenzahlen�������������������������������������������������������������������������� 312

 Inhaltsverzeichnis

XXI

14.4.3 Quantisierungsfehler�������������������������������������������������������������������� 318 14.4.4 Vorbereitende Aufgaben �������������������������������������������������������������� 321 14.4.5 Versuchsdurchführung������������������������������������������������������������������ 323 14.5 Zusammenfassung�������������������������������������������������������������������������������������� 325 14.6 Quiz 14�������������������������������������������������������������������������������������������������������� 326 14.7 Lösungshinweise���������������������������������������������������������������������������������������� 327 Literatur������������������������������������������������������������������������������������������������������������������ 331 15 Reale digitale Filter: Koeffizientenquantisierung �������������������������������������������� 333 15.1 Lernziele ���������������������������������������������������������������������������������������������������� 333 15.2 Wortlängeneffekte �������������������������������������������������������������������������������������� 334 15.3 FIR-Filter mit quantisierten Koeffizienten�������������������������������������������������� 335 15.3.1 Fehlermodell und Fehlerfrequenzgang ���������������������������������������� 335 15.3.2 Vorbereitende Aufgaben �������������������������������������������������������������� 337 15.3.3 Versuchsdurchführung������������������������������������������������������������������ 337 15.4 IIR-Filter mit quantisierten Koeffizienten�������������������������������������������������� 339 15.4.1 Kaskadenform������������������������������������������������������������������������������ 339 15.4.2 Koeffizientenquantisierung und Polausdünnung�������������������������� 340 15.4.3 Vorbereitende Aufgaben �������������������������������������������������������������� 343 15.4.4 Versuchsdurchführung������������������������������������������������������������������ 348 15.5 Zusammenfassung�������������������������������������������������������������������������������������� 349 15.6 Quiz 15�������������������������������������������������������������������������������������������������������� 349 15.7 Lösungshinweise���������������������������������������������������������������������������������������� 350 Literatur������������������������������������������������������������������������������������������������������������������ 353 16 Reale digitale Filter: Quantisierte Arithmetik�������������������������������������������������� 355 16.1 Lernziele ���������������������������������������������������������������������������������������������������� 355 16.2 Quantisierte Arithmetik������������������������������������������������������������������������������ 356 16.2.1 Addierer: Überlauf und große Grenzzyklen �������������������������������� 356 16.2.2 Multiplizierer: Inneres Rauschen und kleine Grenzzyklen���������� 357 16.2.3 Nichtlineares System 2. Ordnung ������������������������������������������������ 362 16.3 Vorbereitende Aufgaben������������������������������������������������������������������������������ 363 16.4 Versuchsdurchführung�������������������������������������������������������������������������������� 369 16.5 Zusammenfassung�������������������������������������������������������������������������������������� 377 16.6 Quiz 16�������������������������������������������������������������������������������������������������������� 378 16.7 Lösungshinweise���������������������������������������������������������������������������������������� 378 Literatur������������������������������������������������������������������������������������������������������������������ 384 Weiterführende Literatur�������������������������������������������������������������������������������������������� 385 Stichwortverzeichnis. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 387

1

Erste Schritte in MATLAB

Zusammenfassung

MATLAB ist ein verbreitetes Werkzeug zur digitalen Signalverarbeitung, das eine interaktive Bedienoberfläche mit einfachen Befehlen zur Generierung und Verarbeitung von digitalen Signalen sowie ihrer grafischen Darstellung anbietet. Am Beispiel der harmonischen Analyse werden erste Schritte in MATLAB vorgestellt. Schlüsselwörter

Fourier-Reihe („Fourier series“) · Gibbsches Phänomen („Gibbs phenomenon“) · MATLAB · Stabdiagramm („stem plot“) · Überschwinger („overshoot“)

1.1

Lernziele

Nach Bearbeiten dieses Versuches können Sie in MATLAB • • • • •

einfache Programme verstehen den Desktop gezielt benutzen einfache Programme mit Grafik und Programmkontrolle erstellen verkettete Programme erstellen die Hilfe und die Online-Videokurse von MATLAB nutzen

Es liegt in der Natur der Sache, dass ein so mächtiges Werkzeug wie MATLAB weder auf wenigen Seiten beschrieben noch schnell beherrscht werden kann. Dieser Versuch soll Sie deshalb bei den ersten Schritten in MATLAB unterstützen. Anhand einfacher Beispiele wird gezeigt, wie arithmetische Ausdrücke verarbeitet und einfache Grafiken ­erzeugt wer-

© Springer Fachmedien Wiesbaden GmbH, ein Teil von Springer Nature 2019 M. Werner, Digitale Signalverarbeitung mit MATLAB®, https://doi.org/10.1007/978-3-658-18647-0_1

1

1  Erste Schritte in MATLAB

2

den 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 von Versuch zu Versuch mehr erschließen. Die kommentierten Programmbeispiele zu den Versuchen und die ausführliche Online-Dokumentation von MATLAB werden Ihnen dabei helfen.

1.2

Warum MATLAB?

Sechs Gründe für den Einsatz von MATLAB: • MATLAB ist ein häufig benutztes Werkzeug für die digitale Signalverarbeitung und wird weltweit auf PCs und Arbeitsplatzrechnern eingesetzt; • Die MATLAB-Bedienoberfläche bietet Hilfen und Zugang zur ausführlichen Dokumentation und zu thematischen (Video-)Einführungskursen an; • Wegen der einfachen Bedienbarkeit sowie der guten grafischen Eigenschaften kann sofort mit der Signalverarbeitung begonnen werden; • Die Experimente lassen sich nach persönlichen Bedürfnissen und Interessen modifizieren. Alle für das Praktikum erstellten MATLAB-Programme können relativ einfach abgeändert und erweitert werden; • Die Kombination von MATLAB und PC ermöglicht es reale Audio- und Bildsignale zu verwenden; • Und nicht zuletzt ist MATLAB als preiswerte Studentenversion erhältlich.

1.3

Programmstart und einfache Befehle

1.3.1 MATLAB-Entwicklungsumgebung Nach dem Start von MATLAB erscheint die voreingestellte Bedienoberfläche wie in Abb. 1.1, der MATLAB Desktop mit Werkzeugleiste (Toolstrip), Werkzeugen und den vier geöffneten Fenstern: Current Folder Browser (links), Command Window (mitte), Workspace Browser (rechts) und Command History Window (rechts). Abhängig von Ihrer Installation (Versionsnummer, Studentenversion und Zusatzpaketen wie z.  B.  SIMULINK) kann sich Ihre Bildschirmanzeige unterscheiden. Vom MATLAB Desktop aus haben sie Zugriff auf die gesamte Entwicklungsumgebung. Mit den Fenstern, den Werkzeugleisten und den Werkzeugen wird, wie am PC üblich, mit Maus und/oder Tastenkommandos („shortcut“) gearbeitet. Es gibt zahlreiche Möglichkeiten den MATLAB Desktop nach eignen Bedürfnissen einzustellen. Im Folgenden geht es um die ersten Schritte, weshalb nur elementare Anwendungen vorgestellt werden. Zurück zur Voreinstellung des MATLAB Desktop gelangen Sie über den Reiter Home in der Werkzeugleiste und dann der Auswahl Layout Default.

1.3 Programmstart und einfache Befehle

3

Abb. 1.1  MATLAB-Bedienoberfläche (MATLAB Desktop)

1.3.2 Einfache arithmetische Operationen Wir beginnen mit der Voreinstellung in Abb. 1.1. Zunächst benötigen Sie nur das Befehlsfenster Command Window. Dort erscheint der Prompt >> bei dem Sie Befehle direkt eingeben können. Im interaktiven Modus werden die Eingaben als Befehle aufgefasst und MATLAB führt sie nach Möglichkeit direkt aus. 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. Ein Beispiel ist der Potenzoperator „^“. 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) ↲

1  Erste Schritte in MATLAB

4

antwortet MATLAB mit ans = 6

Zur Bearbeitung einer Eingabe stehen Ihnen die Cursor-Tasten zur Verfügung. Mit der Pfeiltaste ↑ können Sie frühere Eingaben wieder in die Kommandozeile laden und bearbeiten. Als Beispiel betrachten wir die letzte Eingabe. Mit der Pfeiltaste ↑ holen Sie sie wieder hervor. Ändern Sie das Minuszeichen in ein Pluszeichen schließen Sie Ihre Aktion wieder mit der Eingabe ↲ ab. MATLAB führt Buch über die ausgeführten Befehle und zeigt sie im Command History Window an. Darin können Sie beispielsweise „nützliche“ Befehle gezielt suchen und verarbeiten. Wiederholen Sie die Eingabe, aber schließen Sie jetzt die Kommandozeile mit dem Semikolon „;“ ab. Nun wird die Anzeige des Ergebnisses unterdrückt. MATLAB antwortet nur mit dem Prompt. Unabhängig davon ist das Ergebnis in der Antwort-Variablen ans gespeichert. Einfache arithmetische Operatoren sind in Tab. 1.1 zusammengestellt. Darin sind auch die Ränge, d. h. die Prioritäten („operator precedence“) mit der sie ausgeführt werden, angegeben. So wird das Potenzieren vor der Multiplikation, und diese vor der Addition, vorgenommen. >> 2^3∗2 ↲ ans = 16

MATLAB verfügt über die üblichen arithmetischen Operatoren und darüber hinaus über weitere arithmetische und logische Operatoren, Vergleichsoperatoren und spezielle Zeichen, die besonders den Umgang mit Vektoren und Matrizen erleichtern, wie in Abschn. 1.3.5 noch gezeigt wird.

1.3.3 Konstanten und Variablen Namen von Konstanten und Variablen beginnen in MATLAB stets mit einem Buchstaben. Sie können üblicherweise bis zu 63 Zeichen (Buchstaben, Ziffern, Unterstrich) enthalten (siehe namelengthmax). MATLAB unterscheidet zwischen Groß- und Kleinschreibung. Tab. 1.1  Einfache Rechenoperatoren in MATLAB Operation Addition Subtraktion Multiplikation Division Potenz

Symbol + ∗ / ^

Rang 3 3 2 2 1

Beispiel 7 + 3 = 10 7−3=4 7 ∗ 3 = 21 9/3 = 3 2^3=8

1.3 Programmstart und einfache Befehle

5

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 Kreiszahl π und die imaginäre Einheit i bzw. j. So lassen sich komplexe Zahlen einfach eingeben. >> z = 1+2j ↲ z = 1.0000 + 2.0000i

und >> z = 2+3i ↲ z = 2.0000 + 3.0000i

Die Zahl π, genauer die in MATLAB verwendete Repräsentation, erhält man mit der vordefinierten Konstanten >> 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. MATLAB benutzt das Zahlenformat des IEEE-Standards für Gleitkommaarithmetik („IEEE standard for floating point arithmetic“, ANSI/IEEE 754–1985) mit der Genauigkeit von circa 16 Dezimalstellen und einem Wertebereich von etwa 10−308 bis 10+308. Das Format der Bildschirmausgabe kann durch Eingabe auf der Kommandozeile eingestellt werden, wie z. B. format short und format long. Das jeweils letzte Ergebnis wird in der Variablen ans gespeichert. Beachten Sie auch, dass die vordefinierten Konstanten durch Befehlseingabe überschrieben werden können.

1.3.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 ↲

6

1  Erste Schritte in MATLAB

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 Kreiszahl π und der Arcustangens-Funktion atan und dem Imaginärteil imag der natürlichen Logarithmus-Funktion log angegeben. Funktionen in MATLAB werden später noch genauer vorgestellt. Der Hinweis Reference Page for pi liefert einen direkten Zugriff zur MATLAB-Dokumentation, was an dieser Stelle nicht weiter ausgeführt werden soll.

1.3.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 erzeugen. Geben Sie dazu folgendes Beispiel ein >> x = [1 2 3] ↲

Sie erhalten den Zeilenvektor x = 1

2

3

Mit Semikolon zwischen den Zahlen ergibt sich der Spaltenvektor >> y = [4; 5; 6] ↲ y = 4 5 6

Mit den letzten beiden Befehlen haben Sie 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 A B a x y z

Size 1 × 1 1 × 1 1 × 1 1 × 3 3 × 1 1 × 1

Bytes 8 8 8 24 24 16

Class double double double double double double

Attributes

complex

1.3 Programmstart und einfache Befehle

7

Der Befehl whos listet alle im Speicher abgelegten Variablen mit ihren Dimensionen (size) in der Form „Zahl der Zeilen × Zahl der Spalten“ auf. Falls die Variable ans erzeugt wurde, taucht sie ebenfalls hier auf. Wenn der Arbeitsspeicher nicht angezeigt wird, können Sie die Anzeige aktivieren über die Werkzeugleiste Home Layout Show Workspace. Dann erhalten sie das Fenster Workspace mit der Übersicht in Abb. 1.2 und zusätzlichen Bearbeitungsmöglichkeiten, die Sie über die rechte Maustaste, z. B. Choos Columns zur Auswahl der angezeigten Informationen, einstellen können. Mit dem Befehl clear werden alle Variablen im Workspace gelöscht. >> clear ↲

Durch Hinzufügen der Namen können Sie auch gezielt Variablen löschen. Wiederholen Sie jetzt die Eingaben zweier Vektoren mit >> x = [1 2 3]; ↲ >> y = [4; 5; 6]; ↲

Die Dimension der Vektoren kann auch mit dem Befehl size bestimmt werden. >> size(x) ↲ ans = 1 3

Die Angabe ist wieder im Format „Zahl der Zeilen × Zahl der Spalten“. Für eindimensionale Arrays, ob Zeile oder Spalte, kann auch der Befehl length verwendet werden. Da MATLAB eine Speicherverwaltung durchführt, lassen sich bei kompatiblen Dimensionen viele Befehle direkt auf Vektoren und Matrizen anwenden. Wir betrachten dazu einige Beispiele. Zunächst beginnen wir mit einem einzelnen Element eines Vektors. Durch >> x(2) ↲ ans = 2

Abb. 1.2 Fenster Workspace

8

1  Erste Schritte in MATLAB

erhalten wir den aktuellen Wert des zweiten Elements des Vektors. Mit >> x(2) = 7 ↲ ans = 1 7

3

wird der zweiten Komponente der Wert 7 zugewiesen. Beachten Sie, dass MATLAB die Komponenten eines Vektors stets mit dem Index 1 beginnend adressiert! >> x(0) ↲ Subscript indices must either be real positive integers or logicals.

Mit MATLAB können auch Vektoren miteinander verknüpft werden. Die Addition der beiden Vektoren >> x + y ↲

liefert in älteren MATLAB-Versionen eine Fehlermeldung, da die Dimensionen bzgl. der Addition inkompatibel sind. Der Zeilenvektor x kann nicht mit dem Spaltenvektor y addiert werden. Error using + Matrix dimensions must agree.

Durch den Operator „´“ kann jedoch 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. Vektoren und Matrizen mit komplexen Zahlen werden mit „´“ zusätzlich konjugiert. In neueren MATLAB-Versionen ist die Operation „+“ für zwei Matrizen überladen. MATLAB ergänzt durch Kopieren selbstständig Zeilen und Spalten, sodass zwei Matrizen entstehen, die elementweise addiert werden. In obigem Beispiel für x und y resultiert >> x + y ↲ ans = 5 6 7

6 7 8

7 8 9

1.3 Programmstart und einfache Befehle

9

Ähnlich zur Addition wird eine elementweise Multiplikation durchgeführt. Dazu wird der Multiplikationsoperator mit einem vorangestellten Punkt erweitert „.∗“. >> x.∗z ↲ ans = 4

35

18

Entsprechendes gilt auch für die 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 einfach erzeugt. >> x = x = 1 1 >> x = x = 0 0 0 >> x = x = 7 7 >> x = x = 1 0 0

ones(2, 3) ↲ 1 1 1 1 zeros(2, 3) ↲ 0 0 0 repmat(7,2,3) ↲ 7 7 7 7 eye(3) ↲ 0 0 1 0 0 1

Das Rechnen mit Vektoren und Matrizen geschieht wie gewohnt. Geben Sie folgende Befehle ein und überprüfen Sie das Ergebnis. I A c B B

= = = = =

eye(3); ↲ ones(3); ↲ 0.5; ↲ c∗A + I ↲ 1.5000 0.5000 0.5000 1.5000 0.5000 0.5000

0.5000 0.5000 1.5000

10

1  Erste Schritte in MATLAB

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, dass es die Werte von 0 bis 10 in Einserschritten enthält. t = Columns 1 through 7 0 1 2 3 4 Columns 8 through 11 7 8 9 10

5

6

Eine ähnliche Funktion stellt der Befehl linspace bereit. 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 >> x = B(:,2) x = 0.5000 1.5000 0.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.3.6 Vordefinierte MATLAB-Funktionen und einfache Grafiken Eine Stärke von MATLAB ist die umfangreiche Sammlung von vordefinierten Funktionen, die weit über den typischen Funktionsumfang höherer Programmiersprachen wie C hinausgeht. Dies trifft sowohl auf die Grundausstattung als auch auf die Erweiterungspakete, Toolbox genannt, zu. Die in den Versuchen benötigten speziellen Funktionen werden später Schritt für Schritt eingeführt. 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; ↲

1.3 Programmstart und einfache Befehle

11

Mit >> y = sin(t); ↲

erstellen Sie das 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 Abb. 1.3. >> >> >> >>

grid ↲ xlabel(‘{\itt} \rightarrow’) ↲ ylabel(‘{\ity} ({\itt}) \rightarrow’) ↲ title(‘Sine function’) ↲

Mit dem Befehl help plot können Sie sich später eine Zusammenfassung von Optionen und eine Liste von Befehlen anzeigen lassen, mit denen Sie Grafiken ihren Bedürfnissen anpassen können. Darüber hinaus bieten Ihnen die Menüleiste und die Schaltknöpfe des Grafikfensters einige Optionen zur nachträglichen Bearbeitung 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. Zur Verdeutlichung der Folgen bietet MATLAB den Grafikbefehl stem für das Stabdiagramm in Abb. 1.4 an. Machen Sie sich den Unterschied deutlich, indem Sie die grafi-

Abb. 1.3  Grafische Darstellung der Sinusfunktion mit MATLAB (plot)

12

1  Erste Schritte in MATLAB

Abb. 1.4  Sinusfolge im Stabdiagramm (stem)

sche Darstellung für die Sinusfunktion bei einer geringen Stützstellenzahl pro Periode mit dem Befehl stem wiederholen. >> >> >> >>

n = 0:10; ↲ y = sin(n); ↲ stem(n,y,'filled'), grid ↲ xlabel('{\itn} \rightarrow'), ylabel('{\ity}[{\itn}] \rightarrow')↲

Abb. 1.4 hebt 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 die zeitdiskreten Signale y[n] verwendet.

1.4

Schreiben eines MATLAB-Programms im Editor-Window

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 Script File, zusammenzufassen. Damit MATLAB derartige Dateien als solche erkennen kann, sind sie mit der Endung „.m“ zu versehen. Sie werden deshalb kurz als M-File bezeichnet.

1.4.1 MATLAB-Editor Um ein M-File zu erstellen, können Sie in der Werkzeugleiste des MATLAB Desktop den Reiter Home New Script anwählen. Danach erscheint das Editor-Window am Bildschirm. Geben Sie nun die in Abb. 1.5 angegebenen Programmzeilen ein. Beach-

1.4 Schreiben eines MATLAB-Programms im Editor-Window

13

Abb. 1.5  Programmerstellung im Fenster Editor/Debugger

ten 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 einfache Hilfstexte zu Ihren Programmen. Zum Speichern des Programms gehen Sie nun zur Werkzeugleiste, klicken dort Save an und geben im File-Save-Fenster unter Save as den Namen des Programms myprogram ein, der dann automatisch mit der Endung „.m“ versehen wird. Günstiger Weise legen Sie zum Speichern von MATLAB-Programmen, Daten usw. ein eigenes Verzeichnis an. Stellen Sie das Arbeitsverzeichnis Current Folder von MATLAB im Command Window auf Ihr Verzeichnis um. Über den Reiter Home Layout Current Folder kann das Arbeitsverzeichnisfenster eingeblendet werden. Das Programm kann nun über verschiedene Wege gestartet werden. Im Command Window müssen Sie dazu hinter dem Prompt den Namen des Programms eingeben – aber ohne die Endung „.m“. Nun wird das Programm abgearbeitet und die Sinusfunktion grafisch dargestellt. Im Editor-Window wird das Programm über Run oder kurz mit der Steuertaste F5, zur Ausführung gebracht; alternativ kann der Schaltknopf mit dem grünen Dreieck verwendet werden. Eine weitere Möglichkeit ein M-File zu starten, ist die Auswahl des Programms mit der rechten Maustaste im Fenster Current Folder und Wahl der Option Run oder der Steuertaste F9. 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

14

1  Erste Schritte in MATLAB

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. In MATLAB sind einige nützliche Debug-Werkzeuge eingebaut, z. B. die Möglichkeit den Programmlauf an definierten Stellen („breakpoints“) zu unterbrechen. Damit können Sie sich später vertraut machen.

1.4.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 („control flow“). MATLAB bringt dazu die üblichen, aus höheren Programmiersprachen bekannten Werkzeuge mit: • bedingte Anweisung, if–elseif–else-end • Auswahlanweisung, switch–case-otherwise-end • Schleife, for-end , while-end und continue bzw. break Für die bedingten Anweisungen werden die Vergleichsoperatoren in Tab. 1.2 verwendet. Dabei lassen sich gegebenenfalls mehrere Bedingungen aus Vergleichsoperatoren („relational operations“) durch die logischen Operatoren („logical operations“) verknüpfen. Um den Umfang der Einführung kurz zu halten, wird auf eine detaillierte Darstellung der Anwendungsmöglichkeiten verzichtet. Sie können bei Bedarf der Dokumentation entnommen werden. Hier soll als Beispiel nur die While-Schleife eingesetzt werden. Mit ihr lässt sich die kleinste, von MATLAB darstellbare positive Maschinenzahl elegant bestimmen. Sie ist eine wichtige Größe zur Abschätzung der Rechengenauigkeit der zugrundeliegenden Gleitkommaarithmetik (Kap.  14). Erstellen Sie dazu das M-File zum Programm 1.1 (Die letzte Zeile in Programm 1.1 ist ein Beispiel für die formatierte Bildschirmausgabe. Und den Zahlenwert erhalten Sie auch mit dem Befehl eps(0)).

Tab. 1.2  Vergleichsoperatoren und logische Operatoren Operator > >= & |

Definition größer größer oder gleich UND (AND) ODER (OR)

Operator < 0 epsilon = a; n = n + 1; a = a/2; end fprintf('epsilon = %g , n = %i\n',epsilon,n)

1.4.3 Verkettete Programme und Unterprogramme Das kleine Programmbeispiel in Abb. 1.5 ist vom Prinzip her eine Verkettung von MATLAB-Programmen. 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 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 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 Fourier-Reihe [3]. Einen Ausschnitt aus einem periodischen Rechteckimpulszug in normierter Darstellung zeigt Abb. 1.6. Die Periode beträgt eins. Die Amplitude alterniert im Abstand der halben Periode zwischen den Werten eins und null. Wir erstellen zunächst eine MATLAB-Funktion für den periodischen Rechteckimpuls, das heißt eine Programmfunktion die Stützwerte zu den vorgegebenen Stützstellen liefert. 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 Programm 1.2 ein.

16

1  Erste Schritte in MATLAB

Abb. 1.6  Periodischer Rechteckimpulszug in normierter Darstellung

Das Programm enthält bereits einige MATLAB-eigene Funktionen, Operatoren und Programmsteuerungselemente. Mit dem help-Kommando zu mod [Modulo-Abbildung nach Division], >=, && [UND] und for haben Sie Zugriff auf die jeweilige Dokumentation. Siehe auch in Home New Function. Programme die eine Funktion (function) darstellen speichern Sie am besten unter den jeweiligen Funktionsnamen ab, hier rectangular.m. Die Approximation des periodischen Rechteckimpulszugs geschieht mit der bekannten Fourier-Reihe (z. B. [1])

Dazu erstellen Sie Programm 1.3 und speichern Sie die Funktion als M-File mit dem Namen fourier.m ab. Abschließend wird das Hauptprogramm mir der Festlegung der Parameter, dem Aufruf der Funktionen und der grafischen Ausgabe erstellt. Speichern Sie das folgende Hauptprogramm, Programm 1.4, als M-File mit dem Namen fouriersyn.m ab. Nach Aufruf des Programms fouriersyn sollten Sie die Grafik in Abb. 1.7 erhalten. Sie zeigt das aus der Mathematik bekannte Ergebnis der abgebrochenen Fourier-Reihe („partial sum“) mit den Überschwingern, dem gibbschen Phänomen (siehe Konvergenz im quadratischen Mittel der Fourier-Reihe). Letzteres spielt in der digitalen Signalverarbeitung eine große Rolle und wird in einem späteren Versuch (Kap. 9) noch genauer behandelt. Programm 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)); % default amplitude = 0 for n = 1:length(t) x = mod(t(n),p); % mapping of t into fundamental period if x >= 0 && x =1) y = 0.5*ones(size(t)); % default amplitude = 0 for n = 0:N-1 y = y + ((2/pi)/(2*n+1))*sin((2*n+1)*2*pi*t); end return

Programm 1.4 Hauptprogramm Fourier-Synthese % Fourier synthesis of rectangular impulse train N = 10; % number of harmonics for partial sum T = .01; % sampling interval (step size) t = 0:T:3; y = rectangular(t,1,.5); yF = fourier(t,N); plot(t,y,t,yF,'LineWidth',2), grid axis([0 3 -.2 1.2]) xlabel('{\itt} \rightarrow') ylabel('{\ity}({\itt}), {\ity}_{F}({\itt}) \rightarrow') TEXT = 'Fourier synthesis of rectangular impulse train'; title([TEXT,' (N=',num2str(N),')'])

Mit dem Programm 1.4 können Sie nun auch anschaulich den Einflüssen des Abtastintervals (Schrittweite) T und der Zahl der Harmonischen N auf die Güte der Approximation der Rechteckimpulsfolge nachspüren.

18

1  Erste Schritte in MATLAB

Zum Schluss sei nochmals der Unterschied zwischen einem Script und einer Function hervorgehoben. Ersteres erzeugt als Folge von MATLAB-Befehlen globale Varia­ blen, während eine Funktion mit lokalen Variablen arbeitet und Daten über ihre Schnittstelle, dem Funktionsaufruf, austauscht. Mit dem Befehl whos oder im Fenster Workspace können Sie das an den Programmbeispielen überprüfen. Die in den Funktionen verwendeten Variablen x und n sind als lokale/temporäre Variable nicht im Arbeitsspeicher enthalten.

1.4.4 Versuchsdurchführung M1.1 Harmonische Synthese Sie sollen die harmonische Synthese der antisymmetrischen Sägezahnschwingung („sawtooth“) durch die Fourier-Reihe (z. B. [2]) demonstrieren. ...

Schreiben Sie ein MATLAB-Programm zur grafischen Darstellung des zeitdiskreten Si­ gnals, wenn zur Approximation die ersten vier Harmonischen verwendet werden. Die Zahl der Abtastwerte pro Signalperiode sei zehn und es sollen zwei Perioden im Stabdiagramm dargestellt werden.

1.5

MATLAB Help und MATLAB Demo

Die beste Möglichkeit sich zunächst mit MATLAB etwas vertrauter zu machen bieten die videobasierten MATLAB-Beispiele. Sie erreichen sie in der Werkzeugleiste des Reiters Home unter Recources über den Knopf mit dem Fragezeichen „?“ (HELP). Es öffnet sich das HELP-Fenster. Dort finden Sie die Auswahl Getting Started with MATLAB. Für den Anfang besonders empfehlenswert sind die beiden kurzen Videos Getting Started with MATLAB und Working in the Development Environment. MATLAB bietet Ihnen unter Tutorials einfache und kurze textorientierte Tutorien an, mit denen Sie das hier Gelernte wiederholen können. Im HELP-Fenster finden Sie auch die Auswahl Functions in MATLAB. Dort wird Ihnen eine Liste mit Funktionen (Befehlen) gezeigt, die Sie sich alphabetisch oder nach Kategorien geordnet anzeigen lassen können. Die Liste ist besonders praktisch, wenn Sie sich einen Überblick über eine Kategorie verschaffen wollen oder sich nicht mehr genau an den Namen einer Funktion erinnern können. Beispielsweise erhalten Sie unter Mathematic Elementary Math Complex Numbers die Auflistung in Tab. 1.3. Mit einem Klick auf eine der Funktionen erhalten Sie deren Beschreibung.

1.6 Übungen

19

Tab. 1.3  MATLAB-Funktionen zu komplexen Zahlen im HELP-Fenster abs angle complex conj cplxpair i imag isreal j real sign unwrap

„Absolute value and complex magnitude“ „Phase angle“ (vgl. atan2) „Create complex array“ „Complex conjugate“ „Sort complex numbers into complex conjugate pairs“ „Imaginary unit“ „Imaginary part of complex number“ „Determine whether array is real“ „Imaginary unit“ „Real part of complex number“ „Sign function (signum function)“ „Correct phase angles to produce smoother phase plots“

Falls das für Sie der erste Kontakt mit MATLAB sein sollte, bedenken Sie, dass ein Programmsystem und eine Entwicklungsumgebung wie MATLAB nicht in einem „Trockenkurs“ anhand einer Bedienungsanleitung erlernt werden kann. Hier ist „Lernen durch gezieltes Probieren“ der sinnvollste Weg.

1.6

Übungen

Hier finden Sie zusätzlich drei Übungsaufgaben mit denen Sie Ihr MATLAB-Wissen und -Fertigkeiten festigen können. Die Aufgaben befassen sich mit der Kreiszahl π und den komplexen Zahlen. Lösen Sie die Aufgaben mit MATLAB. M1.2 Kreiszahl Die Kreiszahl π ist eine universelle geometrische Konstante, die sich aus dem Verhältnis von Umfang zu Durchmesser eines Kreises ergibt. Sie ist eine irrationale Zahl. Archimedes von Syrakus (um 287-212 v. Chr.) wird die Näherung π ≈ 22/7 zugeschrieben. Von L. Euler (1707–1783) stammt die Reihendarstellung (z. B. [1])



π2 1 1 1 = 1 + 2 + 2 + 2 + … 2 3 4 6

a. Auf wie viele Nachkommastellen ist die Näherung von Archimedes genau? Und wie groß ist der relative Fehler in Prozent? Gehen Sie bei der Fehlerbestimmung davon aus, dass der MATLAB-Wert pi hinreichend genau ist. b. Wie viele Glieder der Reihendartstellung von Euler müssen berücksichtigt werden, damit die Genauigkeit in (a) erreicht wird?

20

1  Erste Schritte in MATLAB

M1.3 Eulersche Zahl Eine der berühmtesten Gleichungen der Mathematik wird L. Euler (um 1748) zugeschrieben, die eulersche Gleichung eiπ + 1 = 0. Sie verbindet die elementaren natürlichen Zahlen 0 und 1 mit den irrationalen Zahlen π und e sowie der imaginären Einheit i. Eine einfache Näherung für die eulersche Zahl liefert e ≈ 19/7. Euler selbst definierte sie als Reihe [1]

Wiederholen Sie die Aufgaben in M1.2 sinngemäß. M1.4 Komplexe Zahlen Komplexe Zahlen schreiben sich in algebraischer Form z = a + i·b. Darin sind der Realteil Re(z) = a, der Imaginärteil Im(z) = b und die imaginäre Einheit i2 = −1. Ist b = 0, so entsteht eine reelle Zahl. Und ist a = 0, spricht man von einer imaginären Zahl. Die Menge der komplexen Zahlen wird mit ℂ bezeichnet. (In der Elektrotechnik wird meist für die imaginäre Einheit j geschrieben. In MATLAB kann i und j als Variable verwendet werden, d. h. durch die Anwender überschrieben werden, was dann möglicherweise zu Fehlern führt.) Die komplexen Zahlen werden in der gaußschen Zahlenebene (C. F. Gauß, 1777–1855) als Punkte mit dem Abszissenwert a und Ordinatenwert b dargestellt, siehe Abb. 1.8. Die reellen Zahlen (ℝ) liegen auf der Abszisse, der reellen Achse. Die imaginären Zahlen liegen auf der Ordinate, der imaginären Achse. Jede komplexe Zahl entspricht somit einem Radius

und einem Winkel y (a,b)

b

r j a

x

Abb. 1.8  Rechtwinkliges Koordinatensystem (x,y) und Polarkoordinaten (ρ,φ)

1.7 Zusammenfassung

21

Der Radius ρ wird Modul oder (Absolut)Betrag der komplexen Zahl genannt. Den Winkel φ nennt man Argument der komplexen Zahl. (In der Elektrotechnik wird auch von der Phase einer komplexen Größe gesprochen.) a. Geben Sie in MATLAB die komplexe Zahl z mit Realteil 3 und Imaginärteil 4 ein. b. Bestimmen Sie nun den Betrag und den Winkel mit MATLAB. Für die Winkelberechnung verwenden Sie den 4-Quadranten-Arcustangens („four-quadrant invers tangens“), den MATLAB-Befehl atan2(y,x). c. MATLAB unterstützt das Rechnen mit komplexen Zahlen durch die Befehle abs, angle, conj, imag und real. Wenden Sie die Befehle auf z an und ordnen Sie anhand der Ergebnisse die Rechenoperationen zu. M1.5 Polarform Aus Abb. 1.8 folgt mit der Definition der Sinus- bzw. Kosinusfunktion die trigonometrische Form der komplexen Zahlen

Die Eulerformel

führt auf die Exponentialform der komplexen Zahlen

a. Nehmen Sie die komplexe Zahl aus M1.4 (algebraische Form) und stellen Sie sie in MATLAB in der trigonometrischen Form dar indem Sie für den Betrag und den Winkel Befehle aus Tab. 1.3 verwenden. b. Führen Sie mit MATLAB folgende Rechnungen für z aus (a) durch: z + z∗ (konjugiert komplex), z − z∗, z · z∗ und z · z−1. Welche Werte ergeben sich? c. Welchen Wert erhält man in MATLAB für eiπ bzw. eiπ/2?

1.7

Zusammenfassung

Das Programmsystem MATLAB enthält eine Vielzahl von praktischen Werkzeugen zur Signalverarbeitung bereit. Hierzu gehört die Darstellung von Signalen als Vektoren und Matrizen und ihre Manipulation mittels „einfacher“ Befehle für mathematische Operationen oder zur grafischen Darstellung.

1  Erste Schritte in MATLAB

22

MATLAB unterstützt sowohl eine direkte kommandozeilenorientierte Arbeitsweise als auch komplexe Anwendungen durch praktische Funktionen, Möglichkeiten der Programmablaufsteuerung und nicht zuletzt nützliche Werkzeuge zur Programmentwicklung. Als einführendes Anwendungsbeispiel aus dem Themenkreis der Signale und Systeme wurde die Darstellung des Rechteckimpulszuges durch seine Fourier-Reihe vorgestellt. Mit einfachen Befehlen wurde das Signal in Form von zwei Vektoren mit den Stützstellen (Zeit) bzw. den Stützwerten (Amplitude) generiert. Dabei wurde ein Hauptprogramm mit Unterprogrammen (function) eingesetzt. Schließlich wurde das Signal am Bildschirm angezeigt und die Grafik aussagekräftig beschriftet. Schon das relativ einfache Programm machte es möglich, durch Variation des Abtastintervalls (Schrittweite der Stützstellen) und Anzahl der verwendeten Harmonischen die Güte der Approximation augenscheinlich zu prüfen. Deutlich erkennbar war das gibbsche Phänomen, das Überschwingen der Approximation an den Sprungstellen des Rechteckimpulszuges.

1.8

Quiz 1

Ergänzen Sie die Lückentexte ( _ ) sinngemäß. 1. Mit t=0:2:10 wird ein Array mit __ Elementen angelegt. 2. Digitale Signale werden mit dem Befehl stem im ___ dargestellt. 3. x=[2; 4; 3] ergibt einen ___. 4. Für das gibbsche Phänomen typisch im Signalbild sind die ___. 5. x=[1 2]∗[3; 4] liefert das ___. 6. Mit X=eye(3)+ones(3); ist X(3,1)gleich ___. 7. Die kleinste positive Maschinenzahl in MATLAB erhält man mit dem Befehl ___. 8. Periodische Signale lassen sich durch Überlagerung von ___ darstellen. 9. Mit x=0.5∗pi; ist sin(x)gleich ___. 10. x=[1; 2]∗[3 4] liefert das ___. 11. Die in einer function definierten Variablen sind typisch ___ Variablen. 12. Das gibbsche Phänomen der Signalapproximation durch eine abgebrochene Fourier-Reihe tritt an ___ des Signals auf. 13. Die Befehle t=0:3 und linspace(___) liefern die gleichen Ergebnisse. 14. Mit w = pi/4; n=0:12; y=sin(w∗n); ist y(7) gleich ___.

1.9

Lösungshinweise

Onlineressourcen: eps0.m, erste_schritte.m, fourier.m.m, fouriersyn.m, myprogram.m, rectangular.m, sawtooth_approx.m



1.9 Lösungshinweise

23

Zu M1.1 Harmonische Synthese siehe Programm 1.5 und Abb. 1.9. Programm 1.5 Fourier-Approximation des Sägezahn-Signals (zeitdiskret) % Fourier synthesis of sawtooth signal % sawtooth_approx * mw * 2017 Nh = 4; % number of harmonics Nspp = 20;% samples per period t = 0:1/Nspp:2; % normalized time (2 periods) y = sawtooth(t,Nh); % compute signal stem(t*Nspp,y,'filled'), grid axis([0 2*Nspp+1 -1 1]) xlabel('{\itn} \rightarrow') ylabel('y_{F}[{\itn}] \rightarrow') TEXT = 'Fourier synthesis of sawtooth'; title([TEXT,' (N=',num2str(Nh),', Nspp=',num2str(Nspp),')']) function y=sawtooth(t,Nh) % function in file available in R2016b % Fourier approximation % t : time samples (t>=0) % Nh : number of harmonics y = zeros(size(t)); s = 1; x = 2*pi*t; for k = 1:Nh y = y + s*sin(k*x)/k; s = -1*s; end y = y*2/pi; end

Zu M1.2 Kreiszahl a. 22/7  ≈  3,1429 ist auf 2 Nachkommastellen genau. Der relative Fehler beträgt ca. 0,04 %. b. Es müssen 755 Glieder berücksichtigt werden (Programm 1.6).

24

1  Erste Schritte in MATLAB

Abb. 1.9  Fourier-Approximation des Sägezahn-Signals (zeitdiskret)

Programm 1.6 Approximation der Kreiszahl π

Zu M1.4 Komplexe Zahl a. z=4+3i b. rho=abs(z) und phi=atan2(3,4) c. abs – (Absolut-)Betrag, angle – Winkel (Phase) im Bogenmaß, conj – konjugiert komplex, imag – Imaginärteil, real – Realteil. Zu M1.5 Polarform a. abs(z)∗(cos(angle(z))+i∗sin(angle(z))) b. 8 = 2·Re(z); 6 = 2·Im(z); 25 = |z|2; 1 c. −1; i

Literatur

25

Zu Quiz 1 1. 6; 2. Stabdiagramm; 3. Spaltenvektor; 4. Überschwinger; 5. Skalarprodukt, 11; 6. 1; 7. eps(0); 8. Harmonischen; 9. 1; 10. dyadische Produkt, [3 4; 6 8]; 11. lokale/temporäre; 12. der Sprungstelle (den Sprungstellen); 13. linspace(0,3,4); 14. −1.

Literatur 1. Bronstein, I. N., Semendjajew, K. A., Musiol, G., & Mühlig, H. (1999). Taschenbuch der Mathematik (4. Aufl.). Frankfurt a. M.: Harri Deutsch. 2. Kories, R., & Schmidt-Walter, H. (2010). Taschenbuch Elektrotechnik (9. Aufl.). Frankfurt a. M.: Harri Deutsch. 3. Werner, M. (2008). Signale und Systeme. Lehr und Arbeitsbuch mit MATLAB®-Übungen (3. Aufl.). Wiesbaden: Vieweg+Teubner.

2

Elementare zeitdiskrete Signale

Zusammenfassung

Es werden elementare Signale, ihre analytische Beschreibung und grafische Darstellung am Rechner vorgestellt. Am Beispiel von Audiosignalen werden die Abtastung, die Zeit-Frequenz-Darstellung und die Signalsynthese behandelt und ihre Effekte hörbar gemacht. Schlüsselwörter

Abtastung („sampling operation“) · ADSR-Hüllkurve („ADSR envelope“) · Analog-­ Digital-­Umsetzung („analog-to-digital conversion“) · Audiosignal („audio signal“) · Geräusch („noise“) · Grundfrequenz/-schwingung („fundamental frequency“) · Harmonische („harmonic“) · Impulsfolge („unit-sample sequence“, „unit impulse“) · Klang („sound“) · MATLAB · Oberwellen („higher harmonics“) · Spiegelfrequenz („mirror frequency“) · Sprungfolge („unit-step sequence“, „unit step“) · Stabdiagramm („stem plot“) · Ton („tone“) · Zeit-Frequenz-Darstellung („time-­ frequency representation“)

2.1

Lernziele

Nach Bearbeiten des Versuches können Sie • die Impulsfolge, die Sinus- und die Kosinusfolge analytisch und grafisch darstellen • einfache MATLAB-Befehle zur Erzeugung von Signalen und ihrer bildlichen Darstellung anwenden • mit MATLAB Audiosignale generieren und hörbar machen • die Bedeutung der Abtastfrequenz für Audiosignale erklären © Springer Fachmedien Wiesbaden GmbH, ein Teil von Springer Nature 2019 M. Werner, Digitale Signalverarbeitung mit MATLAB®, https://doi.org/10.1007/978-3-658-18647-0_2

27

28

2  Elementare zeitdiskrete Signale

• einfache MATLAB-Programme zur Signalverarbeitung verstehend lesen und erklären Dieser Versuch macht Sie mit einfachen zeitdiskreten Signalen vertraut. Dazu gehören in der Vorbereitung die Angabe von zeitdiskreten Signalen als mathematische Funktionen und ihre grafischen Darstellungen. In der Versuchsdurchführung überprüfen Sie Ihre Ergebnisse aus der Vorbereitung mit MATLAB. Sie erzeugen die Signale am PC und stellen sie grafisch dar. Der zweite Teil des Versuchs stellt Ihnen bereits eine anspruchsvolle Aufgabe, bei der Sie mit MATLAB beispielhaft Audiosignale, kurze Musikstücke, generieren und am PC hörbar machen. Vorausgesetzt wird eine übliche Möglichkeit Audiosignale am PC auszugeben.

2.2

Grundlagen

Zunächst stellen wir elementare zeitdiskrete Signale vor und zeigen wie sie in MATLAB grafisch dargestellt werden.

2.2.1 Zeitdiskrete Signale Ein Signal ist eine mathematische Funktion von mindestens einer unabhängigen Variablen x(t), wobei im Folgenden – falls nicht anders erwähnt – t als die Zeit interpretiert wird. Ist die Variable t kontinuierlich, so liegt ein zeitkontinuierliches Signal vor. Ist t nur für diskrete Werte definiert, so spricht man von einem zeitdiskreten Signal oder einer Folge x[n]. Der Laufindex n heißt dementsprechend Zeitindex oder normierte Zeitvariable. Kurze zeitdiskrete Signale werden einfach durch Angabe ihrer Werte charakterisiert, wie beispielsweise x[n] = {0, 1, 1, 4} mit n = 0, 1, 2 und 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 Nullen ergänzt. Man spricht speziell von einer rechtsseitigen Folge, wenn x[n] = 0 für n  2 · f0.

2.6 

Lösungshinweise

Onlineressourcen: adsr_profile.m, dsp_zds_1.m bis _6.m

Zu A2.1 Signale Siehe Abb.  2.5 und Programm dsp_zds_2. Sinus- und Kosinusfolgen lassen sich als Stabdiagramme meist schnell skizzieren, wenn mit den zugrundeliegenden zeitkontinuierlichen Funktionen als Hilfslinien begonnen wird. Das Signal 3 hat die Periode sieben. Das Signal 4 ist aperiodisch. Zu M2.1 Grafische Darstellung Mit dem Programm dsp_zds_2 wurden die Bilder der Signale x1[n] bis x4[n] in Abb. 2.5 erzeugt.

2.6 Lösungshinweise

41

Abb. 2.5  Signalbeispiele (dsp_zds_2)

Zu M2.2 Audiosignal mit ADSR-Hüllkurve und Oberschwingungen Ausgehend vom Programm dsp_zds_3 wurden folgende Programme generiert: • Audiosignal mit ADSR-Bewertung dsp_zds_4 • Audiosignal mit ADSR-Bewertung und höheren Harmonischen dsp_zds_5 Die größte Signal(grund)frequenz leitet sich aus dem Ton d2 mit ungefähr 587 Hz ab. Damit ist die Zahl der möglichen Oberschwingungen auf 5 beschränkt, da 7 · f0 = 4109 Hz die halbe Abtastfrequenz überschreitet. Zu M2.3 Spiegelungseffekt Siehe dsp_zds_6. Zu Quiz 2 1. 1; 2. stairs; 3. die Abtastfrequenz/das Abtastintervall;

42

2  Elementare zeitdiskrete Signale

4. 300 Hz, 3400 Hz; 5. Oktave; 6. der Zeit-Frequenz-Darstellung; 7. „attack“, „decay“, „sustain“ und „release“; 8. ein Ton; 9. 8 kHz; 10. Grundwelle/-schwingung; 11. 2.; 12. Harmonischen; 13. −2; 14. 13 kHz; 15. zusammengefasst; 16. Ω0 = 2π · f0/fS.

Literatur 1. Chowing, J. M. (1973). The synthesis of complex audio spectra by means of frequency modulation. Journal of Audio Engineering Society, 21(7), 526–534. 2. Karplus, K., & Strong, A. (1983). Digital synthesis of plucked string and drum timbers. Computer Music Journal, 7(2), 43–55. 3. McClellan, J. H., Schafer, R. W., & Yoder, M. A. (1998). DSP first: A multimedia approach. Upper Saddle River: Prentice-Hall. 4. Stonick, V., & Bradley, K. (1996). Labs for signal and systems. Using MATLAB®. Boston: PWS Publishing Company. 5. Werner, M. (2008). Signale und Systeme. Lehr- und Arbeitsbuch mit MATLAB®-Übungen und Lösungen (3. Aufl.). Wiesbaden: Vieweg+Teubner.

3

Diskrete Fourier-Transformation

Zusammenfassung

Die diskrete Fourier-Transformation (DFT) stellt zeitdiskrete Signale als gewichtete Summen aus Sinus- und Kosinusfolgen dar. Sie ist eine bijektive lineare Blocktransformation. Die Gewichte der Sinus- und Kosinusfolgen, die DFT-Koeffizienten, liefern mit dem DFT-Spektrum eine alternative Signaldarstellung im Frequenzbereich. Eine verbreitete Anwendung ist die Klirrfaktormessung. Schlüsselwörter

Diskrete Fourier-Transformation („discrete Fourier transform“) · Fourier-Summe („Fourier sum“) · Harmonische Analyse („harmonic analysis“) · Klirrfaktormessung („distortion measurement“) · Leckphänomen („leakage phenomenon“) · MATLAB · Spektrum („spectrum“) · Kurzzeit-Spektralanalyse („short-time spectral analysis“)

3.1

Lernziele

Nach Bearbeiten dieses Versuches können Sie • die Definitionsgleichungen der DFT und IDFT angeben • die Begriffe harmonische Analyse, DFT-Spektrum und DFT-Koeffizient erläutern • den Zusammenhang zwischen den DFT-Koeffizienten und den transformierten Zeitsi­ gnalen erklären • für eine periodische Sinus- und Kosinusfolge die DFT-Länge so bestimmen, dass das DFT-Spektrum genau zwei von null verschiedene DFT-Koeffizienten aufweist

© Springer Fachmedien Wiesbaden GmbH, ein Teil von Springer Nature 2019 M. Werner, Digitale Signalverarbeitung mit MATLAB®, https://doi.org/10.1007/978-3-658-18647-0_3

43

3  Diskrete Fourier-Transformation

44

• das Leckphänomen erklären und seine Bedeutung für die Spektralanalyse einschätzen • die Voraussetzungen für eine Klirrfaktormessung (Simulation) erläutern und die Messung praktisch durchführen

3.2

Warum diskrete Fourier-Transformation?

Dieser Versuch ist der erste einer Reihe von Versuchen zur Frequenzbereichsdarstellung mit der diskreten Fourier-Transformation. Er führt Sie in die Grundlagen einer der häufigsten Anwendungen der digitalen Signalverarbeitung ein, die Kurzzeit-Spektralanalyse. Mathematischer Ausgangspunkt ist die Orthogonalität der harmonische Exponentiellen. Diese Eigenschaft spielt auch in der Nachrichtenübertragung eine Schlüsselrolle. Wichtige Anwendungen finden sich unter dem Begriff OFDM-Verfahren beispielsweise bei den drahtlosen Netzen (WLAN), den digitalen Teilnehmeranschlüssen (ADSL), dem digitalen Fernsehen (DVB) und der 4. und 5. Mobilfunkgeneration (LTE, 5G). Darüber hinaus ist die in der Audio- und Videocodierung wichtige diskrete Kosinustransformation (DCT) eng mit der DFT verwandt. Auch wenn die Verfahren der Nachrichtenübertragungstechnik [5] hier nicht behandelt werden können, so werden mit diesem Versuch die Grundlagen zu deren Verständnis gelegt. In der Versuchsvorbereitung werden wichtige mathematische Zusammenhänge vorgestellt und an Beispielen erläutert. In der Versuchsdurchführung werden Sie Ihre Ergebnisse mit MATLAB überprüfen und die DFT zur Kurzzeit-Spektralanalyse anwenden. Bei der Klirrfaktormessung wenden sie das Gelernte nochmals Schritt für Schritt an.

3.3

Grundlagen

Das Beispiel der Synthese von Audiosignalen in Kap. 2 weist auf die Bedeutung der Frequenzkomponenten zur Signaldarstellung hin. Schon Mitte des 18. Jahrhunderts wurden in Europa die harmonische Exponentielle zur Beschreibung von Schwingungsphänomenen diskutiert. J.-B. J. Fourier (1768–1830) erkannte 1807 ihre Bedeutung am Beispiel des Wärmeleitungsproblems. Heute wird in vielen Anwendungsfeldern 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 Tab. 3.1 erinnert [4]. In der ersten Spalte, für (zeit)kontinuierliche Funktionen, ist die Fourier-Reihe für periodische Signale und die Fourier-Transformation für aperiodische Signale aufgeführt. Über die recht allgemeinen Voraussetzungen zur Existenz der Transformationen in Tab.  3.1, d.  h. der auftretenden Integrale und Summen unendlicher Reihen, gibt die Mathematik Auskunft (z. B. [1]). Die Methoden der Fourier-Analyse zeitkontinuierlicher Signale sind auf die zeitdiskreten Signale in der zweiten Spalte übertragbar.

45

3.3 Grundlagen

3.3.1 Fourier-Transformation von periodischen Folgen Der harmonischen Analyse periodischer, zeitkontinuierlicher Signale mit der Fourier-­ Reihe entspricht die diskrete Fourier-Transformation (DFT) periodischer Folgen in Tab. 3.1 oben rechts. Ihre herausragende Rolle in der Signalverarbeitung gründet sich auf vier Eigenschaften: • Die DFT lieferte eine eineindeutige Abbildung zwischen der Zeitfolge x[n] und ihrem Spektrum X[k]. • Die DFT steht in engem Zusammenhang mit der Fourier-Reihe und der Fourier-­ Transformation. Sie wird deshalb in Spektrumanalysatoren („spectrum analyzer“) für zeitkontinuierliche Signale eingesetzt und das Ergebnis als Spektrum im Frequenzbereich interpretiert. • Die DFT eignet sich besonders zur numerischen Berechnung auf Digitalrechnern, da sie sowohl im Zeit- als auch im Frequenzbereich diskret und von endlicher Länge ist. • Die DFT kann mit dem Algorithmus der schnellen Fourier-Transformation (Kap.  6) effizient berechnet werden. Tab. 3.1  Signaldarstellung im Zeit- und im Frequenzbereich – Fourier-Analyse Periodische Zeitfunktion

Zeitkontinuierliche Funktionen Fourier-Reihe x (t ) =

+∞

∑c

k

x [ n] =

⋅ e j⋅ 2 π ⋅ f 0 ⋅ k ⋅ t

k =−∞

ck =

Aperiodische Zeitfunktion

1 ⋅ T0

t0 + T0

∫ x (t ) ⋅ e

− j⋅ 2 π ⋅ f 0 ⋅ k ⋅ t

Zeitdiskrete Funktionen Diskrete Fourier-Transformation (DFT)

dt

k ⋅n j⋅ 2 π ⋅ 1 N −1 ⋅ ∑X [ k ] ⋅ e N N k =0 N −1

X [ k ] = ∑x [ n ] ⋅ e

− j⋅ 2 π ⋅

k ⋅n N

n=0

t0

 Es ergibt sich im Frequenzbereich

 Es ergibt sich ein Linienspektrum

ein Linienspektrum mit den Fourier-­ Koeffizienten ck bei den Frequenzen k·f0 mit der Grundfrequenz f0 = 1/T0 und der Periode T0 des Zeitsignals

mit den DFT-Koeffizienten Xk mit der Periode N zu den normierten Frequenzen k = 0 : N − 1, mit der normierten Grundfrequenz 1/N und der Periode N des Zeitsignals Fourier-Transformation (für Folgen) 1 x [ n] = ⋅ X e jΩ ⋅ e jΩ⋅n dΩ 2 π ∫2 π

Fourier-Transformation 1 +∞ jω t x (t ) = ∫ X ( j ω ) ⋅ e dω 2π −∞ X ( jω ) =

+∞

∫ x (t ) ⋅ e

− jω t

dt

−∞

 Es ergibt sich das Spektrum bzgl.

der Kreisfrequenz ω = 2π·f

( )

+∞

( ) ∑ x [ n] ⋅ e

X e jΩ =

− j Ω⋅n

n =−∞

 Es ergibt sich ein periodisches

Spektrum für die normierte Kreisfrequenz Ω mit der Periode 2π

3  Diskrete Fourier-Transformation

46

Diese Eigenschaften machen die DFT auch zur Grundlage der Zeit-Frequenzanalyse mit dem Spektrogramm (Kap. 5) und der praktischen Wavelet-Transformation [3]. Wegen des engen Zusammenhangs mit der Fourier-Reihe wird die DFT auch als „diskrete Fourier-Reihe“ bezeichnet. Während die Fourier-Reihe mit k ∈ ℤ ein unendlich ausgedehntes Linienspektrum zu den Kreisfrequenzen 2π·f0·k erzeugt, ordnet die DFT wegen der Periodizität der Exponentialfunktion exp(-j·2π·k/N) den N Elementen einer Periode der Folge genau N Spektrallinien für k = 0, 1, …, N − 1 zu. Die DFT ist eine Blocktransformation, die den N Signalelementen im Zeitbereich genau N Signalelemente im Frequenzbereich und umgekehrt bijektiv zuordnet, so dass durch die Transformation keine Signalinformation verloren geht. Für das Verständnis der DFT und ihrer Anwendungen ist wichtig, dass sie für periodische Folgen definiert ist, siehe Abb. 3.1, aber häufig auf Folgen endlicher Länge angewendet wird. Dies ist kein Widerspruch. Weil jede Folge endlicher Länge L mit der Periode N ≥ L eindeutig periodisch fortgesetzt werden kann, ist die DFT auf alle geordneten Zahlenfolgen endlicher Länge anwendbar. Man beachte ferner, dass die DFT und ihr Inverses (IDFT) in Tab. 3.1 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 und umgekehrt. Die bisherigen Überlegungen fassen die folgenden Definitionen nochmals zusammen: Die diskrete Fourier-Transformation (DFT) einer Folge x[n] der Länge N mit n = 0, 1, …, N − 1 ist die Folge der DFT-Koeffizienten für k = 0, 1, 2, …, N − 1 N −1

X [ k ] = ∑x [ n ] ⋅ e



− j⋅( 2 π/ N )⋅ k ⋅ n

n=0

.



Die inverse DFT (IDFT) liefert wieder die ursprüngliche Folge, wobei diese als Überlagerung gewichteter Sinus- und Kosinusfolgen dargestellt wird. x [n] =

  2π 1 N −1 1 N −1   2π  + j⋅ 2 π / N ⋅ k ⋅ n ⋅ ∑X [ k ] ⋅ e ( ) = ⋅ ∑X [ k ] ⋅ cos  ⋅ k ⋅ n  + j ⋅ sin  ⋅ k ⋅ n   . N k =0 N k =0  N   N

Abb. 3.1  Periodische Folge

Grundperiode

x[n] –8

–1 0

78

n

3.3 Grundlagen

47

Die Folge x[n] und ihr DFT-Spektrum X[k] bilden ein DFT-Paar. DFT

x [n] ↔ X [k ]



Bei Bedarf werden die Folge und ihr DFT-Spektrum mit der Periode N wie in Abb. 3.1 fortgesetzt.

3.3.2 DFT der Kosinusfolge Um die Ergebnisse der DFT interpretieren zu können, müssen wir uns die Eigenschaften der beiden obigen Transformationsgleichungen klarmachen. Den ersten, und wichtigsten Schritt liefert das grundlegende Beispiel der DFT der Kosinusfolge π  x [ n ] = cos  ⋅ n  . 8 



Sie soll der DFT der Länge 32 unterworfen werden. Die Indizes n und k der Blocktransformation bewegen sich dann von 0 bis 31. 2π



31  π  − j⋅ ⋅n⋅k X [ k ] = ∑ cos  ⋅ n  ⋅ e 32 8  n=0

Für den weiteren Rechengang ist es vorteilhaft, die Kosinusfunktion mit der eulerschen Formel in exponentieller Form darzustellen. Nach kurzer Zwischenrechnung erhalten wir die zwei geometrischen Reihen X [k ] =

π − j⋅ ⋅( 2 + k )⋅ n  1 31  j⋅16π ⋅( 2 − k )⋅n ⋅∑e + e 16  2 n=0  

die schließlich in zwei Quotienten resultieren X [k ] =

 j⋅2 π⋅ 2 − k − j⋅2 π⋅( 2 + k ) 1 1− e ( ) 1− e ⋅ + π π − j⋅ ⋅( 2 + k ) j⋅ ⋅( 2 − k ) 2  1 − e 16  1 − e 16

 .  

Die beiden Zähler sind stets null, weil in den Exponenten stets ein ganzzahliges Vielfaches von 2π auftritt und folglich die harmonischen Exponentiellen gleich eins sind. Damit sich 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 ist der Nenner ebenfalls null. Für k = 2 und 30 liegen zunächst unbestimmte Ausdrücke vor, die mit

48

3  Diskrete Fourier-Transformation

der Regel von L’Hospital, oder einfacher direkt durch Einsetzen der beiden Werte für k in die Summenterme oben bestimmt werden können. Im Beispiel resultiert die DFT der ­Kosinusfolge X [ k ] = 16 ⋅ (δ [ k − 2 ] + δ [ k − 30 ]) f ur k = 0,1,…, 31



mit zwei Impulsen an der Stelle k = 2 und 30. Alle anderen DFT-Koeffizienten sind null. Die Kosinusfolge und ihr DFT-Spektrum sind in Abb. 3.2 dargestellt. Die Grafik wurde mit dem Programm 3.1 erzeugt. Darin wird die DFT mit dem MATLAB-Befehl fft berechnet. Er stellt einen besonders effizienten Algorithmus zur Berechnung der DFT dar und daher auch sein Name fft, für „fast Fourier transform“ (FFT) (Kap. 6). Wie in Abb. 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 Abb. 3.2 augenfällig, d. h. ohne Rechnung, auf das Kosinussignal und seine Periode und umgekehrt geschlossen werden. Programm 3.1 DFT der Kosinusfolge % dft spectrum of a cosine sequence % dsp_dft_1.m * mw * 2017 N = 32; % length of sequences (period) n = 0:N-1; % normalized time Omega = pi/8; % normalized radian frequency x = cos(Omega*n); % cosine sequence X = fft(x); % computation of dft spectrum % Graphics FIG = figure('Name','dsp_dft_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}] )')

Die allgemeine Betrachtung der DFT als harmonische Analyse macht dies nochmals deutlich. Die DFT stellt jede Folge der Länge N als mit den DFT-Koeffizienten gewichtete Überlagerung von N 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,1,…, N − 1



3.3 Grundlagen

49

Abb. 3.2  Kosinusfolge (oben) und ihr DFT-Spektrum (unten); Darstellung von Real- (Re) und Imaginär-(Im)teilen links bzw. rechts (dsp_dft_1)

mit den Werten der normierten Kreisfrequenz



Ωk =

2π ⋅ k f ur k = 0,1,…, N − 1. N

Durch Koeffizientenvergleich ergibt sich für festes k = k0 der Zusammenhang



 2π  DFT N cos  ⋅ k0 ⋅ n  ↔ ⋅ δ [ k − k0 ] + δ  k − ( N − k0 )  2 N 

(

)

für k = 0,1,…, N −1.



Der erste Impuls im DFT-Spektrum bei k0 folgt unmittelbar. Der zweite Impuls resultiert, weil die Kosinusfunktion eine gerade Funktion und in 2π periodisch ist, das heißt



2π  2π   2π   2π  cos  ⋅ ( N − k0 ) ⋅ n  = cos  ⋅ N ⋅ n − ⋅ k0 ⋅ n  = cos  ⋅ k0 ⋅ n  . N  N  N N 

Ebenso kann für Sinusfolgen überlegt werden



 2π  DFT N sin  ⋅ k0 ⋅ n  ↔ ⋅ j ⋅ −δ [ k − k0 ] + δ  k − ( N − k0 )  2 N 

(

)

für n, k = 0,1,…, N − 1.



3.3.3 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, die Dualität zwischen Zeit- und Frequenzbereich. Wegen der periodisch zu denkenden Folgen  – sowohl das Signal als

3  Diskrete Fourier-Transformation

50

auch das DFT-Spektrum – ergeben sich zusätzlich die speziellen Eigenschaften zur zyklischen Verschiebung, zyklischen Faltung und Multiplikation. Einige Eigenschaften werden später noch genauer erläutert und in der Versuchsdurchführung verwendet. In Tab. 3.2 sind wichtige Eigenschaften im Sinne einer Formelsammlung zusammengestellt [4], auf die im Weiteren noch zurückgegriffen wird. Hier sei auf zwei wichtige Eigenschaften hingewiesen: Zum ersten, die parsevalsche Gleichung. Sie verbindet die Signalleistungen in Zeit- und Frequenzbereich. Im Zeitbereich erhält man die Blockenergie, d. h. die Energie im Signalblock der Länge N. Zum zweiten die hermitesche Symmetrie der DFT-Koeffizienten, sie ist für reelle Signale oft nützlich. X [ k ] = X ∗ [ −k ] f ur x [ n ] ∈ 



Die hermitesche Symmetrie ergibt sich aus dem Zuordnungsschema in Tab. 3.2 und bedeutet, dass für reelle Signale der Betrag des DFT-Spektrums eine gerade und die Phase Tab. 3.2  Sätze der diskreten Fourier-Transformation für periodische Folgen der Länge N Linearität DFT

∑a ⋅ x [ n] l

∑a ⋅ X [ k ]



l

l

Zyklische Verschiebung mit wN = e−j2π/N

DFT

x [n − m] ↔

Modulation

wNm ⋅k ⋅ X [ k ]

DFT

wNn⋅l ⋅ x [ n ] ↔ Spiegelung

DFT

x [ −n] ↔ Konjugiert komplexe Folge

X [k + l ]

X [ −k ]

DFT

x∗ [ n] ↔ Zyklische Faltung

X ∗ [ −k ]

N

DFT

X1 [ k ] ⋅ X 2 [ k ]

DFT

N 1 ⋅ X1 [ k ] ∗ X 2 [ k ] N

x1 [ n ] ∗ x2 [ n ] ↔ Multiplikation (zyklische Faltung im DFTSpektrum)

l

l

l

x1 [ n ] ⋅ x2 [ n ] ↔

Parsevalsche Gleichung N −1

∑ x [ n]

2

DFT



n=0

Zuordnungsschema gerade („even“), ungerade („odd“), reell („real“), imaginär („imaginary“)

2 1 N −1 ⋅ ∑ X [k ] N k =0

[ ]=

er

[ ]+

or [

]+ j·(

ei [

]+

oi [

])

[ ]=

er

[ ]+

or [

]+ j·(

ei [

]+

oi [

])

')7

3.3 Grundlagen

51

eine ungerade Funktion ist. Dies wird auch bei grafischen Darstellungen oft zur Vereinfachung genutzt. Die Annahme periodischer Folgen und Spektren deckt sich mit der üblichen zweiseitigen Darstellung der Fourier-Spektren in der Kommunikationstechnik [5]. MATLAB ­unterstützt dies durch den Befehl fftshift der das DFT-Spektrum in zentrierte Form bringt. Abb. 3.3 zeigt ein Beispiel für die Sinusfolge. Der DFT-Koeffizient für k gleich null befindet sich jetzt im Zentrum des dargestellten DFT-Spektrums. Damit ähneln die Spektren den gewohnten Darstellungen aus der Fourier-Transformation zeitkontinuierlicher bzw. zeitdiskreter Signale. Für die inverse DFT stellt MATLAB den Befehl ifft bereit.

3.3.4 Vorbereitende Aufgaben A3.1 Orthogonalität Von zentraler Bedeutung für die Eigenschaften der DFT ist die Orthogonalität der harmonischen Exponentiellen. ur k = m ⋅ N 1 N −1 − j⋅ 2Nπ ⋅k⋅n 1 f ⋅ ∑e = und k, m ∈  N n =0 0 sonst 



Verifizieren Sie die Gleichung mit der geometrischen Reihe. A3.2 DFT-Paare a. Geben Sie für die nachfolgenden fünf Signale das DFT-Spektrum der Länge N an. Es gilt n = 0:N − 1 und 0 ≤ n0 %2i->%2i \n',k1,k2,k3) fprintf('Round-off noise power %+7.2f dB\n',PrdB) fprintf('Signal-to-noise ratio %+7.2f dB\n',PydB - PrdB) fprintf('Mean value %+7.2f LSB\n',mean(r)/LSB) fprintf('Standard deviation %+7.2f LSB\n',std(r)/LSB)

376

16  Reale digitale Filter: Quantisierte Arithmetik

Programm 16.4 Block 2. Ordnung mit Skalierungsfaktor in quantisierter Arithmetik und mit Überlaufzähler function [y,s,OC] = filter_g(b,a,g,x,si,LSB,MODE) % Scaled 2nd order block for IIR filter with quantization % signals and filter coefficients quantized according to % two's-complement format % [y,s,OC] = filter_(b,a,x,si,LSB,MODE) b : numerator coefficients [b0 b1 b2] % % a : denominator coefficients [1 a1 a2] % g : scaling factor % x : input sequence % si : initial values for state space variables [s1 s2] % LSB : least significant bit (2^(-w+1)) % MODE: arithmetic mode: MODE(1,1) 'r' rounding, 't' truncation; % MODE(2,1)'o' two's-complement overflow, 's' saturation % y : output sequence % s : sequences of state space variables % s(1,:) = s1[n] and s(2,:) = s2[n] % OC : overflow counter % filter_g.m * mw * 2017 % Memory allocation and initalization N = length(x); s = zeros(2,N+1); y = zeros(1,N); OC = 0; s(:,1) = si; % initial values %% Filtering for n = 1:N % output signal y[n] = b0*x[n] + s1[n] with word length reduction if MODE(1) == 'r' x_s = LSB*round(g*x(n)/LSB); % scaling b0x = LSB*round(b(1)*x_s/LSB); else x_s = LSB*fix(g*x(n)/LSB); % scaling b0x = LSB*fix(b(1)*x_s/LSB); end y(n) = b0x + s(1,n); [y(n),OI] = overflow(y(n),LSB,MODE(2)); % two's-complement overflow OC = OC + OI; % state space variable 1 % s1[n+1] = b1*x[n] + s2[n] + 2*(-a1/2)*y[n] with word length reduction if MODE(1) == 'r' b1x = LSB*round(b(2)*x_s/LSB); a1y = LSB*round((-a(2)/2)*y(n)/LSB); else b1x = LSB*fix(b(2)*x_s/LSB); a1y = LSB*fix((-a(2)/2)*y(n)/LSB); end s(1,n+1) = b1x + s(2,n) + a1y + a1y; [s(1,n+1),OI] = overflow(s(1,n+1),LSB,MODE(2)); % two's-complement overflow OC = OC + OI; % state space variable 2 % s2[n+1] = b2*x[n] + (-a2)*y[n] with word length reduction if MODE(1) == 'r' b2x = LSB*round(b(3)*x_s/LSB); a2y = LSB*round(-a(3)*y(n)/LSB); else b2x = LSB*fix(b(3)*x_s/LSB); a2y = LSB*fix(-a(3)*y(n)/LSB); end s(2,n+1) = b2x + a2y; [s(2,n+1),OI] = overflow(s(2,n+1),LSB,MODE(2)); % overflow counter OC = OC + OI;

16.5 Zusammenfassung

377

end return function [xO,OI] = overflow(x,LSB,MODE2) % Local function : two's-complement overflow detection % [xO,OI] = overflow(x,MODE2) % x : input value % LSB : least significant bit (2^(-w+1)) % MODE2: 'o' two's-complement overflow, 's' saturation % xO : two's-complement representation % OI : Overflow indicator (1: overflow, 0: no overflow) if MODE2 == 'o' % two's-complement overflow xO = rem(x,2); OI = 0; if xO = 1 xO = xO - 2*sign(xO); OI = 1; end else % saturation if x > 1-LSB xO = 1 - LSB; OI = 1; elseif x < -1 xO = -1; OI = 1; else xO = x; OI = 0; end end return

16.5 Zusammenfassung Der Versuch „Reale digitale Filter: Quantisierte Arithmetik“ zeigt anhand von Simulationen mit MATLAB die Schwierigkeiten auf, die sich bei digitalen Filtern im Festkommaformat während des Betriebs ergeben können. Im ungünstigen Fällen werden die Filter durch Überlauf mit großen Grenzzyklen unbrauchbar. Weniger dramatisch, aber trotzdem störend, beeinträchtigen möglicherweise kleine Grenzzyklen durch Aufrunden die Signalqualität. Generell führen Wortlängenverkürzungen bei Addition und Multiplikation zu innerem Rauschen und folglich zu einem Verlust an Präzision. Die Effekte der quantisierten Arithmetik lassen sich in Modellen erfassen und analysieren, so dass Gegenmaßnahmen ergriffen werden können: gegen Überläufe nach der Addition die Sättigungskennlinie, gegen kleine Grenzzyklen das Betragsabschneiden nach der Multiplikation. Letzteres aber um den Preis größeren inneren Rauschens. Das Beispiel eines Cauer-Tiefpasses 6. Ordnung in der Kaskadenform aus Blöcken 2. Ordnung zeigt, dass das innere Rauschen die Präzision um mehrere Bits verringern kann. Dabei sind sowohl die Reihenfolge der Blöcke als auch ihre Skalierung nicht unwichtig. Für die Blöcke 2. Ordnung in Direktform II existiert ein Modell zur analytischen Berechnung der Rauschzahl aufgrund von Wortlängenbegrenzungen. Das Modell kann durch Hinzunahme von Überlaufkennlinien zum nichtlinearen Modell erweitert werden. So lassen sich durch Monte-Carlo-Simulationen reale Filter in MATLAB analysieren und optimieren.

378

16  Reale digitale Filter: Quantisierte Arithmetik

16.6 Quiz 16 Ergänzen Sie die Lückentexte ( _ ) sinngemäß. 1. Auf Signalprozessoren mit Festkommaarchitektur ist die Zahlendarstellung im ___ weit verbreitet. 2. Kleine Grenzzyklen entstehen durch ___ der Multiplizierer. 3. Bei der Addition im Zweierkomplementformat verhindert ___ Überläufe. 4. Große Grenzzyklen werden auch ___ genannt. 5. Runden der Multiplizierer verursacht am Systemausgang das ___ Rauschen. 6. MATLAB unterstützt das Betragsabschneiden mit dem Befehl ___. 7. Das Modell des Rundungsrauschens nimmt einen mittelwertfreien, ___ und ___ Störprozess an. 8. Die Varianz des Rundungsrauschens an einem Multiplizierer beträgt ___ (Formel). 9. Das innere Geräusch eine Blocks 2. Ordnung ist ___. 10. Das Rundungsrauschen im Block 2. Ordnung kann mit einem ___ Blockdiagramm modelliert werden. 11. Die Rauschzahl eines Blocks 2. Ordnung in transponierter Direktform II und mit konjugiert komplexem Polpaar ist beim Polwinkel 90° am ___. 12. Beim Betragsabschneiden wird dem Filter ___ entzogen. 13. Grenzzyklen werden im ___ visualisiert. 14. Bei der Messung des inneren Rauschens ist darauf zu achten, dass keine ___ auftreten. 15. Für das innere Geräusch spielt ___ der Blöcke in der Kaskadenform eine Rolle. 16. Auch bei Signalprozessoren mit Geleitkommaformat können ___ eine Rolle spielen.

16.7 Lösungshinweise Onlineressourcen dsp_arithm_1.m, bis 3.m, filter_.m, filter_g.m, sos_ cauer.mat, NTHFDbe.wav, NTHFDel.wav



Zu A16.1 Kleine Grenzzyklen Siehe Abb. 16.15, Periode sechs Zu A16.2 Großer Grenzzyklus Siehe Abb. 16.16, Periode acht

16.7 Lösungshinweise

379

Zu M16.1 Kleine Grenzzyklen Siehe Tab. 16.8. Zu M16.2 Große Grenzzyklen Siehe Tab. 16.9. Zu M16.3 Inneres Rauschen – Block 2. Ordnung a. Simulation mit dem Programm dsp_arithm_2, vgl. Abb.  16.17, und Programm 16.5, siehe Tab. 16.10. b. Histogramm und geschätzte Autokorrelationsfolge siehe Abb. 16.18 bzw. Abb. 16.19. Die Häufigkeitsverteilung des inneren Rauschens approximiert eine Normalverteilung mit Mittelwert null, Varianz 10−8 und Standardabweichung 3,3 · LSB. Die Autokorrelationsfolge zeigt die Eigenschwingung des Blockes 2. Ordnung mit Polwinkel 30° (2π/12), also Periode gleich zwölf. In Tab. 16.11 nimmt die Leistung des inneren Rauschens mit jedem zusätzlichen Bit an Wortlänge um 6 dB ab, siehe 6dB-pro-Bit-Regel (Kap. 14).

s2 / LSB 4 n =3

n =5

n =2 –4

n =4

2

0

–2 –2

2

n =1

4

s1 / LSB

n =0, 6, 12,…

–4

Abb. 16.15  Kleiner Grenzzyklus im Zustandsraumdiagramm mit Periode sechs

380

16  Reale digitale Filter: Quantisierte Arithmetik

s2 1

0.5

n=0

2, 10,… 4 8

–1

0

–0.5

3

1

s1

–0.5

5 9

0.5

6

7

1 –1

Abb. 16.16  Großer Grenzzyklus im Zustandsraumdiagramm mit Periode acht

Tab. 16.8  Beispiel für kleine Grenzzyklen in einem System 2. Ordnung (ρ∞ = 0,95) 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 Polwinkel φ∞ 0° 30° 60° 90°

ymin/LSB 88 −17 −5 −5

ymax/LSB 92 17 5 5

Periode 8 12 16 6

Tab. 16.9  Beispiel für große Grenzzyklen in einem System 2. Ordnung (ρ∞ = 0,95, b0 = 0,9) mit Runden der Multiplikationsergebnisse auf eine Wortlänge von 16 Bits bei Impulserregung mit großer Amplitude (1-LSB). Angegeben sind die kleinsten und größten Werte ymin bzw. ymax und die Periode der Grenzzyklen Polwinkel φ∞ 0° 30° 60° 90°

ymin/LSB −29569 −18476 – –

ymax/LSB 32743 18476 – –

Periode 22 12 – –

381

16.7 Lösungshinweise

Abb. 16.17  Kleiner Grenzzyklus (dsp_arithm_1, filter_) Tab. 16.10  Inneres Rauschen eines Blocks 2. Ordnung mit den Zählerkoeffizienten b0 = 0,9375, b1 = b2 = 0, dem Polradius ρ∞ = 0,95 und der Wortlänge von 16 Bits bei Runden Polwinkel φ∞ Leistung des inneren Rauschens Ni in dB Rauschzahl R i in dB

analytischa geschätzt

0° −60,2 −60,1 33,2

30° −80,0 −80,0 13,3

60° −84,8 −84,7 8,6

89° −86,0 −86,0 7,3

90° −90,8 −90,8 7,3

Abb. 16.18  Geschätzte Wahrscheinlichkeitsdichtefunktion (Histogramm) des inneren Rauschens (N = 105, φ∞ = 30°) (dsp_arithm_2)

382

16  Reale digitale Filter: Quantisierte Arithmetik

Abb. 16.19  Geschätzte Autokorrelationsfolge des inneren Rauschens (N = 105, φ∞ = 30°) (dsp_ arithm_2)

Tab. 16.11 Inneres Rauschen eines Blocks 2. Ordnung mit Runden (Zählerkoeffizienten b0 = 0,9375, b1 = b2 = 0; Polradius ρ∞ = 0,95, Polwinkel φ∞ = 30°) Wortlänge in Bits Leistung des inneren Rauschens in dB

10 −43,9

12 −55,9

14 −68,0

16 −79,9

Programm 16.5 Histogramm und Autokorrelationsfolge für das innere Rauschen (Programmzusatz für dsp_arithm_2) %% Histogram and autocorrelation sequence figure % histogram hr = histogram(r/LSB,'Normalization','pdf'), grid xlabel('{\itr} / {\itLSB}\rightarrow'), ylabel('{\itf}({\itr}) \rightarrow') figure % autocorrelation L = 50; R = xcorr(r,L,'unbiased'); stem(0:L,R(L+1:end)/R(L+1),'filled'), grid xlabel('{\itl} \rightarrow') ylabel(['{\itR}_{\itrr}({\itl}) / ',num2str(R(L+1),3),' \rightarrow'])

Zu M16.4 Inneres Rauschen – Reihenfolge der Blöcke a. Die Monte-Carlo-Simulation nach Abb.  16.13 ist für den Skalierungsfaktor c  =  2−6 ohne Überläufe. Für die von MATLAB gewählte Blockreihenfolge 1.2.3 ergeben sich die geschätzten Graphen für die WDF und das LDS in Abb. 16.20. Die WDF ähnelt der einer Normalverteilung mit Mittelwert null und Standardabweichung von drei LSB. Im Sinne von grob vereinfachten Plausibilitätsüberlegungen kann daraus geschlossen werden, dass die niederwertigsten drei Bits (23 = 8) eines gefilterten Signals dem Rundungsrauschen geschuldet sind. Also ein Präzisionsverlust von circa drei Bits auftritt. Das entspricht in etwa der gemessenen Rauschleistung in Tab. 16.12 mit −81,1 dB, die nach der 6-dB-pro-Bit-Regel ungefähr der Wortlänge von 13 Bits entspricht.

16.7 Lösungshinweise

383

Abb. 16.20  Geschätzte Wahrscheinlichkeitsdichtefunktion (links) und Leistungsdichtespektrum (rechts) des inneren Rauschens des Cauer-Tiefpasses 6. Ordnung in Kaskadenform Tab. 16.12  Schätzwerte für die Leistung Ni und Standardabweichung σ des inneren Rauschens eines Cauer-Tiefpasses 6. Ordnung in Kaskadenform mit quantisierter Arithmetik bei der Wortlänge von 16 Bits und Skalierungsfaktor für die Rauschquelle 2−6 Reihenfolgea Ni in dB σ in LSB

1.2.3 −81,1 3,0

1.3.2 −68,0 13,1

2.1.3 −82,7 2,4

2.3.1 −75,1 5,7

3.1.2 −58,9 37,4

3.2.1 −59,4 35,1

a Die Reihenfolge 1.2.3 entspricht der Reihenfolge mit den Blöcken 2. Ordnung in Tab. 16.6 entsprechend den Zeilen der SOS-Matrix

384

16  Reale digitale Filter: Quantisierte Arithmetik

Die Form des LDS-Spektrums, insbesondere die Lage des Gipfels bei Ω ≈ 0,3 · π, erinnert an den Betragsgang des letzten Blocks (Kap. 15). b. Die Vertauschung der Reihenfolge der Blöcke hat einen signifikanten Einfluss auf die Störung durch das innere Rauschen. Tab. 16.12 zeigt die gemessenen Werte. Im ungünstigsten Fall, d. h. zuerst Block 3, ist die Leistung des inneren Rauschens um mehr als 20 dB größer als in günstigsten Fall mit zunächst Block 1. Letztere Reihenfolge wird auch in der SOS-Matrix des MATLAB-Werkzeugs Filter Designer gewählt. Zu Quiz 16 1. Zweierkomplementformat; 2. Aufrunden; 3. (die) Sättigungskennlinie; 4. Überlaufschwingungen; 5. innere Rauschen; 6. fix; 7. gleichverteilten und unkorrelierten; 8. Q2/12; 9. korreliert; 10. linearen; 11. kleinsten; 12. Energie; 13. Zustandsraum; 14. Überläufe; 15. die Reihenfolge; 16. Wortlängeneffekte. (Abhängig von der Anwendung ist mehr oder weniger Vorsicht geboten.)

Literatur 1. Lapsley, P., Bier, J., Shoham, A., & Lee, E. A. (1997). DSP processor fundamentals. Architectures and features. Piscataway: IEEE Press. 2. Schüßler, H. W. (1994). Digitale Signalverarbeitung II. Skriptum des Lehrstuhls für Nachrichtentechnik. Erlangen: Universität Erlangen-Nürnberg. 3. Werner, M. (2008). Digitale Signalverarbeitung mit MATLAB®Praktikum. Zustandsraumdarstellung, Lattice-Strukturen, Prädiktion und adaptive Filter. Wiesbaden: Vieweg.

Weiterführende Literatur

Spätestens seit dem Erscheinen der ersten Monografien zur digitalen Signalverarbeitung von H. W. Schüßler (1973) und A. V. Oppenheim und R. W. Schafer (1975) ist die digitale Signalverarbeitung ein etabliertes Fach an Universitäten und Hochschulen.. Heute existiert eine nicht mehr überschaubare Zahl von Büchern, Fachaufsätzen, Vorträgen etc. Hinzu gekommen sind Online-­Publikationen verschiedenster Formate, von ausführlichen Lehrvideos bis kurzen Videoanleitungen. Die folgende kurze Literaturliste beschränkt sich auf bewährte Lehrbücher, in denen ich selbst viele Anregungen zu diesem Buch gefunden habe.. Darin finden Sie ausführliche Darstellungen der Grundlagen sowie weiterführende Vertiefungen der Theorie und viele Anwendungen. In vielen Hochschulbibliotheken sind (elektronische) Bücher zu MATLAB verfügbar. Auch die Webseite mathworks.com/support/books/index.html informiert über Bücher zu MATLAB.  Dort kann außerdem eine Liste mit deutschsprachigen Büchern ausgewählt werden. 1. Ingle, V. K., & Proakis, J. G. (2012). Digital signal processing using MATLAB® (3. Aufl.). Stamford: Cengage Learning. 2. Kammeyer, K.-D., & Kroschel, K. (2018). Digitale Signalverarbeitung. Filterung und Spektralanalyse mit MATLAB®-Übungen (9. Aufl.). Wiesbaden: Springer Vieweg. 3. Oppenheim, A.  V., & Schafer, R.  W. (1975). Digital signal processing. Englewood Cliffs: Prentice-­Hall. 4. Oppenheim, A.  V., Schafer, R.  W., & Buck, J.  R. (1999). Discrete-time signal processing (2. Aufl.). Upper Saddle River: Prentice-Hall. 5. Meffert, B., & Hochmuth, O. (2004). Werkzeuge der Signalverarbeitung. Grundlagen, Anwendungsbeispiele, Übungsaufgaben. München: Pearson Studium. 6. Mitra, S. K. (2006). Digital signal processing. A computer-based approach (3. Aufl.). New York: McGraw-Hill. 7. Proakis, J. G., & Manolakis, D. G. (2007). Digital signal processing. Principles, algorithms, and applications (4. Aufl.). Upper Saddle River: Pearson Education. 8. Schüßler, H. W. (1973). Digitale Systeme zur Signalverarbeitung. Berlin: Springer. 9. Schüßler, H. W. (2008). Digitale Signalverarbeitung 1. Analyse diskreter Signale und Systeme (5. Aufl.). Berlin: Springer. 10. Schüßler, H.  W. (2010). Digitale Signalverarbeitung 2. Entwurf diskreter Systeme. Berlin: Springer.

© Springer Fachmedien Wiesbaden GmbH, ein Teil von Springer Nature 2019 M. Werner, Digitale Signalverarbeitung mit MATLAB®, https://doi.org/10.1007/978-3-658-18647-0

385

386

Weiterführende Literatur

11. Stearns, S. D., & Hush, D. R. (2011). Digital signal processing with examples in MATLAB (2. Aufl.). Boca Raton: CRC Press. 12. Unbehauen, R. (2002). Systemtheorie 1. Allgemeine Grundlagen, Signale und lineare Systeme in Zeit- und Frequenzbereich (8. Aufl.). München: Oldenbourg. 13. Unbehauen, R. (1998). Systemtheorie 2. Mehrdimensionale, adaptive und nichtlineare Systeme (7. Aufl.). München: Oldenbourg. 14. von Grünigen, D.  C. (2008). Digitale Signalverarbeitung: Bausteine, Systeme, Anwendungen. Zürich: Fotorotar Print und Media AG. 15. Werner, M. (2008a). Signale und Systeme. Lehr- und Arbeitsbuch mit MATLAB®-Übungen und Lösungen (3. Aufl.). Wiesbaden: Vieweg. 16. Werner, M. (2008b). Digitale Signalverarbeitung mit MATLAB®-Praktikum. Zustandsraumdarstellung, Lattice-Strukturen, Prädiktion und adaptive Filter. Wiesbaden: Vieweg.

Stichwortverzeichnis

A Abbildung, lineare  291 abs 21 Abtastfolge 29 Abtastfrequenz  33, 71, 89, 307 Abtastintervall  29, 69, 307 Abtasttheorem 72 Abtastung  69, 306 Addierer 158 ADSR-Profil 36 Aliasing  71, 89, 237, 308 Allpass 302 Allpasstransformation 239 Amplitudengang 171 Analog-Digital-Umsetzer (ADU)  29, 33, 68, 88, 307, 335 Analyse, harmonische  45 angle 21 Anti-aliasing-Filter 200 Anweisung, bedingte  14 Apass 196 Arbeitsspeicher 6 Arcustangens-Verzerrung  237, 238 ARMA-Modell 294 Astop 196 atan2 21 audioplayer 33 audioread 33 Audiosignal 102 digitales 34 audiowrite 33 Auflösung, spektrale  74, 91 Ausdruck, arithmetischer  3 Auswahlanweisung 14 Autokorrelationsfolge (AKF)  270, 293

B Bandpass (BP)  191 Bandsperre (BS)  191 Barker-Codefolge 145 Barker-Codewort 275 Befehlsfenster 3 Betragsabschneiden 358 Betragsgang 171 Bias 314 Binary-k-Format 315 bitget 324 Bit-reversal-Adressierung (BR)  122 blackman 93 Blackman-Fenster 93 Blockdiagramm  158, 216 Blocktransformation 46 Blockverarbeitung 73 Bode-Diagramm 236 Bounded input bounded output (BIBO)  151 Butterfly 120 Butterworth-Tiefpass (BW-TP)  231 BW-TP, zeitkontinuierlicher  233 %bX 323 C C-Dur-Tonleiter 35 ceil  331, 358 chebwin 95 Chebyshev-Approximation 198 Chirp-Rate 99 Chirp-Signal 99 clear 7 Command History Window 4 conj 21

© Springer Fachmedien Wiesbaden GmbH, ein Teil von Springer Nature 2019 M. Werner, Digitale Signalverarbeitung mit MATLAB®, https://doi.org/10.1007/978-3-658-18647-0

387

388 conv  133, 146, 296 corrcoef 269 cov 269 D Dämpfungsgang 171 Data-Cursor  81, 91 3-dB-Grenzkreisfrequenz 233 6dB-pro-Bit-Regel 320 Decimation-in-time (DIT)  118 Radix-2-FFT 121 Dezibel (dB)  94, 233, 320 DFT-Frequenzraster  76, 92 DFT-Koeffizienten 46 DFT-Länge 117 DFT-Spektrum  47, 76 Differenzengleichung (DGL)  151 Digital-Analog-Umsetzer (DAU)  33, 308 Digitalisierung  306, 307 Digital video broadcasting terrestrial (DVB-T) 122 Direktform I 157 II 159 transponierte  II 151, 231, 339, 360 Discrete Fourier transform (DFT)  114, 115, 155 Dolph-Chebychev-Fenster 95 double  313, 337 Dreieckfenster 93 DTMF-Signal  79, 160 Dual-tone multi-frequency (DTMF)  79 Dualzahl 312 Durchgriff 220 Durchlassbereich 189 Durchlass(kreis)frequenz 190 Durchlasstoleranz 190 Dynamik 318 E Echtzeit 114 Echtzeitsignalverarbeitung  69, 89 Eigenfunktion 150 Eigenschwingung 219 Eingangs-AusgangsGleichung  149, 152 Einheit, imaginäre  5 Eintonsignal 34

Stichwortverzeichnis Energiefolge 180 eps 324 Equiripple-Approximation 198 Ergodizität 260 errorbar 266 Eulerformel 21 Exhaustion 338 Exponent 313 Exponentialform 21 Exponentielle 29 Export...  197, 241 eye 9 F Faktor, komplexer  115 Faltung  133, 144, 149 schnelle 133 zyklische 133 Faltungssumme 144 Fast Fourier transform (FFT)  48, 68, 88, 114, 158 Fehlerfrequenzgang 335 Fehlersignal 318 Fensterfolge 68 Fensterung  68, 89, 90, 194 Festkommaformat  312, 316 fft  48, 129, 276, 277 fftshift  51, 129 figure 33 filter  155, 218 Filter 150 Designer  196, 241, 337 Visualization Tool (FVTool)  178 Filterkoeffizient 189 Filter Viewer 193 Finite-duration impulse response (FIR)  170, 188, 292, 335 firplot 176 FIR-System 170 FIR-Tiefpass 190 fix  327, 358 fliplr 147 Floating point format  312 point operation (FLOP)  115 floor  331, 358 Folge 28 rechtsseitige 28

Stichwortverzeichnis for 14 Form zentrierte 51 trigonometrische 21 format 324 Fourier-Approximation 192 Fourier-Reihe  16, 37, 53 Fourier-Summe  37, 62 Fourier-Synthese 56 Fourier-Transformation diskrete (DFT)  45, 68, 88, 276, 291 schnelle  68, 88 fprintf 323 Frequenzauflösung 92 Frequenzgang  150, 152, 171, 215 Frequenzgruppe obere 79 untere 79 Frequenztransformation 239 freqz  155, 296 function 16 Functions in MATLAB 18 fvtool  178, 193, 224, 239, 297, 338 FV-Tool 239 G G 343 Gabor-Transformation  98, 100 Gaußsche Glockenkurve  100 gausswin 98 Geräusch 34 Gibbsches Phänomen  16 Gibbssches Phänomen  192 Gleitkommaformat 312 denormalisiertes 316 normalisiertes 313 Gleitkommaoperation 115 goertzel 160 Goertzel-Algorithmus 155 Grafik 11 Grenzfrequenz 89 Grenzwertsatz, zentraler  291 Grenzzyklus großer 357 kleiner 358 grpdelay 176 Gruppenlaufzeit 173

389 H hamming 98 Harmonische 37 Hauptzipfel  74, 90 Hauptzipfelbreite  74, 93 help 5 HELP-Fenster 18 High-bit-rate digital subscriber line (HDSL) 145 histogram 262 histogram2 297 Histogramm 262 Hochpass (HP)  191 I i 5 IEEE Std 754-2008  313 if 14 ifft  51, 129 ifftshift 129 IIR-Filter 230 imag 21 impinvar 237 Impulsantwort  149, 171, 189, 218 Impulsfolge 28 Impulskamm, periodischer  70 impz  154, 218, 296 Indizierung, logische  81 Inf 316 Infinite-duration-impulse-response (IIR)  214, 230, 292, 335 In-place-Algorithmus  119, 123 Instabilität 215 int8 317 Integrated Services Digital Network (ISDN) 145 International Telecommunication Union (ITU) 79 Inverse DFT (IDFT)  46 J j 5 K kaiser  98, 195 Kaiser-Fenster 194 Kammerton 35

390 Kaskadenform 339 Kausalität 269 Klang 34 Klirrfaktor  53, 54 Klirrfaktormessung 53 Koeffizientenquantisierung 335 Komplexe Leistungsübertragungsfunktion (CPDS) 295 Komplexität 115 Konfidenzintervall (KI)  265 Korrelationskoeffizient  259, 268 empirischer 269 Kosinusfolge 29 Kovarianz 268 Kreisfrequenz, normierte  71, 72, 89 Kreiszahl 19 Kreuzkorrelationsfolge (KKF)  270 Kurzzeitspektralanalyse  68, 88, 103 L Least significant bit (LSB)  123, 317, 336, 359 Leckfaktor 94 Leckphänomen  52, 78, 92 Leistung 271 Leistungsdichtespektrum (LDS)  270, 293 Leistungsübertragungsfunktion 294 length 7 Lineare Phase  190 Linear time invariant (LTI)  148, 149, 214, 290 Linienspektrum 192 linspace 10 load 197 local function 366 Long term evolution (LTE)  114, 122 M MA-Modell 294 Mantisse 313 Maschinenwort 310 Maschinenzahl  14, 307, 312 MAT-File 197 Matrix 9 Maximale Abweichung  198 Maximal flach  233 mean 266 Mehrfrequenzwahlverfahren (MFV)  79 menu 308 Messverfahren 321

Stichwortverzeichnis M-File 12 Minimum-delay-System 180 Mittelwert arithmetischer 264 Mittleres Fehlerquadrat  192 Modulationssatz 70 Momentankreisfrequenz 99 Monte-Carlo-Simulation 260 Moving Pictures Experts Group (MPEG)  122 Multiplizierer 158 Multiply-and-accumulate (MAC)  188 Multi-Skalen-Analyse 102 Musterfolgen 257 N NaN 316 Nebenzipfel 91 Nebenzipfeldämpfung 93 Nennerkoeffizient 152 Normalverteilung 259 Normiere Kreisfrequenz  29 Normierung 260 norminv 266 Nullstelle  152, 171, 238 O Oberschwingungsgehalt 53 Oktave  35, 245 ones 9 Operator, arithmetischer  3 Orthogonal frequency division multiplex (OFDM) 122 Orthogonalität  51, 268 Overlap-add-Methode 133 Overlap-save-Methode 133

P Parks-McClellan-Algorithmus 198 Parsevalsche Gleichung  50 Partialbruchzerlegung  219, 220 performance time 117 Periodizität 130 Phasengang 173 linearer 175 pi (π)  5, 19 Pitch 35 Plain old telephony (POT)  199

Stichwortverzeichnis play  33, 34 plot 11 pM3lvyn170L0br4qySgSK3cvA 29 Pol  152, 171, 234 reeler 215 Polausdünnungseffekt 342 Polpaar, konjugiert komplexes  215 poly  154, 180, 216 Potenzfilter 233 Präzision  312, 318 Produkt-Moment-Korrelation 268 Profiler  117, 127 Prozess, stochastischer  258 Pseudofaltung  147, 273 Pseudozufallszahl 261

Q Quantisierung  89, 306, 310 gleichförmige 310 Quantisierungsfehler 318 Quantisierungsgeräusch 318 Quantisierungsintervall 310 Quantisierungsintervallbreite  310, 359 Quantisierungskennlinie  307, 310 R Radix-2-FFT 117 rand 261 randi  105, 261 randn  261, 292 Rang 4 Rauschen granulares 311 inneres 361 weißes  271, 293 Rauschsignal-Ersatzquelle 361 Rauschzahl  361, 362 real 21 realmax 324 realmin 324 Rechenaufwand 115 Rechteckfenster  73, 90 Rechteckimpulszug 15 Remez-Algorithmus 198 repmat 9 Repräsentant 310 residuez  220, 297 Residuum 220

391 rng 261 roots  154, 176, 216 round  326, 358 Run and Time 117 Runde 358 Rundungsrauschen 359 S Sägezahnschwingung 18 Sättigungskennlinie  311, 357 Schätzer, konsistenter  264 Schätzfunktion 258 Scheitelfaktor 292 Schleife 14 Schrittweite 10 Second-order section (SOS)  242, 340 Signal 28 analoges 33 digitales  29, 33 zeitdiskretes 28 Signalflussgraph (SFG)  118, 151 Signal-QuantisierungsgeräuschVerhältnis 319 Signal-to-noise ratio (SNR)  319 Signifikant 313 si-Interpolation 308 sin  11, 32 sinc 203 single 313 Sinusfolge 29 Sinusfunktion 10 size 7 Skalarprodukt 9 SOS 343 soundsc 34 Spaltenvektor 6 Spektrogramm  88, 101 spectrogram 101 Sperrbereich 189 Sperr(kreis)frequenz 190 Sperrtoleranz 190 Spiegelfrequenzeffekt 38 Split-Radix-Verfahren 129 Sprachsignal 359 Sprungfolge 28 Stabdiagramm  11, 29 Stationarität 260 std 266 stem  11, 31

392 Stochastische Variable (SV)  257, 290 Streudiagramm 263 struct 36 Stützstelle 10 subplot 33 switch 14 Symmetrie hermitesche 130 hermitesche“ 50 System kausales 150 lineares zeitinvariantes  149 linearisiertes 361 nichtrekursives 170 reellwertiges 172 T table 132 Tastentelefon 79 Telefonsprache 199 tf2zpk 155 Tiefpass (TP)  191 tinv 266 Toleranzschema  190, 231 Toleranzschlauch 190 Ton 34 Total harmonic distortion (THD)  54 Transformation bilineare 237 impulsinvariante 237 sprungvariante 237 Transposition 8 Transversalfilter 188 Transversalform 170 triang  93, 309 Tschebyscheff-Approximation 198 %tX 323 U Übergangsbereich 190 Überlauf  312, 357 Überlaufkennlinie 356 Überlaufschwingung 357 Überschwinger 16 Übersteuerung 311 Übertragungsfunktion  152, 171, 218, 234 uint8 317 Unabhängigkeit 260 Unkorreliertheit 268 Unterabtastung 200

Stichwortverzeichnis Unterlauf 312 Untersteuerung 311 unwrap 176 V Variable 5 Vektornorm, euklidische  321 Verallgemeinerte lineare Phase  190 Verzögerungsglied  158, 170 Verzögerungsoperator 217 Vorzeichen 313 Vorzeichenbit 312

W Wahrscheinlichkeitsdichtefunktion (WDF)  259, 291 Wavelet-Transformation 102 Wechselanteil 53 while 14 While-Schleife 14 whos 6 wintool  93, 95 Wortlänge  33, 310, 316, 318 Wortlängenverkürzung 358

X xcorr 273 Z Zählerkoeffizient 152 Zahlenformat 5 Zahl, komplexe  5, 20 Zeilenvektor 6 Zeitdauer-Bandbreite-Produkt  73, 90 Zeit-Frequenz-Analyse 100 Zeit-Frequenz-Darstellung 34 Zeitvariable, normierte  28 Zero-padding 76 zeros 9 Zoom-Funktion 91 zp2tf 155 zplane  154, 176, 216 z-Transformation 152 Zuordnungsschema 129 Zustandsraumdiagramm 364 Zustandsvariable 216 Zweierkomplementformat  316, 356