Signal Processing Toolbox - EAL Lehrstuhl für Elektrische ...
Signal Processing Toolbox - EAL Lehrstuhl für Elektrische ...
Signal Processing Toolbox - EAL Lehrstuhl für Elektrische ...
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