Em um post anterior, eu detalhei como gerar dados de onda seno/cosseno com frequência, amplitude, offset, deslocamento de fase e offset de tempo usando apenas uma única linha de código.
Este post estende esta abordagem mostrando como gerar dados de onda quadrada, onda triangular, onda dente de serra e onda dente de serra inversa - ainda em apenas uma linha de código.
Todos os parâmetros, incluindo frequência, amplitude, offset, deslocamento de fase e offset de tempo se aplicam para aquelas funções também - veja o post anterior para detalhes e exemplos para aqueles parâmetros.
Estamos usando a biblioteca UliEngineering, mais especificamente o pacote UliEngineering.SignalProcessing.Simulation:
Primeiro, instale UliEngineering.
Onda quadrada
from UliEngineering.SignalProcessing.Simulation import square_wave
data = square_wave(frequency=10.0, samplerate=10e3)Onda triangular
from UliEngineering.SignalProcessing.Simulation import triangle_wave
data = triangle_wave(frequency=10.0, samplerate=10e3)Onda dente de serra
from UliEngineering.SignalProcessing.Simulation import sawtooth
data = sawtooth(frequency=10.0, samplerate=10e3)Onda dente de serra inversa
from UliEngineering.SignalProcessing.Simulation import inverse_sawtooth
data = inverse_sawtooth(frequency=10.0, samplerate=10e3)Código de plotagem
Este código foi usado para gerar os plots para este post no 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) para torná-lo ainda maior!
plt.gcf().set_size_inches(10, 5)
plt.plot(data, label="original")
plt.savefig("/dev/shm/square-wave.svg")