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

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

Этот пост расширяет этот подход, показывая, как генерировать данные прямоугольной волны, треугольной волны, пилообразной волны и обратной пилообразной волны — всё ещё только в одной строке кода.

Все параметры, включая частоту, амплитуду, смещение, фазовый сдвиг и временное смещение, применяются и для этих функций — см. предыдущий пост для деталей и примеров этих параметров.

Мы используем библиотеку UliEngineering, точнее пакет UliEngineering.SignalProcessing.Simulation: Сначала установите UliEngineering.

Прямоугольная волна

square_wave_example.py
from UliEngineering.SignalProcessing.Simulation import square_wave

data = square_wave(frequency=10.0, samplerate=10e3)

Прямоугольная форма волны

Треугольная волна

triangle_wave_example.py
from UliEngineering.SignalProcessing.Simulation import triangle_wave

data = triangle_wave(frequency=10.0, samplerate=10e3)

Треугольная форма волны

Пилообразная волна

sawtooth_example.py
from UliEngineering.SignalProcessing.Simulation import sawtooth

data = sawtooth(frequency=10.0, samplerate=10e3)

Пилообразная форма волны

Обратная пилообразная волна

inverse_sawtooth_example.py
from UliEngineering.SignalProcessing.Simulation import inverse_sawtooth

data = inverse_sawtooth(frequency=10.0, samplerate=10e3)

Обратная пилообразная форма волны

Код для построения графиков

Этот код использовался для генерации графиков для этого поста в Jupyter:

plot_waveforms.py
%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")

Check out similar posts by category: Data Science Mathematics Python