Простая генерация данных синусоидальной/косинусоидальной формы волны в Python с использованием UliEngineering

Чтобы генерировать синусоидальные тестовые данные в Python, вы можете использовать библиотеку UliEngineering, которая предоставляет простые в использовании функции в UliEngineering.SignalProcessing.Simulation: Сначала установите UliEngineering.

Базовый пример

sine_cosine_example.py
from UliEngineering.SignalProcessing.Simulation import sine_wave
# По умолчанию: Генерирует 1 секунду данных с амплитудой = 1.0 (колеблется от -1.0 ... 1.0)
sine = sine_wave(frequency=10.0, samplerate=10e3)
cosine = cosine_wave(frequency=10.0, samplerate=10e3)

Синусоидальная и косинусоидальная формы волны

Амплитуда и смещение

Используйте amplitude=0.5, чтобы указать, что синусоида должна колебаться между -0.5 и 0.5.

Используйте offset=2.0, чтобы указать, что синусоида должна быть центрирована вертикально вокруг 2.0:

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)

Пример фазового сдвига

Вы можете указать фазовый сдвиг для использования — чтобы использовать фазовый сдвиг 180°, просто используйте 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.)

Пример временной задержки

Хотя это функционально эквивалентно фазовому смещению, часто удобно указывать временную задержку в секундах вместо фазового сдвига в градусах:

timedelay_example.py
from UliEngineering.SignalProcessing.Simulation import sine_wave

original = sine_wave(frequency=10.0, samplerate=10e3)
# Сдвинутый сигнал задержан на 0.01с = 10 миллисекунд по сравнению с исходным
shifted = sine_wave(frequency=10.0, samplerate=10e3, timedelay=0.01)

Синусоида с временной задержкой по сравнению с оригиналом

Обратите внимание, что во временной области сигналы кажутся сдвинутыми назад, когда вы используете положительное значение timedelay. Это соответствует названию delay, подразумевая, что сигнал задержан на эту величину.

Вы можете указать и фазовый сдвиг, и временную задержку, что означает, что оба будут применены (смещение добавляется)

Построение графиков

Если вы хотите визуально отладить ваши сигналы, это код, который использовался внутри Jupyter для генерации графиков, показанных выше:

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

# Сгенерировать данные
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) чтобы сделать его ещё больше!
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) # Top right

Check out similar posts by category: Наука о данных Математика Python