SDR: Gibbsches Phänomen

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:

In [15]:
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()
Summiert bis zur 9. Harmonischen

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.

In [ ]:
 

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.