Sinus/Kosinus-Wellendaten in Python mit UliEngineering einfach generieren
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
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)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:
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
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:
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)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:
%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