Sinus/Kosinus-Wellendaten in Python mit UliEngineering einfach generieren

English Deutsch

Um Sinus-Testdaten in Python zu generieren, kannst du die UliEngineering-Bibliothek verwenden, die einfach zu verwendende Funktionen in UliEngineering.SignalProcessing.Simulation bereitstellt: Installiere zunächst UliEngineering.

Grundlegendes Beispiel

sine_cosine_example.py
from UliEngineering.SignalProcessing.Simulation import sine_wave
# Standard: Generiert 1 Sekunde Daten mit Amplitude = 1.0 (schwingt von -1.0 ... 1.0)
sine = sine_wave(frequency=10.0, samplerate=10e3)
cosine = cosine_wave(frequency=10.0, samplerate=10e3)

Sinus- und Kosinuswellen

Amplitude & Offset

Verwende amplitude=0.5, um festzulegen, dass die Sinusschwingung zwischen -0.5 und 0.5 schwingen soll.

Verwende offset=2.0, um festzulegen, dass die Sinusschwingung vertikal um 2.0 zentriert sein soll:

sine_with_offset.py
from UliEngineering.SignalProcessing.Simulation import sine_wave

data = sine_wave(frequency=10.0, samplerate=10e3, amplitude=0.5, offset=2.0)

Phasenverschiebungs-Beispiel

Du kannst die Phasenverschiebung festlegen – um eine 180°-Phasenverschiebung zu verwenden, verwende einfach phaseshift=180.0

phaseshift_example.py
from UliEngineering.SignalProcessing.Simulation import sine_wave

original = sine_wave(frequency=10.0, samplerate=10e3)
shifted = sine_wave(frequency=10.0, samplerate=10e3, phaseshift=180.)

Zeitverzögerungs-Beispiel

Obwohl dies funktional äquivalent zur Phasenverschiebung ist, ist es oft praktisch, die Zeitverzögerung in Sekunden anstelle der Phasenverschiebung in Grad anzugeben:

timedelay_example.py
from UliEngineering.SignalProcessing.Simulation import sine_wave

original = sine_wave(frequency=10.0, samplerate=10e3)
# Verzögertes Signal ist 0,01s = 10 Millisekunden gegenüber dem Original verzögert
shifted = sine_wave(frequency=10.0, samplerate=10e3, timedelay=0.01)

Sinusschwingung mit Zeitverzögerung gegenüber dem Original

Beachte, dass im Zeitbereich die Signale scheinbar nach hinten verschoben werden, wenn du einen positiven timedelay-Wert verwendest. Dies entspricht der Delay-Benennung, die impliziert, dass das Signal um diesen Betrag verzögert wird.

Du kannst sowohl Phasenverschiebung als auch Zeitverzögerung angeben, was bedeutet, dass beide angewendet werden (der Offset wird addiert)

Plotten

Wenn du deine Signale visuell debuggen möchtest, dies ist der Code, der in Jupyter verwendet wurde, um die oben gezeigten Plots zu generieren:

plot_timedelay_jupyter.py
%matplotlib inline
from matplotlib import pyplot as plt
plt.style.use("ggplot")

# Daten generieren
from UliEngineering.SignalProcessing.Simulation import sine_wave

original = sine_wave(frequency=10.0, samplerate=10e3)
shifted = sine_wave(frequency=10.0, samplerate=10e3, timedelay=0.01)

# set_size_inches(20, 10) um ihn noch größer zu machen!
plt.gcf().set_size_inches(10, 5)
plt.plot(original, label="original")
plt.plot(shifted, label="verschoben")
plt.savefig("/dev/shm/timedelay.svg")
plt.legend(loc=1) # Oben rechts

Check out similar posts by category: Data Science, Mathematics, Python