Sinus-/Kosinus-Wellenformdaten in Python einfach generieren mit UliEngineering

English Deutsch

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

sine_cosine_example.py
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)

Sinus- und Kosinus-Wellenformen

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:

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 zu verwendende Phasenverschiebung angeben – 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 anstatt 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 Original verzögert
shifted = sine_wave(frequency=10.0, samplerate=10e3, timedelay=0.01)

Sinuswelle mit Zeitverzögerung gegenüber Original

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:

plot_timedelay_jupyter.py
%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

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