Teorema de Nyquist

¿Qué dice el teorema? ¿Qué pasa si no se cumple?

Este teorema dice: Según el teorema de muestreo de Nyquist-Shannon, para poder digitalizar una señal analógica y transmitirla por un medio eléctrico a grandes distancias y poder recuperarla en el extremo distante con la máxima fidelidad posible, se requiere que la señal analógica sea muestreada al menos dos veces su frecuencia máxima. [Wikipedia]

De este teorema surge la frecuencia de muestreo de 44.1kHz. El rango de escucha del oído humano va desde los 20Hz hasta los 20.000Hz. La frecuencia de muestreo de 44.100Hz cumple con el teorema.

Para poder graficar una onda pura vamos a usar Python y vamos a cambiar la frecuencia de muestreo para ejemplificar ambos casos.

import numpy as np
import matplotlib.pyplot as plt

f = 50  #Frecuencia en Hertz
f_s = 44100  #Sampleo, o cantidad de muestras por segundos

f_s_b = 10 #Sampleo, o cantidad de muestras por segundos donde no se cumple el teorema de Nyquist

t = np.linspace(0, 1, 2 * f_s) #Función para crear un array equidistante
x = np.sin(f * 2 * np.pi * t)

fig, ax = plt.subplots(figsize=(15,7))
ax.plot(t, x)
ax.set_ylim(1.5,-1.5)
ax.set_xlabel('Tiempo [s]')
ax.set_ylabel('Amplitud Señal')
ax.set_title('50Hz con Frecuencia de Muestreo de 44100Hz')
plt.show()

El gráfico que se genera es el siguiente

1 segundo de una onda de 50Hz

Al código de arriba lo modifico para que la resolución sea de 10Hz. Veamos que onda se genera:

import numpy as np
import matplotlib.pyplot as plt

f = 50  #Frecuencia en Hertz
f_s = 44100  #Sampleo, o cantidad de muestras por segundos

f_s_b = 10 #Sampleo, o cantidad de muestras por segundos donde no se cumple el teorema de Nyquist

t = np.linspace(0, 1, 2 * f_s) #Función para crear un array equidistante
x = np.sin(f * 2 * np.pi * t)

fig, ax = plt.subplots(figsize=(15,7))
ax.plot(t, x)
ax.set_ylim(1.5,-1.5)
ax.set_xlabel('Tiempo [s]')
ax.set_ylabel('Amplitud Señal')
ax.set_title('50Hz con Frecuencia de Muestreo de 10Hz')
plt.show()
1 segundo de una onda de 50Hz

Claramente se ve la diferencia entre una onda y la otra. A este error se le denomina aliasing. Trae en los resultados falsos picos, datos erróneos. Justamente el término aliasing viene de alias. Según la RAE:

1. m. Apodo o sobrenombre.
2. adv. Por otro nombre. Alfonso Tostado, alias el Abulense.
3. adv. desus. De otro modo.

El propio nombre lo dice, no es una copia exacta, es un alias. Hoy no es una configuración que sea necesario tener pendiente, ya que practicamente cualquier DAW trae como predeterminado el valor de 44.100 Hz. Pero es importante conocer todos los aspectos del sonido digital.

El código de Python para generar la onda

Hasta el próximo post!!!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *