Sinus-/Kosinus-Wellenformdaten in Python einfach generieren mit UliEngineering
Um Sinus-Testdaten in Python zu generieren, kannst du die UliEngineering-Bibliothek verwenden, die einfach zu verwendende Funktionen in UliEngineering.SignalProcessing.Simulation bietet:
Installiere zunächst UliEngineering.
Grundbeispiel
from UliEngineering.SignalProcessing.Simulation import sine_wave
# Standard: Generiert 1 Sekunde Daten mit Amplitude = 1.0 (Schwingung 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 anzugeben, dass die Sinuswelle zwischen -0.5 und 0.5 schwingen soll.
Verwende offset=2.0, um anzugeben, dass die Sinuswelle 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 zu verwendende Phasenverschiebung angeben – 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 anstatt 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 Original verzögert
shifted = sine_wave(frequency=10.0, samplerate=10e3, timedelay=0.01)Beachte, dass im Zeitbereich die Signale scheinbar nach hinten verschoben erscheinen, wenn du einen positiven Zeitverzögerungswert 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, ist dies 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")
# Generate data
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="shifted")
plt.savefig("/dev/shm/timedelay.svg")
plt.legend(loc=1) # Oben rechts