Чтобы генерировать синусоидальные тестовые данные в Python, вы можете использовать библиотеку UliEngineering, которая предоставляет простые в использовании функции в UliEngineering.SignalProcessing.Simulation:
Сначала установите UliEngineering.
Базовый пример
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:
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
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.)Пример временной задержки
Хотя это функционально эквивалентно фазовому смещению, часто удобно указывать временную задержку в секундах вместо фазового сдвига в градусах:
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 для генерации графиков, показанных выше:
%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