Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Señales en tiempo discreto

import scipy as sc
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline

Señales en tiempo discreto

Están definidas sólo en valores discretos de tiempo. Los instantes de tiempo no necesariamente están equiespaciados.

Muestreador ideal

Figure 1:Muestreador ideal

xa(t)=Acos(2πFt+θ)x_a(t)=A\cos(2\pi Ft+\theta)

es muestreada a Fs=1TF_s=\frac{1}{T}

entonces se tiene

x(n)xa(nT)=Acos(2πFnT+θ)=Acos(2πnFFs+θ)=Acos(2πfn+θ)\begin{align*} x(n)\triangleq x_a(nT)&=A\cos(2\pi FnT+\theta)\\ &=A\cos\left(\dfrac{2\pi nF}{F_s}+\theta\right)\\ &=A\cos(2\pi fn+\theta) \end{align*}

donde:

Ω=2πFω=2πf=ΩFs=ΩT\begin{align*} \Omega&=2\pi F\\ \omega&=2\pi f\\ &=\frac{\Omega}{F_s}=\Omega T \end{align*}

Periodicidad de una señal en tiempo discreto

En contraste con las señales sinusoidales en Tiempo Continuo, las señales senoidales en tiempo discreto verifican:

Para determinar el período fundamental NN de una senoide discreta, expresamos ff como cociente de dos números enteros primos relativos. Entonces el período NN es el denominador de esta expresión.

f1=3060proˊxima af2=2960f_1=\frac{30}{60}\qquad \text{próxima a} \qquad f_2=\frac{29}{60}
N1=2muy distintaN2=60N_1=2 \qquad \text{muy distinta} \qquad N_2=60

Aliasing

Señales sinusoidales en Tiempo Discreto cuyas frecuencias están separadas un múltiplo entero de 2π2\pi son idénticas.

cos[(ω+2π)n+θ]=cos[ωn+2πn+θ]=cos[ωn+θ]\cos\left[(\omega + 2\pi)n+\theta\right] = \cos\left[\omega n + 2\pi n + \theta\right] = \cos\left[\omega n + \theta\right]

Como consecuencia todas las secuencias de sinusoides

xk(n)=Acos(ωkn+θ)x_k(n)=A\cos(\omega_k n+\theta)

donde: ωk=ω+2πk\omega_k=\omega+2\pi k son indistinguibles (idénticas).

En particular, una sinusoide con frecuencia en el rango ω>π|\omega| >\pi será equivalente a una sinusoide en el rango ωπ(f0.5)|\omega| \leq \pi ( | f |\leq 0.5) y se la denomina un alias de la sinusoide en el rango ωπ.|\omega| \leq \pi.

Mientras que las señales en tiempo continuo es:

Ω-\infty\leq\Omega\leq\infty
F-\infty\leq F\leq\infty
f=FFsf=\frac{F}{F_s}

y que fmax=0.5f_{max}=0.5, que resulta que la máxima frecuencia FmaxF_{max} de la señal que en tiempo discreto muestrearse con una frecuencia FsF_s sin que se produzca aliasing es:

fmax=12=FmaxFs    f_{max}=\frac{1}{2}=\frac{F_{max}}{F_s} \implies

En otras palabras, para evitar que se produzca aliasing y de esa forma poder reconstruir una seañal a partir de las muestras debemos seleccionar:

Fs>2FmaxF_s>2F_{max}

donde FmaxF_{max} es la máxima frecuencia contenida en la señal analógica.

Teorema de muestreo

donde

xa(nFs)xa(nT)=x(n)x_a(\frac{n}{F_s})\triangleq x_a(nT)=x(n)

son las muestras de xa(t)x_a(t) y g(t)g(t) es la función de interpolación definida como

g(t)=sin(2πBt)2πBtg(t)=\frac{\sin(2\pi Bt)}{2\pi Bt}
teorema de muestreo

Figure 2:Teorema de muestreo Nyquist-Shannon

Ejemplo 1

Determinar la tasa de muestreo de Nyquist

xa(t)=3cos(50πt)+10sin(300πt)cos(100πt)x_a(t)=3\cos(50\pi t)+10\sin(300\pi t) -\cos(100\pi t)

Solución

F1=25HzF2=150HzF3=50HzF_1=25 Hz \qquad F_2=150Hz \qquad F_3=50Hz

Veamos que Fmax=150Hz    FN=300HzF_{max}=150Hz \implies F_N=300Hz

Sin embargo, si muestreamos con Fs=FNF_s=F_N, las muestras de la componente

10sin(300πt)resultan10sin(πn)10\sin(300\pi t) \qquad \text{resultan}\qquad 10\sin(\pi n)

que son idénticamente nulas y obviamente no puede recuperarse la señal a partir de las muestras!!

Ejemplo 2

Supongamos que desea generar y graficar las señales en tiempo continuo x1(t)x_1(t) y x2(t)x_2(t) definidas como:

x1(t)=cos(2π50t)x2(t)=cos(2π550t)\begin{align*} x_1(t)&=\cos(2\pi 50t)\\ x_2(t)&=\cos(2\pi 550t) \end{align*}

y las correspondientes señales en tiempo discreto que se obtienen muestreandolas con una frecuencia Fs=500HzF_s=500Hz. Notas que las dos señales tienen la misma señal muestreada

x1(n)=cos(2π50n500)x2(n)=cos(2π550n500)=cos(2πn+2π50n500)=x1(n)\begin{align*} x_1(n)&=\cos\left(\frac{2\pi 50n}{500}\right)\\ x_2(n)&=\cos\left(\frac{2\pi 550n}{500}\right)=\cos\left(2\pi n + \frac{2\pi 50 n}{500}\right)=x_1(n)\\ \end{align*}

Veamos el ejemplo en código, y grafiquemoslo:

t=np.linspace(0,0.02, 20001, endpoint=True)
n=np.linspace(0,10, 11, endpoint=True)
x1=np.cos(2*np.pi*50*t)
x2=np.cos(2*np.pi*550*t)
x1n=np.cos(2*np.pi*50/500*n)
x2n=np.cos(2*np.pi*550/500*n)
f, ax=plt.subplots(1,1, figsize=(8,3))
ax.plot(t, x1, color="b", label=r"$x_1(t)$")
ax.plot(t, x2, color="r", ls="--", label=r"$x_2(t)$")
ax.scatter(n*0.002, x1n, marker="o", facecolor="None", edgecolor="b", s=90, linewidths=2 , label=r"$x_{1n}(t)$") 
ax.scatter(n*0.002, x2n, marker="x", color="r", s=50, linewidths=3, label=r"$x_{2n}(t)$")
plt.legend()
ax.set_xlabel("Tiempo [seg]")
ax.set_ylabel("Amplitud")
ax.set_title("Señales $x_1(t)$ y $x_2(t)$ muestreadas: Aliasing")
ax.grid()
<Figure size 800x300 with 1 Axes>