Ein Jupyter-Notebook mit einem nach Python übersetzten Beispiel aus dem SDR-Buch von Travis F. Collins, Robin Getz, Di Pu und Alexander M. Wyglinski
Gibbssches Phänomen¶
Der erste Code-Schnipsel im Buch von Collins, Travis F., Robin Getz, Di Pu, Alexander M. Wyglinski: Software-Defined Radio for Engineers, Analog Devices, 2018 befindet sich auf Seite 20.
Der mit "Code 2.1 Gibbs phenomenon: gibbs.m" bezeichnete Schnipsel ist in MATLAB geschrieben, das wahrscheinlich für die wenigsten Funkamateure, Maker und Hobbybastler zugänglich ist.
Man kann aber mit Python und scipy, numpy, matplotlib und ähnlichen Bibliotheken fast das Gleiche machen.
Ich hab mal versucht, diesen Code-Schnipsel in Python zu übersetzen:
import matplotlib.pyplot as plt
import numpy as np
samples = 5000
period = 1000
step = 2
harmonics = 9
t = np.arange(samples)
for i in range(1,harmonics,step):
wave = 1/i * np.sin(2 * np.pi * i * t/period)
if i == 1:
wavesum = wave
else:
wavesum += wave
print("Summiert bis zur " + str(harmonics) + ". Harmonischen")
fig, ax = plt.subplots()
ax.plot(t, wavesum)
ax.set(xlabel='time (sample)', ylabel='amplitude (a.u.)',
title='Code 2.1 auf Seite 20')
ax.grid()
plt.show()
Als Gibbssches Phänomen bezeichnet man das Verhalten von endlichen Fourierreihen, das bei Sprungstellen Überschwinger zeigt. Auch wenn die Fourierreihen bis zu hohen Harmonischen reichen, behalten die Überschwinger eine Amplitude von ca. 9%.
Im obigen Code kann man den Parameter harmonics verändern (z.B. von 9 auf 50) und sich das Verhalten anschauen. Wenn man zu sehr hohen Harmonischen geht, sollte man natürlich ans Abtasttheorem denken und die Werte von samples und period auch erhöhen, sonst kommt Unsinn raus.