Ing Mathematik: FFT und Wavelets
Vorlage:Navigation zurückhochvor buch
Fourierreihen

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 Vorlage:W
Fourier-Transformation
.
Siehe auch Vorlage:W
DFT - Diskrete Fourier Transformation
Diskrete Fourier-Transformation: ;
Matrix-Vektor-Form: mit
Inverse Diskrete Fourier-Transformation, iDFT: für
iDFT in Matrix-Vektor-Form: mit
Siehe auch Vorlage:W
FFT - Fast Fourier Transformation
Eine 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 Vorlage:W
Short-time-Fourier-Transformation, STFT
Kontinuierliche STFT:
Typische Fensterfunktionen: Vorlage:W, Vorlage:W, Vorlage:W.
Siehe auch Vorlage:W, Vorlage:W.
Z-Transformation
Z-Transformation: ;
Inverse Z-Transformation:
Siehe auch Vorlage:W
Wavelets
-
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
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
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
Daubechies-Wavelet
Wavelet-Transformation
- : zu transformierende Funktion
- : Wavelet-Funktion
- : Translationsparameter
- : Skalierungsparameter
Siehe auch Vorlage:W, Vorlage:W, Vorlage:W, PyWavelets
Gedruckte Bücher (auszugsweise)
- 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
