Inhaltsverzeichnis Signal Processing Toolbox 1 Was ist Digitale Signalverarbeitung? 2 Inhalt 3 Aufbereitung der Messdaten 4 Interpolation 6 Approximation 7 Interpolation und Approximation 8 Anpassung der Abtastrate 11 Analyse im Zeitbereich 12 Korrelationsfunktionen 16 Analyse im Frequenzbereich 17 Spektralanalyse 18 Diskrete Fouriertransformation DFT 23 Leakage Effekt 25 Fensterfunktionenn 27 Leistungsdichtespektren 32 Spektralanalyse zeitvariable Signale 33 Extraktion von Signalanteilen 34 Digitale Filter 35 FIR Filter 4 IIR Filter 44 Digitale Filter Beliebiger Frequenzgang 45 Digitale Filter Vergleich 46 Analoge Filter 48 Digitale Filter Herleitung 51 sptool Simulation mit Matlab/Simulink
MATLAB Signal Processing Toolbox Simulation mit Matlab/Simulink
Was ist Digitale Signalverarbeitung? Verarbeitung zeitdiskret abgetasteter Signale mit Methoden zur Aufbereitung von Messdaten Analysen im Zeitbereich Analysen im Frequenzbereich Methoden zur Extraktion von Signalanteilen Simulation mit Matlab/Simulink 1
Inhalt Schwerpunkte der heutigen Vorlesung: Interpolation, Approximation und Abtastung Korrelationsfunktionen Spektralanalyse Filter Digital und Analog Simulation mit Matlab/Simulink 2
Aufbereitung der Messdaten Interpolation Approximation Änderung der Abtastrate Simulation mit Matlab/Simulink 3
Interpolation Anwendung Funktionswertberechnung zwischen Abtastpunkten Grafische Darstellung einer abgetasteten Kurve Verfahren linear kubisch Splines Simulation mit Matlab/Simulink 4
Interpolation Matlab Befehle Interpolation (methode = linear, cubic, spline): interp1 (x_koord, y_werte, x_auswertung, methode ) Mehrdimensionale Interpolation: interp2, interp3, interpn Zweidimensionale Interpolation unsortierter Daten: griddata (x_koord, y_koord, z_werte,... x_auswertung, y_auswertung, methode ) Simulation mit Matlab/Simulink 5
Approximation Anwendung Generieren von Kennlinien aus verrauschten Daten Beschreibung von Messdaten durch Ausgleichspolynom Matlab Befehle polynom = polyfit (x_koord, y_werte, ordnung) y_auswertung = polyval (polynom, x_auswertung) Simulation mit Matlab/Simulink 6
Interpolation und Approximation Vergleich interp1 mit Basic Fitting Tool spline, cubic spline interp., shape-preserving polyfit linear, cubic etc. Simulation mit Matlab/Simulink 7
Anpassung der Abtastrate Anwendung Messdaten liegen mit abweichender Abtastfrequenz vor Kompatibilität zwischen unterschiedlichen Aufzeichnungsstandards (z.b. Digital-Audio) Einfache (verlustbehaftete) Datenkompression Simulation mit Matlab/Simulink 8
Anpassung der Abtastrate Matlab Befehle Ohne Filterung: downsample (x, faktor) Zwischenwerte entfallen upsample (x, faktor) Auffüllen mit Mit Filterung: decimate (x, faktor [, ordnung, fir ]) interp (x, faktor) resample (x, zaehler, nenner) Simulation mit Matlab/Simulink 9
Anpassung der Abtastrate 5 Original x 5 y = downsample (x, 4) 5 z = upsample (y, 4) 5 2 4 5 5 1 5 2 4 5 Original x 5 y = decimate (x, 4, 8, fir ) 5 z = interp (y, 4) 5 2 4 5 5 1 5 2 4 Simulation mit Matlab/Simulink 1
Analyse im Zeitbereich Autokorrelation Kreuzkorrelation Simulation mit Matlab/Simulink 11
Korrelationsfunktionen Aufgabenstellung Korrelationsfunktion = Maß für Ähnlichkeit zweier Signale Kreuzkorrelation eines Signals mit sich selbst Autokorrelation Anwendung Erkennung und Ausblendung von Echos Laufzeitmessung zur Ortung einer Signalquelle Unterscheidung verschieden codierter Sender Simulation mit Matlab/Simulink 12
Korrelationsfunktionen Autokorrelation φ xx (k) = 1 N N n=1 x n+k x n cxx = xcorr (x, options ) Berechnung in Matlab: x: Signalvektor der Länge N cxx: Ergebnisvektor der Länge 2N 1 options = none Standard, ohne Skalierung 1/N = biased Skalierung wie in Formel = coeff Skalierung, so dass φ xx () = 1 Simulation mit Matlab/Simulink 13
Korrelationsfunktionen Kreuzkorrelation φ xy (k) = 1 N N n=1 x n+k y n Berechnung in Matlab: cxy = xcorr (x, y, options ) x, y: Signalvektoren, Länge jeweils N, bei Bedarf wird der kürzere Vektor mit aufgefüllt cxy: Ergebnisvektor der Länge 2N 1 Simulation mit Matlab/Simulink 14
Korrelationsfunktionen Signallaufzeit von 4 verschieden codierten Sendern mittels Kreuzkorrelation:.4.3.2 Kreuzkorrelation S1, 1ms S2, 2 ms S3, 15ms S4, 4 ms.1.1.5.1.15.2.25.3.35.4.45.5 Laufzeit [s] Simulation mit Matlab/Simulink 15
Analyse im Frequenzbereich Amplitudenspektren Leistungsdichtespektren (PSD) Fensterfunktionen Averaging Simulation mit Matlab/Simulink 16
Spektralanalyse Aufgabenstellung Bestimmung der Frequenzanteile in einem Signal ˆ= Korrelation mit Frequenzen F k Anwendung Bestimmung der Übertragungsfunktion Bestimmung des Rauschabstands (SNR) Anlagenüberwachung (frühzeitige Fehlererkennung) Simulation mit Matlab/Simulink 17
Diskrete Fouriertransformation DFT Kontinuierliche FT: X(jω) = x(t) exp ( jωt) dt Zeitdiskret (N Messwerte, T s Abtastzeit): X d (jω k ) = N 1 n= x(nt s ) exp ( jω k nt s ) = N 1 n= x(nt s ) cos(ω k nt s ) }{{} Realteil x(nt s ) j sin(ω k nt s ) }{{} Imaginärteil Simulation mit Matlab/Simulink 18
Diskrete Fouriertransformation DFT Nur für diskrete Frequenzen definiert: ω k = k ω = 2π k F Frequenzauflösung = 1 / Messdauer: F = 1/(NT s ) Maximal messbare Frequenz = 1/2 Abtastfrequenz: F max = F s /2 = 1/(2T s ) Fourierkoeffizienten sind eindeutig und (konjugiert komplex) spiegelbildlich um N/2 bzw. F s /2 Simulation mit Matlab/Simulink 19
Diskrete Fouriertransformation DFT Reelle Fourierreihe: x(t) = a + K k=1 (a k cos(kω k t) + b k sin(kω k t)) Reelle Fourierkoeffizienten: a k = 2 N Re {X d(k)} k = 1... N/2 b k = 2 N Im {X d(k)} k = 1... N/2 a = 1 N Re {X d()} k = Simulation mit Matlab/Simulink 2
Diskrete Fouriertransformation DFT Matlab Befehl X = fft (x) x: Signalvektor der Länge N X: Frequenzgang der Länge N (komplex, symmetrisch) Achtung: Formel a, a 1, a 2... entspricht Matlab Indizes 1, 2, 3...! Simulation mit Matlab/Simulink 21
Diskrete Fouriertransformation DFT 15 1 Signal 1 9 8 Spektrum DFT Ideal Hamming 5 7 6 5 4 5 3 1 2 1 15.1.2.3.4.5 Zeit [s] 1 2 3 4 5 Frequenz [Hz] Simulation mit Matlab/Simulink 22
Leakage Effekt Zeitbereich Frequenzbereich (Prinzip) 1.5 8 Hz 1 sinc k F.5.5 1.2.4.6.8 2 4 6 8 1 12 14 16 18 2 Zeitbereich Frequenzbereich (Prinzip) 1.5 11 Hz 1 sinc k F.5.5 1.2.4.6.8 2 4 6 8 1 12 14 16 18 2 Simulation mit Matlab/Simulink 23
Leakage Effekt Messzeitfenster Spaltfunktion Im allgemeinen Fall (F k F ) wird Spaltfunktion nicht in Nullstellen (k F ) abgetastet Leakage Verbesserung durch Gewichtung der Messwerte mit Fensterfunktionen: Vorteil: niedrigere Nebenzipfel verringertes Leakage Nachteil: breiterer Hauptzipfel schlechtere Frequenztrennung Simulation mit Matlab/Simulink 24
Fensterfunktionen Matlab Befehle Ohne Fensterung: Rechteck rectwin(n), alt: boxcar(n) Fenster in Reihenfolge zunehmender Glättung triang(n) hamming(n) hann(n) blackman(n) Dreieck Hamming Hann Blackman 1.5 Dreieck Hamming Hann Blackman 5 1 15 2 Matlab Aufruf: X = fft (hamming(length(x)).* x) Matlab Tool: wintool Simulation mit Matlab/Simulink 25
Fensterfunktionen Simulation mit Matlab/Simulink 26
Leistungsdichtespektren Autoleistungsdichtespektrum Φ xx (k F ) = 1 N 2 F X d (2π k F ) 2 mit F = F s /N = 1/(NT s ) Amplitudenspektrum Leistungs(dichte)spektrum Amplitude A U Leistung P U 2 DF T / N Einheit db DF T / N 2 / F Einheit db/hz, W/Hz 2 db ˆ= 1 U 2 db ˆ= (1 U) 2 = 1 P Simulation mit Matlab/Simulink 27
Leistungsdichtespektren Matlab-Befehle (1) psd veraltet periodogram sehr anfällig für Rauschen pwelch mit Fensterung: reduziertes Leakage ohne Fensterung: quantitative Analyse Averaging (DFT stückweise, Mittelung) überlappende Sequenzen (geringer Datenverlust) Simulation mit Matlab/Simulink 28
Leistungsdichtespektren Matlab-Befehle (2) [Pxx, Fxx] = pwelch (x, fenster, Nover, Nfft, Fs) plot (Fxx, 1 * log1 (Pxx)) x: Signalvektor der Länge N fenster: Länge für Hamming (Standard), sonst Vektor Nover: Überlappung, Standard = Nfft/2 Nfft: Länge einer Sequenz N Fs: Abtastfrequenz Pxx: Fxx: Autoleistungsdichtespektrum (Schätzwert) Zugehöriger Frequenzvektor Simulation mit Matlab/Simulink 29
Leistungsdichtespektren 2 15 Spektrum mit "pwelch" Spektrum Ideal Rauschen Leistungsdichte [db/hz] 1 5 5 1 5 1 15 2 25 3 35 4 45 5 Frequenz [Hz] Simulation mit Matlab/Simulink 3
Leistungsdichtespektren Skalierung bei pwelch (x, rectwin(nfft), [], Nfft, Fs) Signalanteil Zeitbereich Frequenzbereich Gleichanteil x = C X() = C 2 / F Sinus / Cosinus x = A sin (...) X(f) = A 2 / 2 / F Rauschen x normalverteilt X = σ 2 / (F s /2) Beispiel für F = F s /Nfft = 1 Hz/25 =.4 Hz: x = 2 +... 1 ˆ= 1 db/hz + 8 * sin (2*pi*8*t)... 8 ˆ= 19 db/hz + 5 * randn (1, n).5 ˆ= 3 db/hz Simulation mit Matlab/Simulink 31
Spektralanalyse zeitvariable Signale x = 5 + 8 * sin (2*pi*(8+t).*t) + t.* cos (2*pi*33*t); [S, F, T, P] = spectrogram (x, 64, [], 64, Fs); pcolor (T, F, 1*log1(P)) 5 Spektraler Verlauf mit spectrogram 4 Frequenz [Hz] 3 2 1 5 1 15 2 Zeit [s] Simulation mit Matlab/Simulink 32
Extraktion von Signalanteilen Digitale FIR- und IIR-Filter Analoge Filter Herleitung Digitaler Filter sptool Simulation mit Matlab/Simulink 33
Digitale Filter Aufgabenstellung Verstärkung des Nutzsignals Unterdrückung von Störsignalanteilen Allgemeine Gleichung (Matlab-Indizes!) H(z) = y(z) x(z) = B(z) A(z) = b 1 + b 2 z 1 +... + b n+1 z n a 1 + a 2 z 1 +... + a m+1 z m a 1 y k = b 1 x k + b 2 x k 1 +... + b n+1 x k n a 2 y k 1... a m+1 y k m Simulation mit Matlab/Simulink 34
FIR Filter Der Ausgangswert wird ausschließlich aus Eingangswerten x k... x k m berechnet: H(z) = y(z) x(z) = B(z) = b 1 + b 2 z 1 +... + b n+1 z n y k = b 1 x k + b 2 x k 1 +... + b n+1 x k n FIR Filter sind nicht rekursiv und stets stabil. Die Impulsantwort besitzt eine endliche Länge (Finite Impulse Response). Simulation mit Matlab/Simulink 35
FIR Filter Matlab Befehle Filterentwurf: B = fir1 (ordnung, Fg) B: Filterkoeffizienten, optimiert auf idealen Tiefpass Fg: Grenzfrequenz normiert auf F s /2 = F max Übertragungsfunktion: [H, F] = freqz (B, 1, N, Fs) N: Anzahl der Datenpunkte für Ausgabe H: Übertragungsfunktion F: zugehöriger Frequenzvektor Simulation mit Matlab/Simulink 36
FIR Filter Endliche Zahl an Koeffizienten Spaltfunktion Überlagerte Fensterfunktion reduziert Welligkeit.3.2 Filter Koeffizienten 1.2 1.8.6 Filter Übertragungsfunktion Ideal FIR FIR + Hamming.1.4.2.1 2 1 1 2 Nummer der Koeffizienten.2 1 2 3 4 5 Frequenz [Hz] Simulation mit Matlab/Simulink 37
FIR Filter Matlab Befehle Tiefpass, Durchlassbereich <.4 F max fir1 (2,.4) Hochpass, Durchlassbereich >.4 F max fir1 (2,.4, high ) Bandpass, Durchlassbereich.2....4 F max fir1 (2, [.2.4]) Bandsperre, Sperrbereich.2....4 F max fir1 (2, [.2.4], stop ) Simulation mit Matlab/Simulink 38
FIR Filter Filterung (kausal): x_fir = filter (B, 1, x) Filterung (doppelt): x_fir = filtfilt (B, 1, x) (ohne Phasenverschiebung, nur off-line möglich) 3 2 Diskrete Filterung mit FIR 2. Ordnung ungefiltert FIR filter FIR filtfilt 1 1.5.1.15.2.25.3.35.4.45.5 Zeit [s] Simulation mit Matlab/Simulink 39
IIR Filter Der Ausgangswert wird aus Eingangswerten und vergangenen Ausgangswerten berechnet. a 1 y k = b 1 x k + b 2 x k 1 +... + b n+1 x k n a 2 y k 1... a m+1 y k m IIR Filter sind rekursiv (d.h. a 2... a m+1 ) und kann auch instabil sein. Die Impulsantwort besitzt eine unendliche Länge (Infinite Impulse Response). Simulation mit Matlab/Simulink 4
IIR Filter Matlab Befehle (Filter-Typen) Butterworth-TP, Fg: Grenzfrequenz normiert [B, A] = butter (ordnung, Fg [, typ]) Tschebyscheff, Rp: Welligkeit im Durchlassbereich [db] [B, A] = cheby1 (ordnung, Rp, Fg) Tschebyscheff, Rs: Dämpfung im Sperrbereich [db] [B, A] = cheby2 (ordnung, Rs, Fg) Elliptisch (Cauer) [B, A] = ellip (ordnung, Rp, Rs, Fg) Simulation mit Matlab/Simulink 41
IIR Filter Matlab Befehle (Rückgabewerte) Zähler und Nennerpolynom [B, A] = butter (ordnung, Fg) Nullstellen, Pole und Verstärkung [Z, P, K] = butter (ordnung, Fg) Zustandsdarstellung [A, B, C, D] = butter (ordnung, Fg) Simulation mit Matlab/Simulink 42
IIR Filter Filterung (kausal): x_iir = filter (B, A, x) Filterung (doppelt): x_iir = filtfilt (B, A, x) Übertragungsfunktion: [H, F] = freqz (B, A, N, Fs) 3 2 Diskrete Filterung mit IIR 4. Ordnung ungefiltert IIR filter IIR filtfilt 1 1.5.1.15.2.25.3.35.4.45.5 Zeit [s] Simulation mit Matlab/Simulink 43
Digitale Filter Beliebiger Frequenzgang Matlab Befehle FIR: fir2 (ordnung, frequenzen, amplituden) IIR: yulewalk (ordnung, frequenzen, amplituden) 1.2 1 FIR Filterdesign mit fir2 2. Ordnung Sollverlauf fir2 1.2 1 IIR Filterdesign mit yulewalk 4. Ordnung Sollverlauf yulewalk Amplitude.8.6.4 Amplitude.8.6.4.2.2 1 2 3 4 5 Frequenz [Hz] 1 2 3 4 5 Frequenz [Hz] Simulation mit Matlab/Simulink 44
Digitale Filter Vergleich FIR-Filter IIR-Filter immer stabil numerisch unkritisch Gruppenlaufzeit konstant klassische Filtertypen geringe Ordnung geringer Rechenaufwand Hinweise Fg immer auf halbe Abtastfrequenz F s /2 normiert. Grenzfrequenz Fg entspricht meist nicht 3dB. Auslegung immer anhand Frequenzgang prüfen! Simulation mit Matlab/Simulink 45
Analoge Filter Anwendung Verwendung in quasikontinuierlichen Simulationen Grenzfrequenz wg in [rad/s] Matlab Befehle [B, A] = besself (ordnung, wg) [B, A] = butter [B, A] = cheby1 [B, A] = cheby2 [B, A] = ellip (ordnung, wg, s ) (ordnung, Rp, wg, s ) (ordnung, Rs, wg, s ) (ordnung, Rp, Rs, wg, s ) Simulation mit Matlab/Simulink 46
Analoge Filter Frequenzgang plotten [B, A] = butter (4, 1, s ); [H, W] = freqs (B, A); loglog (W, abs (H)); % Butterworth-TP, analog % Frequenzgang berechnen % Frequenzgang ausgeben Bessel Butterworth Tschebyscheff Typ 1 Elliptisch (Cauer) Amplitude [db] 2 4 2 4 2 4 2 4.1 1 1 Frequenz normiert.1 1 1 Frequenz normiert.1 1 1 Frequenz normiert.1 1 1 Frequenz normiert Simulation mit Matlab/Simulink 47
Digitale Filter Herleitung Berechnung Auslegung IIR-Filter als analoge Filter Umrechnung mit der Bilinearen Transformation: s = 2 F s z 1 z + 1 Abbildung periodisch und verzerrt: Abbildung Frequenz, F s,... Abbildung Frequenz F s /2, 3F s /2,... Simulation mit Matlab/Simulink 48
Digitale Filter Herleitung Periodizität Aliasing für Frequenzen > F s /2 Immer analogen Tiefpass vorschalten! Periodischer Frequenzgang digitaler Filter Amplitude [db] 2 4 6 8 analog digital Fg Fs/2 1 2 3 4 5 1 2 Frequenz [Hz] Simulation mit Matlab/Simulink 49
Digitale Filter Herleitung Verzerrung Frequenz F g wird auf kleinere Frequenz abgebildet. Pre-Warping vor Bilinearer Transformation! Bei IIR-Filterfunktionen bereits berücksichtigt. Pre Warping bei digitalen Filtern Amplitude [db] 1 2 3 analog digital (bilinear) analog (Pre Warping) digital (Pre Warping) Fg 15 2 25 3 35 4 45 5 Frequenz [Hz] Simulation mit Matlab/Simulink 5
sptool Signal Browser & Spectrum Viewer Simulation mit Matlab/Simulink 51
sptool Filter Design and Analysis Tool Simulation mit Matlab/Simulink 52