Leer Primero

Como se utiliza este blog?

jueves, 6 de marzo de 2025

Generación de Formas de Onda en Python utilizando la libreria Matplotlib y Numpy

Bienvenido a mi blog, hoy hablaremos un poco de la generación de formas de onda, la cual es la producción de patrones de señales analógicas o digitales, periódicas o no periódicas. Esta acción, se realiza físicamente mediante dispositivos electrónicos llamados generadores de formas de onda. Un generador de forma de onda, produce formas de onda precisas, incluyendo sinusoidales, cuadradas, triangulares y de rampa, así como formas de onda arbitrarias definidas por el usuario utilizando secuencias de datos o transmitiendo continuamente desde un host o instrumento "peer-to-peer" dentro de sistemas de pruebas de señal mixta.

La generación de formas de onda por software se puede realizar con programas especializados que permiten crear, editar y administrar dichas formas de onda, el día de hoy veremos la generación básica de algunas formas de onda en Python, para ello haremos uso de Matplotlib, la cuál es una librería completa para crear visualizaciones estáticas, animadas e interactivas en Python, y de igual forma también usaremos la librería NumPy, que nos trae el poder computacional de lenguajes como C y Fortran a Python, un lenguaje mucho más fácil de aprender y usar. Vamos a ello directamente y veamos el código en Python con sus respectivos comentarios explicativos:

# -------------------------------------------------------------------------
# (| " FormasdeOnda.py                                                  "|)
# (| "                                                                  "|)
# (| " Script que genera las formas de onda más conocidas para mostrar, "|)
# (| " a modo de ejemplo, cómo se realiza el procedimiento.             "|)
# (| "                                                                  "|)
# (| " Este código de ejemplo es de dominio público.                    "|)
# (| "                                                                  "|)
# (| " Developer: jorgechac© - Técnico Laboral en Programación UNAB     "|)
# (| " Visita  https://jorgechac.blogspot.com                           "|)
# (| "                                                                  "|)
# (| " Venta de accesorios Arduino/Raspberry Pi Pico/ESP32   	        "|)
# (| " Whatsapp y Ventas NEQUI +573177295861                            "|)
# (| " Bucaramanga - Colombia                                           "|)
# -------------------------------------------------------------------------
import numpy as np # Importamos la biblioteca NumPy para proporciona un
                   # objeto de matriz N-dimensional y funciones
                   # matemáticas de alto rendimiento para operar en esas
                   # matrices.
import matplotlib.pyplot as plt  # Importamos Matplotlib para graficar
                                 # y visualizar

# Definición de parámetros
T = 1  # Duración de la señal en segundos
fs = 1000  # Frecuencia de muestreo en Hz (muestras por segundo)
t = np.linspace(0, T, int(T * fs), endpoint=False)  # Vector de tiempo

# Onda Senoidal
f_sine = 5  # Frecuencia de la onda senoidal en Hz
sine_wave = np.sin(2 * np.pi * f_sine * t) # Generación de la señal senoidal

# Onda Cuadrada
f_square = 2  # Frecuencia de la onda cuadrada en Hz
duty_cycle = 0.01  # Ciclo de trabajo (porcentaje del período en alto)
square_wave = np.where(np.mod(np.floor(2 * duty_cycle * fs * t), 2) == 0, 1, -1)
# Generación de la señal cuadrada

# Onda Triangular
f_triangle = 1  # Frecuencia de la onda triangular en Hz
triangle_wave = 2 * np.abs((10 * f_triangle * t) % 2 - 1) - 1
# Generación de la señal triangular

# Onda Diente de Sierra
f_sawtooth = 10  # Frecuencia de la onda diente de sierra en Hz
sawtooth_wave = 2 * (f_sawtooth * t - np.floor(f_sawtooth * t + 0.5))
# Generación de la señal diente de sierra

# Gráfica de las ondas
fig, axs = plt.subplots(4, 1, sharex=True, figsize=(8, 8))
# Crea una figura con 4 subgráficos

axs[0].plot(t, sine_wave)  # Grafica la onda senoidal
axs[0].set_title('Onda Senoidal')  # Título del primer gráfico

axs[1].plot(t, square_wave)  # Grafica la onda cuadrada
axs[1].set_title('Onda Cuadrada')  # Título del segundo gráfico

axs[2].plot(t, triangle_wave)  # Grafica la onda triangular
axs[2].set_title('Onda Triangular')  # Título del tercer gráfico

axs[3].plot(t, sawtooth_wave)  # Grafica la onda diente de sierra
axs[3].set_title('Onda Diente de Sierra')  # Título del cuarto gráfico

plt.xlabel('Tiempo (seg)')  # Etiqueta del eje X para todas las gráficas
plt.show()  # Muestra la gráfica

Finalmente después de ejecutar el código, se abrirá una nueva ventana y se comenzará a generar la grafica en Python con matplotlib, así:


Quieres aportar algo que complemente este articulo? crees que hay algo que se deba corregir? Escríbenos este blog es para todos.

Recuerda que en https://jorgechac.blogspot.com nos dedicamos a construir una electrónica mejor! y apoyamos el proyecto CTC GO! (Creative Technologies in the Classroom) que es un programa de educación steam personalizable.


Si te sirvió deja un comentario de agradecimiento, comparte el post en tus redes sociales o recomiéndale el blog a un amigo, eso me motiva a seguir realizando estos pequeños posts y espero que vuelvas a mi blog, publico nuevo material con base en los softwares y apps que utilizo y la experiencia que he adquirido. Por último si deseas colaborar voluntariamente y crees que mi trabajo y mi tiempo lo ameritan, considere hacer una pequeña donación a mi NEQUI +573177295861.



También te puede interesar:


Dibujo de un arbol de navidad utilizando el módulo Python Turtle

ARBOL DE NAVIDAD EN PYTHON

Dibujando en Python utilizando la libreria Matplotlib y Numpy

Dibujando en Python utilizando el módulo Python Turtle

Dibujo del logotipo de Python utilizando el módulo Python Turtle


No hay comentarios.:

Publicar un comentario