В предыдущем посте я подробно описал как генерировать данные синусоидальной/косинусоидальной волны с частотой, амплитудой, смещением, фазовым сдвигом и временным смещением, используя только одну строку кода.
Этот пост расширяет этот подход, показывая, как генерировать данные прямоугольной волны, треугольной волны, пилообразной волны и обратной пилообразной волны — всё ещё только в одной строке кода.
Все параметры, включая частоту, амплитуду, смещение, фазовый сдвиг и временное смещение, применяются и для этих функций — см. предыдущий пост для деталей и примеров этих параметров.
Мы используем библиотеку UliEngineering, точнее пакет UliEngineering.SignalProcessing.Simulation:
Сначала установите UliEngineering.
Прямоугольная волна
from UliEngineering.SignalProcessing.Simulation import square_wave
data = square_wave(frequency=10.0, samplerate=10e3)Треугольная волна
from UliEngineering.SignalProcessing.Simulation import triangle_wave
data = triangle_wave(frequency=10.0, samplerate=10e3)Пилообразная волна
from UliEngineering.SignalProcessing.Simulation import sawtooth
data = sawtooth(frequency=10.0, samplerate=10e3)Обратная пилообразная волна
from UliEngineering.SignalProcessing.Simulation import inverse_sawtooth
data = inverse_sawtooth(frequency=10.0, samplerate=10e3)Код для построения графиков
Этот код использовался для генерации графиков для этого поста в Jupyter:
%matplotlib inline
from matplotlib import pyplot as plt
plt.style.use("ggplot")
from UliEngineering.SignalProcessing.Simulation import square_wave
data = square_wave(frequency=10.0, samplerate=10e3)
# set_size_inches(20, 10) чтобы сделать его ещё больше!
plt.gcf().set_size_inches(10, 5)
plt.plot(data, label="original")
plt.savefig("/dev/shm/square-wave.svg")