16.07.2013 Aufrufe

Signal Processing Toolbox - EAL Lehrstuhl für Elektrische ...

Signal Processing Toolbox - EAL Lehrstuhl für Elektrische ...

Signal Processing Toolbox - EAL Lehrstuhl für Elektrische ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

MATLAB <strong>Signal</strong> <strong>Processing</strong> <strong>Toolbox</strong><br />

0 <strong>Signal</strong> <strong>Processing</strong> <strong>Toolbox</strong><br />

1 Was ist Digitale <strong>Signal</strong>verarbeitung?<br />

2 Inhalt<br />

3 Aufbereitung der Messdaten<br />

4 Interpolation<br />

6 Approximation<br />

7 Interpolation und Approximation<br />

8 Anpassung der Abtastrate<br />

11 Analyse im Zeitbereich<br />

12 Korrelationsfunktionen<br />

16 Analyse im Frequenzbereich<br />

17 Spektralanalyse<br />

18 Diskrete Fouriertransformation DFT<br />

23 Leakage–Effekt<br />

25 Fensterfunktionenn<br />

27 Leistungsdichtespektren<br />

32 Spektralanalyse – zeitvariable <strong>Signal</strong>e<br />

33 Extraktion von <strong>Signal</strong>anteilen<br />

34 Digitale Filter<br />

35 FIR–Filter<br />

40 IIR–Filter<br />

44 Digitale Filter – Beliebiger Frequenzgang<br />

45 Digitale Filter – Vergleich<br />

46 Analoge Filter<br />

48 Digitale Filter – Herleitung<br />

51 sptool<br />

Inhaltsverzeichnis<br />

<strong>Lehrstuhl</strong> <strong>für</strong> <strong>Elektrische</strong> Antriebssysteme und Leistungselektronik<br />

Simulation mit Matlab/Simulink


MATLAB <strong>Signal</strong> <strong>Processing</strong> <strong>Toolbox</strong><br />

MATLAB<br />

<strong>Signal</strong> <strong>Processing</strong> <strong>Toolbox</strong><br />

<strong>Lehrstuhl</strong> <strong>für</strong> <strong>Elektrische</strong> Antriebssysteme und Leistungselektronik<br />

Simulation mit Matlab/Simulink


MATLAB <strong>Signal</strong> <strong>Processing</strong> <strong>Toolbox</strong><br />

Was ist Digitale <strong>Signal</strong>verarbeitung?<br />

Verarbeitung zeitdiskret abgetasteter <strong>Signal</strong>e mit<br />

• Methoden zur Aufbereitung von Messdaten<br />

• Analysen im Zeitbereich<br />

• Analysen im Frequenzbereich<br />

• Methoden zur Extraktion von <strong>Signal</strong>anteilen<br />

<strong>Lehrstuhl</strong> <strong>für</strong> <strong>Elektrische</strong> Antriebssysteme und Leistungselektronik<br />

Simulation mit Matlab/Simulink 1


MATLAB <strong>Signal</strong> <strong>Processing</strong> <strong>Toolbox</strong><br />

Inhalt<br />

Schwerpunkte der heutigen Vorlesung:<br />

• Interpolation, Approximation und Abtastung<br />

• Korrelationsfunktionen<br />

• Spektralanalyse<br />

• Filter −→ Digital und Analog<br />

<strong>Lehrstuhl</strong> <strong>für</strong> <strong>Elektrische</strong> Antriebssysteme und Leistungselektronik<br />

Simulation mit Matlab/Simulink 2


MATLAB <strong>Signal</strong> <strong>Processing</strong> <strong>Toolbox</strong><br />

Aufbereitung der Messdaten<br />

Interpolation<br />

Approximation<br />

Änderung der Abtastrate<br />

<strong>Lehrstuhl</strong> <strong>für</strong> <strong>Elektrische</strong> Antriebssysteme und Leistungselektronik<br />

Simulation mit Matlab/Simulink 3


MATLAB <strong>Signal</strong> <strong>Processing</strong> <strong>Toolbox</strong><br />

Interpolation<br />

Anwendung<br />

• Funktionswertberechnung zwischen Abtastpunkten<br />

• Grafische Darstellung einer abgetasteten Kurve<br />

Verfahren<br />

• linear<br />

• kubisch<br />

• Splines<br />

<strong>Lehrstuhl</strong> <strong>für</strong> <strong>Elektrische</strong> Antriebssysteme und Leistungselektronik<br />

Simulation mit Matlab/Simulink 4


MATLAB <strong>Signal</strong> <strong>Processing</strong> <strong>Toolbox</strong><br />

Interpolation<br />

Matlab–Befehle<br />

• Interpolation (methode = linear, cubic, spline):<br />

interp1 (x_koord, y_werte, x_auswertung, ’methode’)<br />

• Mehrdimensionale Interpolation:<br />

interp2, interp3, interpn<br />

• Zweidimensionale Interpolation unsortierter Daten:<br />

griddata (x_koord, y_koord, z_werte, ...<br />

x_auswertung, y_auswertung, ’methode’)<br />

<strong>Lehrstuhl</strong> <strong>für</strong> <strong>Elektrische</strong> Antriebssysteme und Leistungselektronik<br />

Simulation mit Matlab/Simulink 5


MATLAB <strong>Signal</strong> <strong>Processing</strong> <strong>Toolbox</strong><br />

Approximation<br />

Anwendung<br />

• Generieren von Kennlinien aus verrauschten Daten<br />

• Beschreibung von Messdaten durch Ausgleichspolynom<br />

Matlab–Befehle<br />

• polynom = polyfit (x_koord, y_werte, ordnung)<br />

• y_auswertung = polyval (polynom, x_auswertung)<br />

<strong>Lehrstuhl</strong> <strong>für</strong> <strong>Elektrische</strong> Antriebssysteme und Leistungselektronik<br />

Simulation mit Matlab/Simulink 6


MATLAB <strong>Signal</strong> <strong>Processing</strong> <strong>Toolbox</strong><br />

Interpolation und Approximation<br />

Vergleich interp1 mit Basic Fitting Tool<br />

• ’spline’, ’cubic’ −→ spline interp., shape-preserving<br />

• polyfit −→ linear, cubic etc.<br />

<strong>Lehrstuhl</strong> <strong>für</strong> <strong>Elektrische</strong> Antriebssysteme und Leistungselektronik<br />

Simulation mit Matlab/Simulink 7


MATLAB <strong>Signal</strong> <strong>Processing</strong> <strong>Toolbox</strong><br />

Anpassung der Abtastrate<br />

Anwendung<br />

• Messdaten liegen mit abweichender Abtastfrequenz vor<br />

• Kompatibilität zwischen unterschiedlichen<br />

Aufzeichnungsstandards (z.B. Digital-Audio)<br />

• Einfache (verlustbehaftete) Datenkompression<br />

<strong>Lehrstuhl</strong> <strong>für</strong> <strong>Elektrische</strong> Antriebssysteme und Leistungselektronik<br />

Simulation mit Matlab/Simulink 8


Ohne Filterung:<br />

MATLAB <strong>Signal</strong> <strong>Processing</strong> <strong>Toolbox</strong><br />

Anpassung der Abtastrate<br />

Matlab–Befehle<br />

• downsample (x, faktor) −→ Zwischenwerte entfallen<br />

• upsample (x, faktor) −→ Auffüllen mit 0<br />

Mit Filterung:<br />

• decimate (x, faktor [, ordnung, ’fir’])<br />

• interp (x, faktor)<br />

• resample (x, zaehler, nenner)<br />

<strong>Lehrstuhl</strong> <strong>für</strong> <strong>Elektrische</strong> Antriebssysteme und Leistungselektronik<br />

Simulation mit Matlab/Simulink 9


5<br />

0<br />

MATLAB <strong>Signal</strong> <strong>Processing</strong> <strong>Toolbox</strong><br />

−5<br />

0 20 40<br />

5<br />

0<br />

Original x<br />

Original x<br />

−5<br />

0 20 40<br />

Anpassung der Abtastrate<br />

5<br />

0<br />

y = downsample (x, 4)<br />

−5<br />

0 5 10<br />

5<br />

0<br />

y = decimate (x, 4, 8, ’fir’)<br />

−5<br />

0 5 10<br />

5<br />

0<br />

z = upsample (y, 4)<br />

−5<br />

0 20 40<br />

5<br />

0<br />

z = interp (y, 4)<br />

−5<br />

0 20 40<br />

<strong>Lehrstuhl</strong> <strong>für</strong> <strong>Elektrische</strong> Antriebssysteme und Leistungselektronik<br />

Simulation mit Matlab/Simulink 10


MATLAB <strong>Signal</strong> <strong>Processing</strong> <strong>Toolbox</strong><br />

Analyse im Zeitbereich<br />

Autokorrelation<br />

Kreuzkorrelation<br />

<strong>Lehrstuhl</strong> <strong>für</strong> <strong>Elektrische</strong> Antriebssysteme und Leistungselektronik<br />

Simulation mit Matlab/Simulink 11


MATLAB <strong>Signal</strong> <strong>Processing</strong> <strong>Toolbox</strong><br />

Korrelationsfunktionen<br />

Aufgabenstellung<br />

Korrelationsfunktion = Maß <strong>für</strong> Ähnlichkeit<br />

• zweier <strong>Signal</strong>e −→ Kreuzkorrelation<br />

• eines <strong>Signal</strong>s mit sich selbst −→ Autokorrelation<br />

Anwendung<br />

• Erkennung und Ausblendung von Echos<br />

• Laufzeitmessung zur Ortung einer <strong>Signal</strong>quelle<br />

• Unterscheidung verschieden codierter Sender<br />

<strong>Lehrstuhl</strong> <strong>für</strong> <strong>Elektrische</strong> Antriebssysteme und Leistungselektronik<br />

Simulation mit Matlab/Simulink 12


MATLAB <strong>Signal</strong> <strong>Processing</strong> <strong>Toolbox</strong><br />

Korrelationsfunktionen<br />

Autokorrelation<br />

φxx(k) = 1<br />

N<br />

cxx = xcorr (x, ’options’)<br />

N<br />

n=1<br />

x n+k · xn<br />

Berechnung in Matlab:<br />

x: <strong>Signal</strong>vektor der Länge N<br />

cxx: Ergebnisvektor der Länge 2N − 1<br />

’options’ = ’none’ −→ Standard, ohne Skalierung 1/N<br />

= ’biased’ −→ Skalierung wie in Formel<br />

= ’coeff ’ −→ Skalierung, so dass φxx(0) = 1<br />

<strong>Lehrstuhl</strong> <strong>für</strong> <strong>Elektrische</strong> Antriebssysteme und Leistungselektronik<br />

Simulation mit Matlab/Simulink 13


MATLAB <strong>Signal</strong> <strong>Processing</strong> <strong>Toolbox</strong><br />

Korrelationsfunktionen<br />

Kreuzkorrelation<br />

φxy(k) = 1<br />

N<br />

N<br />

n=1<br />

x n+k · yn<br />

Berechnung in Matlab:<br />

cxy = xcorr (x, y, ’options’)<br />

x, y: <strong>Signal</strong>vektoren, Länge jeweils ≤ N,<br />

bei Bedarf wird der kürzere Vektor mit 0 aufgefüllt<br />

cxy: Ergebnisvektor der Länge 2N − 1<br />

<strong>Lehrstuhl</strong> <strong>für</strong> <strong>Elektrische</strong> Antriebssysteme und Leistungselektronik<br />

Simulation mit Matlab/Simulink 14


MATLAB <strong>Signal</strong> <strong>Processing</strong> <strong>Toolbox</strong><br />

Korrelationsfunktionen<br />

<strong>Signal</strong>laufzeit von 4 verschieden codierten Sendern<br />

mittels Kreuzkorrelation:<br />

0.4<br />

0.3<br />

0.2<br />

0.1<br />

0<br />

Kreuzkorrelation<br />

S1, 100ms<br />

S2, 200 ms<br />

S3, 150ms<br />

S4, 400 ms<br />

−0.1<br />

0 0.05 0.1 0.15 0.2 0.25<br />

Laufzeit [s]<br />

0.3 0.35 0.4 0.45 0.5<br />

<strong>Lehrstuhl</strong> <strong>für</strong> <strong>Elektrische</strong> Antriebssysteme und Leistungselektronik<br />

Simulation mit Matlab/Simulink 15


MATLAB <strong>Signal</strong> <strong>Processing</strong> <strong>Toolbox</strong><br />

Analyse im Frequenzbereich<br />

Amplitudenspektren<br />

Leistungsdichtespektren (PSD)<br />

Fensterfunktionen<br />

Averaging<br />

<strong>Lehrstuhl</strong> <strong>für</strong> <strong>Elektrische</strong> Antriebssysteme und Leistungselektronik<br />

Simulation mit Matlab/Simulink 16


MATLAB <strong>Signal</strong> <strong>Processing</strong> <strong>Toolbox</strong><br />

Spektralanalyse<br />

Aufgabenstellung<br />

Bestimmung der Frequenzanteile in einem <strong>Signal</strong><br />

ˆ= Korrelation mit Frequenzen F k<br />

Anwendung<br />

• Bestimmung der Übertragungsfunktion<br />

• Bestimmung des Rauschabstands (SNR)<br />

• Anlagenüberwachung (frühzeitige Fehlererkennung)<br />

<strong>Lehrstuhl</strong> <strong>für</strong> <strong>Elektrische</strong> Antriebssysteme und Leistungselektronik<br />

Simulation mit Matlab/Simulink 17


MATLAB <strong>Signal</strong> <strong>Processing</strong> <strong>Toolbox</strong><br />

Diskrete Fouriertransformation DFT<br />

Kontinuierliche FT:<br />

X(jω) =<br />

∞<br />

−∞<br />

x(t) exp (−jωt) dt<br />

Zeitdiskret (N Messwerte, Ts Abtastzeit):<br />

Xd(jωk) = N−1 <br />

n=0<br />

= N−1 <br />

n=0<br />

x(nTs) exp (−jω knTs)<br />

x(nTs) cos(ω knTs)<br />

<br />

Realteil<br />

− x(nTs) j sin(ω knTs)<br />

<br />

Imaginärteil<br />

<strong>Lehrstuhl</strong> <strong>für</strong> <strong>Elektrische</strong> Antriebssysteme und Leistungselektronik<br />

Simulation mit Matlab/Simulink 18


MATLAB <strong>Signal</strong> <strong>Processing</strong> <strong>Toolbox</strong><br />

Diskrete Fouriertransformation DFT<br />

• Nur <strong>für</strong> diskrete Frequenzen definiert:<br />

ω k = k∆ω = 2π k∆F<br />

• Frequenzauflösung = 1 / Messdauer:<br />

∆F = 1/(NTs)<br />

• Maximal messbare Frequenz = 1/2 Abtastfrequenz:<br />

Fmax = Fs/2 = 1/(2Ts)<br />

• Fourierkoeffizienten sind eindeutig und<br />

(konjugiert komplex) spiegelbildlich um N/2 bzw. Fs/2<br />

<strong>Lehrstuhl</strong> <strong>für</strong> <strong>Elektrische</strong> Antriebssysteme und Leistungselektronik<br />

Simulation mit Matlab/Simulink 19


MATLAB <strong>Signal</strong> <strong>Processing</strong> <strong>Toolbox</strong><br />

Diskrete Fouriertransformation DFT<br />

Reelle Fourierreihe:<br />

x(t) = a0 + K <br />

k=1<br />

Reelle Fourierkoeffizienten:<br />

(a k cos(kω kt) + b k sin(kω kt))<br />

a k = 2<br />

N Re {X d(k)} k = 1 . . . N/2<br />

b k = − 2<br />

N Im {X d(k)} k = 1 . . . N/2<br />

a0 = 1<br />

N Re {X d(0)} k = 0<br />

<strong>Lehrstuhl</strong> <strong>für</strong> <strong>Elektrische</strong> Antriebssysteme und Leistungselektronik<br />

Simulation mit Matlab/Simulink 20


• X = fft (x)<br />

MATLAB <strong>Signal</strong> <strong>Processing</strong> <strong>Toolbox</strong><br />

Diskrete Fouriertransformation DFT<br />

Matlab–Befehl<br />

• x: <strong>Signal</strong>vektor der Länge N<br />

• X: Frequenzgang der Länge N<br />

(komplex, symmetrisch)<br />

• Achtung: Formel a0, a1, a2 . . . entspricht<br />

Matlab–Indizes 1, 2, 3 . . . !<br />

<strong>Lehrstuhl</strong> <strong>für</strong> <strong>Elektrische</strong> Antriebssysteme und Leistungselektronik<br />

Simulation mit Matlab/Simulink 21


15<br />

10<br />

5<br />

0<br />

−5<br />

−10<br />

MATLAB <strong>Signal</strong> <strong>Processing</strong> <strong>Toolbox</strong><br />

Diskrete Fouriertransformation DFT<br />

<strong>Signal</strong><br />

−15<br />

0 0.1 0.2 0.3 0.4 0.5<br />

Zeit [s]<br />

10<br />

9<br />

8<br />

7<br />

6<br />

5<br />

4<br />

3<br />

2<br />

1<br />

Spektrum<br />

DFT<br />

Ideal<br />

Hamming<br />

0<br />

0 10 20 30 40 50<br />

Frequenz [Hz]<br />

<strong>Lehrstuhl</strong> <strong>für</strong> <strong>Elektrische</strong> Antriebssysteme und Leistungselektronik<br />

Simulation mit Matlab/Simulink 22


1<br />

0.5<br />

0<br />

−0.5<br />

−1<br />

1<br />

0.5<br />

0<br />

−0.5<br />

−1<br />

MATLAB <strong>Signal</strong> <strong>Processing</strong> <strong>Toolbox</strong><br />

Zeitbereich<br />

0 0.2 0.4 0.6 0.8<br />

Zeitbereich<br />

Leakage–Effekt<br />

8 Hz<br />

11 Hz<br />

0 0.2 0.4 0.6 0.8<br />

1<br />

0.5<br />

0<br />

1<br />

0.5<br />

0<br />

Frequenzbereich (Prinzip)<br />

|sinc|<br />

k⋅ΔF<br />

0 2 4 6 8 10 12 14 16 18 20<br />

Frequenzbereich (Prinzip)<br />

|sinc|<br />

k⋅ΔF<br />

0 2 4 6 8 10 12 14 16 18 20<br />

<strong>Lehrstuhl</strong> <strong>für</strong> <strong>Elektrische</strong> Antriebssysteme und Leistungselektronik<br />

Simulation mit Matlab/Simulink 23


MATLAB <strong>Signal</strong> <strong>Processing</strong> <strong>Toolbox</strong><br />

Leakage–Effekt<br />

• Messzeitfenster ◦—• Spaltfunktion<br />

• Im allgemeinen Fall (F = k ∆F ) wird Spaltfunktion<br />

nicht in Nullstellen (k ∆F ) abgetastet −→ Leakage<br />

• Verbesserung durch Gewichtung der Messwerte mit<br />

Fensterfunktionen:<br />

– Vorteil: niedrigere ” Nebenzipfel“<br />

−→ verringertes Leakage<br />

– Nachteil: breiterer ” Hauptzipfel“<br />

−→ schlechtere Frequenztrennung<br />

<strong>Lehrstuhl</strong> <strong>für</strong> <strong>Elektrische</strong> Antriebssysteme und Leistungselektronik<br />

Simulation mit Matlab/Simulink 24


MATLAB <strong>Signal</strong> <strong>Processing</strong> <strong>Toolbox</strong><br />

Fensterfunktionen<br />

Matlab–Befehle<br />

• Ohne Fensterung: Rechteck rectwin(n), alt: boxcar(n)<br />

• Fenster in Reihenfolge zunehmender Glättung ↓<br />

triang(n) Dreieck<br />

hamming(n) Hamming<br />

hann(n) Hann<br />

blackman(n) Blackman<br />

1<br />

0.5<br />

0<br />

Dreieck<br />

Hamming<br />

Hann<br />

Blackman<br />

0 5 10 15 20<br />

• Matlab–Aufruf: X = fft (hamming(length(x)) .* x)<br />

• Matlab–Tool: wintool<br />

<strong>Lehrstuhl</strong> <strong>für</strong> <strong>Elektrische</strong> Antriebssysteme und Leistungselektronik<br />

Simulation mit Matlab/Simulink 25


MATLAB <strong>Signal</strong> <strong>Processing</strong> <strong>Toolbox</strong><br />

Fensterfunktionen<br />

<strong>Lehrstuhl</strong> <strong>für</strong> <strong>Elektrische</strong> Antriebssysteme und Leistungselektronik<br />

Simulation mit Matlab/Simulink 26


MATLAB <strong>Signal</strong> <strong>Processing</strong> <strong>Toolbox</strong><br />

Leistungsdichtespektren<br />

Autoleistungsdichtespektrum<br />

Φxx(k∆F ) =<br />

1<br />

N 2 ∆F |X d (2π k∆F )| 2<br />

mit ∆F = Fs/N = 1/(NTs)<br />

Amplitudenspektrum ←→ Leistungs(dichte)spektrum<br />

Amplitude A ∼ U Leistung P ∼ U 2<br />

DF T / N |DF T / N| 2 / ∆F<br />

Einheit dB Einheit dB/Hz, W/Hz<br />

20 dB ˆ= 10 · U 20 dB ˆ= (10 · U) 2 = 100 · P<br />

<strong>Lehrstuhl</strong> <strong>für</strong> <strong>Elektrische</strong> Antriebssysteme und Leistungselektronik<br />

Simulation mit Matlab/Simulink 27


MATLAB <strong>Signal</strong> <strong>Processing</strong> <strong>Toolbox</strong><br />

psd −→ veraltet<br />

Leistungsdichtespektren<br />

Matlab-Befehle (1)<br />

periodogram −→ sehr anfällig <strong>für</strong> Rauschen<br />

pwelch −→ mit Fensterung: reduziertes Leakage<br />

−→ ohne Fensterung: quantitative Analyse<br />

• Averaging (DFT stückweise, Mittelung)<br />

• überlappende Sequenzen (geringer Datenverlust)<br />

<strong>Lehrstuhl</strong> <strong>für</strong> <strong>Elektrische</strong> Antriebssysteme und Leistungselektronik<br />

Simulation mit Matlab/Simulink 28


MATLAB <strong>Signal</strong> <strong>Processing</strong> <strong>Toolbox</strong><br />

Leistungsdichtespektren<br />

Matlab-Befehle (2)<br />

[Pxx, Fxx] = pwelch (x, fenster, Nover, Nfft, Fs)<br />

plot (Fxx, 10 * log10 (Pxx))<br />

x: <strong>Signal</strong>vektor der Länge N<br />

fenster: Länge <strong>für</strong> Hamming (Standard), sonst Vektor<br />

Nover: Überlappung, Standard = Nfft/2<br />

Nfft: Länge einer Sequenz ≤ N<br />

Fs: Abtastfrequenz<br />

Pxx: Autoleistungsdichtespektrum (Schätzwert)<br />

Fxx: Zugehöriger Frequenzvektor<br />

<strong>Lehrstuhl</strong> <strong>für</strong> <strong>Elektrische</strong> Antriebssysteme und Leistungselektronik<br />

Simulation mit Matlab/Simulink 29


Leistungsdichte [dB/Hz]<br />

20<br />

15<br />

10<br />

5<br />

0<br />

−5<br />

MATLAB <strong>Signal</strong> <strong>Processing</strong> <strong>Toolbox</strong><br />

Leistungsdichtespektren<br />

Spektrum mit "pwelch"<br />

Spektrum<br />

Ideal<br />

Rauschen<br />

−10<br />

0 5 10 15 20 25<br />

Frequenz [Hz]<br />

30 35 40 45 50<br />

<strong>Lehrstuhl</strong> <strong>für</strong> <strong>Elektrische</strong> Antriebssysteme und Leistungselektronik<br />

Simulation mit Matlab/Simulink 30


MATLAB <strong>Signal</strong> <strong>Processing</strong> <strong>Toolbox</strong><br />

Leistungsdichtespektren<br />

Skalierung bei pwelch (x, rectwin(Nfft), [], Nfft, Fs)<br />

<strong>Signal</strong>anteil Zeitbereich ←→ Frequenzbereich<br />

Gleichanteil x = C X(0) = C 2 /∆F<br />

Sinus / Cosinus x = A · sin (. . .) X(f) = A 2 / 2 /∆F<br />

Rauschen x normalverteilt X = σ 2 / (Fs/2)<br />

Beispiel <strong>für</strong> ∆F = Fs/Nfft = 100 Hz/250 = 0.4 Hz:<br />

x = 2 + ... 10 ˆ= 10 dB/Hz<br />

+ 8 * sin (2*pi*8*t) ... 80 ˆ= 19 dB/Hz<br />

+ 5 * randn (1, n) 0.5 ˆ= − 3 dB/Hz<br />

<strong>Lehrstuhl</strong> <strong>für</strong> <strong>Elektrische</strong> Antriebssysteme und Leistungselektronik<br />

Simulation mit Matlab/Simulink 31


MATLAB <strong>Signal</strong> <strong>Processing</strong> <strong>Toolbox</strong><br />

Spektralanalyse – zeitvariable <strong>Signal</strong>e<br />

x = 5 + 8 * sin (2*pi*(8+t).*t) + t .* cos (2*pi*33*t);<br />

[S, F, T, P] = spectrogram (x, 64, [], 64, Fs);<br />

pcolor (T, F, 10*log10(P))<br />

Frequenz [Hz]<br />

50<br />

40<br />

30<br />

20<br />

10<br />

0<br />

Spektraler Verlauf mit spectrogram<br />

5 10 15 20<br />

Zeit [s]<br />

<strong>Lehrstuhl</strong> <strong>für</strong> <strong>Elektrische</strong> Antriebssysteme und Leistungselektronik<br />

Simulation mit Matlab/Simulink 32


MATLAB <strong>Signal</strong> <strong>Processing</strong> <strong>Toolbox</strong><br />

Extraktion von <strong>Signal</strong>anteilen<br />

Digitale FIR- und IIR-Filter<br />

Analoge Filter<br />

Herleitung Digitaler Filter<br />

sptool<br />

<strong>Lehrstuhl</strong> <strong>für</strong> <strong>Elektrische</strong> Antriebssysteme und Leistungselektronik<br />

Simulation mit Matlab/Simulink 33


MATLAB <strong>Signal</strong> <strong>Processing</strong> <strong>Toolbox</strong><br />

Digitale Filter<br />

Aufgabenstellung<br />

• Verstärkung des Nutzsignals<br />

• Unterdrückung von Störsignalanteilen<br />

H(z) = y(z)<br />

x(z)<br />

Allgemeine Gleichung (Matlab-Indizes!)<br />

= B(z)<br />

A(z) = b1 + b2 z −1 + . . . + b n+1 z −n<br />

a1 + a2 z −1 + . . . + a m+1 z −m<br />

a1 y k = b1 x k + b2 x k−1 + . . . + b n+1 x k−n<br />

− a2 y k−1 − . . . − a m+1 y k−m<br />

<strong>Lehrstuhl</strong> <strong>für</strong> <strong>Elektrische</strong> Antriebssysteme und Leistungselektronik<br />

Simulation mit Matlab/Simulink 34


MATLAB <strong>Signal</strong> <strong>Processing</strong> <strong>Toolbox</strong><br />

FIR–Filter<br />

• Der Ausgangswert wird ausschließlich aus<br />

Eingangswerten x k . . . x k−m berechnet:<br />

H(z) = y(z)<br />

x(z) = B(z) = b1 + b2 z −1 + . . . + b n+1 z −n<br />

y k = b1 x k + b2 x k−1 + . . . + b n+1 x k−n<br />

• FIR–Filter sind nicht–rekursiv und stets stabil.<br />

• Die Impulsantwort besitzt eine endliche Länge<br />

(Finite Impulse Response).<br />

<strong>Lehrstuhl</strong> <strong>für</strong> <strong>Elektrische</strong> Antriebssysteme und Leistungselektronik<br />

Simulation mit Matlab/Simulink 35


MATLAB <strong>Signal</strong> <strong>Processing</strong> <strong>Toolbox</strong><br />

FIR–Filter<br />

Matlab–Befehle<br />

• Filterentwurf: B = fir1 (ordnung, Fg)<br />

B: Filterkoeffizienten, optimiert auf idealen Tiefpass<br />

Fg: Grenzfrequenz normiert auf Fs/2 = Fmax<br />

• Übertragungsfunktion: [H, F] = freqz (B, 1, N, Fs)<br />

N: Anzahl der Datenpunkte <strong>für</strong> Ausgabe<br />

H: Übertragungsfunktion<br />

F: zugehöriger Frequenzvektor<br />

<strong>Lehrstuhl</strong> <strong>für</strong> <strong>Elektrische</strong> Antriebssysteme und Leistungselektronik<br />

Simulation mit Matlab/Simulink 36


MATLAB <strong>Signal</strong> <strong>Processing</strong> <strong>Toolbox</strong><br />

FIR–Filter<br />

• Endliche Zahl an Koeffizienten ◦—• Spaltfunktion<br />

• Überlagerte Fensterfunktion reduziert Welligkeit<br />

0.3<br />

0.2<br />

0.1<br />

0<br />

Filter−Koeffizienten<br />

−0.1<br />

−20 −10 0 10 20<br />

Nummer der Koeffizienten<br />

1.2<br />

1<br />

0.8<br />

0.6<br />

0.4<br />

0.2<br />

0<br />

Filter−Übertragungsfunktion<br />

Ideal<br />

FIR<br />

FIR + Hamming<br />

−0.2<br />

0 10 20 30 40 50<br />

Frequenz [Hz]<br />

<strong>Lehrstuhl</strong> <strong>für</strong> <strong>Elektrische</strong> Antriebssysteme und Leistungselektronik<br />

Simulation mit Matlab/Simulink 37


MATLAB <strong>Signal</strong> <strong>Processing</strong> <strong>Toolbox</strong><br />

FIR–Filter<br />

Matlab–Befehle<br />

• Tiefpass, Durchlassbereich < 0.4 · Fmax<br />

fir1 (20, 0.4)<br />

• Hochpass, Durchlassbereich > 0.4 · Fmax<br />

fir1 (20, 0.4, ’high’)<br />

• Bandpass, Durchlassbereich 0.2 ... 0.4 · Fmax<br />

fir1 (20, [0.2 0.4])<br />

• Bandsperre, Sperrbereich 0.2 ... 0.4 · Fmax<br />

fir1 (20, [0.2 0.4], ’stop’)<br />

<strong>Lehrstuhl</strong> <strong>für</strong> <strong>Elektrische</strong> Antriebssysteme und Leistungselektronik<br />

Simulation mit Matlab/Simulink 38


MATLAB <strong>Signal</strong> <strong>Processing</strong> <strong>Toolbox</strong><br />

FIR–Filter<br />

• Filterung (kausal): x_fir = filter (B, 1, x)<br />

• Filterung (doppelt): x_fir = filtfilt (B, 1, x)<br />

30<br />

20<br />

10<br />

0<br />

(ohne Phasenverschiebung, nur off-line möglich)<br />

Diskrete Filterung mit FIR 20. Ordnung<br />

ungefiltert<br />

FIR filter<br />

FIR filtfilt<br />

−10<br />

0 0.05 0.1 0.15 0.2 0.25<br />

Zeit [s]<br />

0.3 0.35 0.4 0.45 0.5<br />

<strong>Lehrstuhl</strong> <strong>für</strong> <strong>Elektrische</strong> Antriebssysteme und Leistungselektronik<br />

Simulation mit Matlab/Simulink 39


MATLAB <strong>Signal</strong> <strong>Processing</strong> <strong>Toolbox</strong><br />

IIR–Filter<br />

• Der Ausgangswert wird aus Eingangswerten und<br />

vergangenen Ausgangswerten berechnet.<br />

a1 y k = b1 x k + b2 x k−1 + . . . + b n+1 x k−n<br />

− a2 y k−1 − . . . − a m+1 y k−m<br />

• IIR–Filter sind rekursiv (d.h. a2 . . . a m+1 = 0)<br />

und kann auch instabil sein.<br />

• Die Impulsantwort besitzt eine unendliche Länge<br />

(Infinite Impulse Response).<br />

<strong>Lehrstuhl</strong> <strong>für</strong> <strong>Elektrische</strong> Antriebssysteme und Leistungselektronik<br />

Simulation mit Matlab/Simulink 40


MATLAB <strong>Signal</strong> <strong>Processing</strong> <strong>Toolbox</strong><br />

IIR–Filter<br />

Matlab–Befehle (Filter-Typen)<br />

• Butterworth-TP, Fg: Grenzfrequenz normiert<br />

[B, A] = butter (ordnung, Fg [, typ])<br />

• Tschebyscheff, Rp: Welligkeit im Durchlassbereich [dB]<br />

[B, A] = cheby1 (ordnung, Rp, Fg)<br />

• Tschebyscheff, Rs: Dämpfung im Sperrbereich [dB]<br />

[B, A] = cheby2 (ordnung, Rs, Fg)<br />

• Elliptisch (Cauer)<br />

[B, A] = ellip (ordnung, Rp, Rs, Fg)<br />

<strong>Lehrstuhl</strong> <strong>für</strong> <strong>Elektrische</strong> Antriebssysteme und Leistungselektronik<br />

Simulation mit Matlab/Simulink 41


MATLAB <strong>Signal</strong> <strong>Processing</strong> <strong>Toolbox</strong><br />

IIR–Filter<br />

Matlab–Befehle (Rückgabewerte)<br />

• Zähler– und Nennerpolynom<br />

[B, A] = butter (ordnung, Fg)<br />

• Nullstellen, Pole und Verstärkung<br />

[Z, P, K] = butter (ordnung, Fg)<br />

• Zustandsdarstellung<br />

[A, B, C, D] = butter (ordnung, Fg)<br />

<strong>Lehrstuhl</strong> <strong>für</strong> <strong>Elektrische</strong> Antriebssysteme und Leistungselektronik<br />

Simulation mit Matlab/Simulink 42


MATLAB <strong>Signal</strong> <strong>Processing</strong> <strong>Toolbox</strong><br />

IIR–Filter<br />

• Filterung (kausal): x_iir = filter (B, A, x)<br />

• Filterung (doppelt): x_iir = filtfilt (B, A, x)<br />

• Übertragungsfunktion: [H, F] = freqz (B, A, N, Fs)<br />

30<br />

20<br />

10<br />

0<br />

Diskrete Filterung mit IIR 4. Ordnung<br />

ungefiltert<br />

IIR filter<br />

IIR filtfilt<br />

−10<br />

0 0.05 0.1 0.15 0.2 0.25<br />

Zeit [s]<br />

0.3 0.35 0.4 0.45 0.5<br />

<strong>Lehrstuhl</strong> <strong>für</strong> <strong>Elektrische</strong> Antriebssysteme und Leistungselektronik<br />

Simulation mit Matlab/Simulink 43


Amplitude<br />

MATLAB <strong>Signal</strong> <strong>Processing</strong> <strong>Toolbox</strong><br />

Digitale Filter – Beliebiger Frequenzgang<br />

Matlab–Befehle<br />

• FIR: fir2 (ordnung, frequenzen, amplituden)<br />

• IIR: yulewalk (ordnung, frequenzen, amplituden)<br />

1.2<br />

1<br />

0.8<br />

0.6<br />

0.4<br />

0.2<br />

FIR−Filterdesign mit fir2 20. Ordnung<br />

Sollverlauf<br />

fir2<br />

0<br />

0 10 20 30 40 50<br />

Frequenz [Hz]<br />

Amplitude<br />

1.2<br />

1<br />

0.8<br />

0.6<br />

0.4<br />

0.2<br />

IIR−Filterdesign mit yulewalk 4. Ordnung<br />

Sollverlauf<br />

yulewalk<br />

0<br />

0 10 20 30 40 50<br />

Frequenz [Hz]<br />

<strong>Lehrstuhl</strong> <strong>für</strong> <strong>Elektrische</strong> Antriebssysteme und Leistungselektronik<br />

Simulation mit Matlab/Simulink 44


MATLAB <strong>Signal</strong> <strong>Processing</strong> <strong>Toolbox</strong><br />

Digitale Filter – Vergleich<br />

FIR-Filter ←→ IIR-Filter<br />

immer stabil klassische Filtertypen<br />

numerisch unkritisch geringe Ordnung<br />

Gruppenlaufzeit konstant geringer Rechenaufwand<br />

Hinweise<br />

• Fg immer auf halbe Abtastfrequenz Fs/2 normiert.<br />

• Grenzfrequenz Fg entspricht meist nicht −3dB.<br />

• −→ Auslegung immer anhand Frequenzgang prüfen!<br />

<strong>Lehrstuhl</strong> <strong>für</strong> <strong>Elektrische</strong> Antriebssysteme und Leistungselektronik<br />

Simulation mit Matlab/Simulink 45


MATLAB <strong>Signal</strong> <strong>Processing</strong> <strong>Toolbox</strong><br />

Analoge Filter<br />

Anwendung<br />

• Verwendung in quasikontinuierlichen Simulationen<br />

• Grenzfrequenz wg in [rad/s]<br />

Matlab–Befehle<br />

[B, A] = besself (ordnung, wg)<br />

[B, A] = butter (ordnung, wg, ’s’)<br />

[B, A] = cheby1 (ordnung, Rp, wg, ’s’)<br />

[B, A] = cheby2 (ordnung, Rs, wg, ’s’)<br />

[B, A] = ellip (ordnung, Rp, Rs, wg, ’s’)<br />

<strong>Lehrstuhl</strong> <strong>für</strong> <strong>Elektrische</strong> Antriebssysteme und Leistungselektronik<br />

Simulation mit Matlab/Simulink 46


MATLAB <strong>Signal</strong> <strong>Processing</strong> <strong>Toolbox</strong><br />

Analoge Filter<br />

Frequenzgang plotten<br />

[B, A] = butter (4, 1, ’s’); % Butterworth-TP, analog<br />

[H, W] = freqs (B, A); % Frequenzgang berechnen<br />

loglog (W, abs (H)); % Frequenzgang ausgeben<br />

Amplitude [dB]<br />

0<br />

−20<br />

−40<br />

Bessel<br />

0.1 1 10<br />

Frequenz normiert<br />

0<br />

−20<br />

−40<br />

Butterworth<br />

0.1 1 10<br />

Frequenz normiert<br />

0<br />

−20<br />

−40<br />

Tschebyscheff Typ 1<br />

0.1 1 10<br />

Frequenz normiert<br />

0<br />

−20<br />

−40<br />

Elliptisch (Cauer)<br />

0.1 1 10<br />

Frequenz normiert<br />

<strong>Lehrstuhl</strong> <strong>für</strong> <strong>Elektrische</strong> Antriebssysteme und Leistungselektronik<br />

Simulation mit Matlab/Simulink 47


MATLAB <strong>Signal</strong> <strong>Processing</strong> <strong>Toolbox</strong><br />

Digitale Filter – Herleitung<br />

Berechnung<br />

• Auslegung IIR-Filter als analoge Filter<br />

• Umrechnung mit der Bilinearen Transformation:<br />

s = 2 Fs ·<br />

z − 1<br />

z + 1<br />

• Abbildung periodisch und verzerrt:<br />

– Abbildung Frequenz 0 −→ 0, Fs, ...<br />

– Abbildung Frequenz ∞ −→ Fs/2, 3Fs/2, ...<br />

<strong>Lehrstuhl</strong> <strong>für</strong> <strong>Elektrische</strong> Antriebssysteme und Leistungselektronik<br />

Simulation mit Matlab/Simulink 48


Amplitude [dB]<br />

MATLAB <strong>Signal</strong> <strong>Processing</strong> <strong>Toolbox</strong><br />

Digitale Filter – Herleitung<br />

Periodizität<br />

• Aliasing <strong>für</strong> Frequenzen > Fs/2<br />

• −→ Immer analogen Tiefpass vorschalten!<br />

0<br />

−20<br />

−40<br />

−60<br />

−80<br />

analog<br />

digital<br />

Fg<br />

Fs/2<br />

Periodischer Frequenzgang digitaler Filter<br />

10 20 30 40 50 100 200<br />

Frequenz [Hz]<br />

<strong>Lehrstuhl</strong> <strong>für</strong> <strong>Elektrische</strong> Antriebssysteme und Leistungselektronik<br />

Simulation mit Matlab/Simulink 49


Amplitude [dB]<br />

MATLAB <strong>Signal</strong> <strong>Processing</strong> <strong>Toolbox</strong><br />

Digitale Filter – Herleitung<br />

Verzerrung<br />

• Frequenz Fg wird auf kleinere Frequenz abgebildet.<br />

• −→ Pre-Warping vor Bilinearer Transformation!<br />

• Bei IIR-Filterfunktionen bereits berücksichtigt.<br />

0<br />

−10<br />

−20<br />

−30<br />

Pre−Warping bei digitalen Filtern<br />

analog<br />

digital (bilinear)<br />

analog (Pre−Warping)<br />

digital (Pre−Warping)<br />

Fg<br />

15 20 25<br />

Frequenz [Hz]<br />

30 35 40 45 50<br />

<strong>Lehrstuhl</strong> <strong>für</strong> <strong>Elektrische</strong> Antriebssysteme und Leistungselektronik<br />

Simulation mit Matlab/Simulink 50


MATLAB <strong>Signal</strong> <strong>Processing</strong> <strong>Toolbox</strong><br />

sptool – <strong>Signal</strong> Browser & Spectrum Viewer<br />

<strong>Lehrstuhl</strong> <strong>für</strong> <strong>Elektrische</strong> Antriebssysteme und Leistungselektronik<br />

Simulation mit Matlab/Simulink 51


MATLAB <strong>Signal</strong> <strong>Processing</strong> <strong>Toolbox</strong><br />

sptool – Filter Design and Analysis Tool<br />

<strong>Lehrstuhl</strong> <strong>für</strong> <strong>Elektrische</strong> Antriebssysteme und Leistungselektronik<br />

Simulation mit Matlab/Simulink 52

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!