Ing Mathematik: FFT und Wavelets
Fourierreihen
Bearbeiten
bzw. in komplexer Schreibweise
Beispiel: Gegeben sei eine Rechteckfunktion. Sie soll mit der Fourierreihe angenähert werden.
Dazugehöriger Python-Code (rudimentär):
from scipy import integrate import numpy as np import matplotlib.pyplot as plt def ak(k): def y(x): if x <= -1 or x >= 2: return 0 else: return 10 * np.cos(x*k) I, err = integrate.quad(y, -np.pi, np.pi) return 1./np.pi * I def bk(k): def y(x): if x <= -1 or x >= 2: return 0 else: return 10 * np.sin(x*k) I, err = integrate.quad(y, -np.pi, np.pi) return 1./np.pi * I n = 2 a = np.zeros([n+1]) b = np.zeros([n+1]) for i in np.arange(0, n): a[i] = ak(i) b[i] = bk(i) fx = a[0]/2. x = np.arange(-1, 2.01, 0.01) for i in np.arange(1, n): fx += a[i]*np.cos(i*x) + b[i]*np.sin(i*x) plt.plot([-1,2], [10,10], color="green") plt.plot([-1,-1], [0,10], color="green") plt.plot([2,2], [0,10], color="green") plt.plot(x, fx, label="n = " + str(n)) plt.legend() plt.show()
Siehe auch Fourierreihe
Fourier-Transformation
Bearbeiten
.
Siehe auch Fourier-Transformation
DFT - Diskrete Fourier Transformation
BearbeitenDiskrete Fourier-Transformation: ;
Matrix-Vektor-Form: mit
Inverse Diskrete Fourier-Transformation, iDFT: für
iDFT in Matrix-Vektor-Form: mit
Siehe auch Diskrete Fourier-Transformation
FFT - Fast Fourier Transformation
BearbeitenEine effizientere Methode ist die FFT. Sie verwendet die Divide-and-Conquer-Methode. Zu diesem Verfahren gibt es vorgefertigte SciPy-Funktionen. Siehe z.B. [1]
Python-Code: FFT und Rücktransformation
import numpy as np from scipy.fftpack import fft, ifft y = np.array([1., 0.5, 2.5, 0.5, 3.5, 2.5]) u = fft(y) v = ifft(u) print("Messwerte = ", y) print("FFT = ", u) print("inverse FFT = ", v)
Ausgabe:
Messwerte = [1. 0.5 2.5 0.5 3.5 2.5] FFT = [10.5-0.j -1. +2.59807621j -3. +0.8660254j 3.5-0.j -3. -0.8660254j -1. -2.59807621j] inverse FFT = [1. +0.j 0.5+0.j 2.5+0.j 0.5+0.j 3.5-0.j 2.5+0.j]
Python-Code: Rekonstruktion (Siehe auch Steinkamp: Der Python-Kurs für Ingenieure und Naturwissenschaftler; Rheinwerk, 2021, Seite 328ff oder Woyand: Python für Ingenieure und Naturwissenschaftler. 4. Aufl., Hanser, 2021, Seite 294ff)
import numpy as np import matplotlib.pyplot as plt from scipy.fftpack import fft, ifft, fftfreq f = 50 # Frequenz fgrenz = 1.5 * f # Grenzfrequenz n = 1000 # Anzahl Abtastungen t = np.linspace(0, 1/f, n) ut = np.sin(np.pi*f*t) + 3*np.random.randn(t.size) u = fft(ut) fk = fftfreq(ut.size, 1/(f*n)) Fg = u *(np.abs(fk) < fgrenz) v = ifft(Fg) z = np.abs(u[0:n]) # Grafikausgabe fig, ax = plt.subplots(3,1) ax[0].set_xlabel("Zeit") ax[0].set_ylabel("u(t)") ax[0].set_title("Messwerte") ax[0].plot(t, ut, lw=1) ax[1].set_xlabel("Zeit") ax[1].set_ylabel("u(t)") ax[1].set_title("Rekonstruktion") ax[1].plot(t, v.real, lw=2) ax[2].set_xlabel("Frequenz") ax[2].set_ylabel("|z(t)|") ax[2].set_title("Frequenzspektrum") ax[2].plot(t, z, lw=1) fig.tight_layout() plt.show()
Ausgabe:
Siehe auch Schnelle Fourier-Transformation
Short-time-Fourier-Transformation, STFT
BearbeitenKontinuierliche STFT:
Typische Fensterfunktionen: Hamming-Fenster, von-Hann-Fenster, Gauß-Fenster.
Siehe auch Fensterfunktion, Kurzzeit-Fourier-Transformation.
Z-Transformation
BearbeitenZ-Transformation: ;
Inverse Z-Transformation:
Siehe auch Z-Transformation
Wavelets
Bearbeiten-
Ingrid Chantal Daubechies (belgische Physikerin und Mathematikerin, geb. 1954)
-
Yves François Meyer (französischer Mathematiker, geb. 1939)
-
Alfréd Haar (ungarischer Mathematiker, 1885-1933)
Wavelet ... kleine Welle
Haar-Wavelet
Bearbeiten
Python-Code:
import numpy as np import matplotlib.pyplot as plt def psi(x): u = np.zeros(len(x)) k = 0 for i in x: if 0<=i<=1/2: u[k] = 1 elif 1/2<=i<=1: u[k] = -1 else: u[k] = 0 k += 1 return u x = np.arange(-0.5, 1.5, 0.001) y = psi(x) plt.plot(x,y) plt.grid() plt.show()
Mexikanischer Hut
Bearbeiten
Python-Code:
import numpy as np import matplotlib.pyplot as plt def psi(x): p = (1-x**2) * np.exp(-x**2 / 2) return p x = np.arange(-np.pi, np.pi, 0.01) y = psi(x) plt.plot(x,y) plt.grid() plt.show()
Morlet-Wavelet
BearbeitenDaubechies-Wavelet
BearbeitenWavelet-Transformation
Bearbeiten
- : zu transformierende Funktion
- : Wavelet-Funktion
- : Translationsparameter
- : Skalierungsparameter
Siehe auch Wavelet, Wavelet-Transformation, Haar-Wavelet, PyWavelets
Gedruckte Bücher (auszugsweise)
Bearbeiten- Burg, Haf, Wille, Meister: Höhere Mathematik für Ingenieure, Band I: Analysis. 9. Auflage, Vieweg+Teubner, 2011, ISBN 978-3-8348-1218-6
- Burg, Haf, Wille, Meister: Höhere Mathematik für Ingenieure, Band III: Gewöhnliche Differentialgleichungen, Distributionen, Integraltransformationen. 5. Auflage, Vieweg+Teubner, 2009, ISBN 978-3-8348-0565-2
- Hanke-Bourgeois: Grundlagen der Numerischen Mathematik und des Wissenschaftlichen Rechnens. 3. Aufl., Vieweg+Teubner, 2009, ISBN 978-3-8348-0708-3
- Preuß: Funktionaltransformationen. 2. Aufl., Hanser, 2014, ISBN 978-3-446-41787-8
- Thuselt, Gennrich: Praktische Mathematik mit MATLAB, Scilab und Octave. Springer, 2013, ISBN 978-3-642-25824-4