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.

Análisis frecuencial de señales en tiempo discreto

Serie de Fourier de Señales en Tiempo Discreto

Sea x(n)x(n) una señal periódica con período NN, es decir:

x(n)=x(n+N),nx(n)=x(n+N), \qquad \forall n

La representación de x(n)x(n) en serie de Fourier puede expresarse como:

Para derivar la expresión de ckc_k usamos la identidad

k=0N1ej2πknN={Nk=0,±N,±2N,0c.o.c\sum_{k=0}^{N-1}e^{j\frac{2\pi kn}{N}}=\left\{ \begin{array}{ll} N & k=0,\pm N, \pm 2N, \cdots\\ 0 & \text{c.o.c} \end{array} \right.

Reemplazando en (2), tenemos:

x(n)ej2πlnN=k=0N1ckej2π(kl)nNx(n)e^{-j\frac{2\pi ln}{N}}=\sum_{k=0}^{N-1}c_ke^{j\frac{2\pi (k-l)n}{N}}

Sumando sobre nn:

n=0N1x(n)ej2πlnN=n=0N1k=0N1ckej2π(kl)nN=k=0N1ckn=0N1ej2π(kl)nN=Ncl\begin{align*} \sum_{n=0}^{N-1}x(n)e^{-j\frac{2\pi ln}{N}}& = \sum_{n=0}^{N-1}\sum_{k=0}^{N-1}c_ke^{j\frac{2\pi (k-l)n}{N}}\\ & = \sum_{k=0}^{N-1}c_k\sum_{n=0}^{N-1}e^{j\frac{2\pi (k-l)n}{N}}\\ & = Nc_l \end{align*}

Luego

Sk=ej2πknNS_k = e^{-j\frac{2\pi kn}{N}}

son periódicas con período NN, entonces los coeficientes de Fourier ckc_k son también periódicos cuando se calculan más allá del rango k=0,1,,N1k=0, 1, \cdots, N-1.

Se tiene entonces:

ck+N=ckc_{k+N}=c_k

Es decir, ck{c_k} es una secuencia periódica con periodo fundamental NN.

Tenemos entonces que el espectro de una señal x(n)x(n) que es periódica con período NN, es una secuencia periódica con período NN.

0ωk=2πkN<2πcon k=0,1,2,,N10\leq \omega_k=\frac{2\pi k}{N}< 2\pi \quad \text{con } k=0,1, 2, \cdots, N-1

Espectro de Densidad de Potencia de Señales Periódicas en Tiempo Discreto

La potencia media de una señal periódica de período NN es:

Px=1Nn=0N1x(n)2=1Nn=0N1x(n)x(n)=1Nn=0N1x(n)[k=0N1ckej2πknN]=1Nk=0N1ck[n=0N1x(n)ej2πknN]=1Nk=0N1ckck=1Nk=0N1ck2\begin{align*} P_x=\frac{1}{N}\sum_{n=0}^{N-1} |x(n)|^2&=\frac{1}{N}\sum_{n=0}^{N-1}x(n)x^*(n)\\ &=\frac{1}{N}\sum_{n=0}^{N-1}x(n) \left[\sum_{k=0}^{N-1}c_k^*e^{-j\frac{2\pi k n}{N}}\right]\\ &=\frac{1}{N}\sum_{k=0}^{N-1} c_k^*\left[\sum_{n=0}^{N-1}x(n)e^{-j\frac{2\pi k n}{N}}\right]\\ &=\frac{1}{N}\sum_{k=0}^{N-1} c_k^*c_k=\frac{1}{N}\sum_{k=0}^{N-1} |c_k|^2 \end{align*}

Ejemplos

ω0=2π    f0=12\omega_0=\sqrt 2 \pi \implies f_0=\frac{1}{\sqrt{2}}
ω0=π3    f0=16\omega_0=\frac{\pi}{3} \implies f_0=\frac{1}{6}

x(n)x(n) es periódica con período fundamental N=6N = 6

Los coeficientes de Fourier resultan:

ck=16n=05x(n)ej2πkn6,k=0,1,,5c_k=\frac{1}{6}\sum_{n=0}^{5} x(n)e^{-j\frac{2\pi kn}{6}}, \quad k=0,1,\cdots,5

Transformada de Fourier en Tiempo Discreto

La DTFT (Discrete Time Fourier Transform) de una señal x(n)x(n) de energía finita se define como:

En efecto,

X(ω+2π)=n=x(n)ej(ω+2π)n=n=x(n)ej(ωn+2π)n.ej2πn=1=X(ω)X(\omega+2\pi)=\sum_{n=-\infty}^{\infty}x(n)e^{-j(\omega+2\pi)n}=\sum_{n=-\infty}^{\infty}x(n)e^{-j(\omega n+2\pi)n}.\underbrace{e^{-j2\pi n}}_{=1}=X(\omega)

De la definición anterior de X(ω)X(\omega) vemos que los coeficientes de Fourier son:

cn=x(n)c_n=x(-n)

Si se conoce X(ω)X(\omega), la señal x(n)x(n) puede entonces recuperarse como:

Convergencia de la DFTF

Definamos:

XN(ω)=n=NNx(n)ejωnX_N(\omega)=\sum_{n=-N}^{N}x(n)e^{-j\omega n}

Decimos que XN(ω)X_N(\omega) converge uniformemente a X(ω)X(\omega), para todo ω\omega, cuando NN\rightarrow \infty, si

limNX(ω)XN(ω)=0\lim_{N\rightarrow\infty} |X(\omega)-X_N(\omega)|=0

La convergencia uniforme de XN(ω)X_N(\omega) queda garantizada si:

n=x(n)<\sum_{n=-\infty}^{\infty} |x(n)| < \infty

En efecto se verifica entonces:

X(ω)=n=x(n)ejωnn=x(n)|X(\omega)| = \left| \sum_{n=-\infty}^{\infty} x(n)e^{-j\omega n}\right|\leq \sum_{n=-\infty}^{\infty} \left|x(n)\right|\leq \infty

Por lo que esta es una condición suficiente para existencia de la transformada discreta de Fourier.

Algunas secuencias no son absolutamente sumables, pero son cuadrado sumables, es decir son de energía finita:

Ex=n=x(n)2E_{x}=\sum_{n=-\infty}^{\infty} \left|x(n)\right|^{2}\leq \infty

que es una condición más débil que la anterior (la anterior implica esta pero no al revés)

Para poder definir la DTFT de estas señales, la condición de convergencia uniforme se debe relajar a convergencia en media cuadrática:

limNππX(ω)XN(ω)2dw=0\lim_{N\rightarrow \infty} \int_{-\pi}^{\pi}\left|X(\omega)-X_N(\omega)\right|^2 dw=0

Es decir, la energía del error X(ω)XN(ω)|X(\omega)-X_N(\omega)| tiende a cero, pero no necesariamente el error tiende a cero para cada ω\omega.

Ejemplo DTFT cuadrada

Supongamos que la señal x(n)x(n) tiene DFTF,

X(ω)={1,ωωc0,ωc<ωπX(\omega)=\left\{ \begin{array}{ll} 1, &\quad |\omega|\leq \omega_c\\ 0, &\quad \omega_c < |\omega| \leq \pi \end{array} \right.

Recordemos que X(ω)|X(\omega)| es periódica con período 2π2\pi.

La transformada inversa resulta

x(n)=12πππX(ω)ejωndω=12πωcωcejωndω=sin(ωcn)πn,con n0x(n)=\frac{1}{2\pi}\int_{-\pi}^{\pi}X(\omega)e^{j\omega n}d\omega= \frac{1}{2\pi}\int_{-\omega_c}^{\omega_c}e^{j\omega n}d\omega =\frac{\sin(\omega_c n)}{\pi n}, \quad \text{con } n \neq 0
x(n)=12πωcωcdω=ωcπ,con n=0x(n)=\frac{1}{2\pi}\int_{-\omega_c}^{\omega_c}d\omega=\frac{\omega_c}{\pi}, \quad\text{con } n=0

Se puede verificar que x(n)x(n) no es absolutamente sumable pero es cuadrado sumable.

En efecto:

n=x(n)=ωcπ+2n=1ωcπsin(ωcn)ωcnωcπ+2πn=11ndiverge\sum_{n=-\infty}^{\infty} |x(n)|= \frac{\omega_c}{\pi}+2\sum_{n=1}^{\infty} \frac{\omega_c}{\pi}\left|\frac{\sin(\omega_c n)}{\omega_c n}\right| \leq \frac{\omega_c}{\pi}+\underbrace{\frac{2}{\pi}\sum_{n=1}^{\infty}\frac{1}{n}}_{\text{diverge}}

Además:

n=x(n)2=ωc2π2+2n=1ωc2π2sin(ωcn)ωcn2ωc2π2+2π2n=11n2converge\sum_{n=-\infty}^{\infty} |x(n)|^2= \frac{\omega_c^2}{\pi^2}+2\sum_{n=1}^{\infty} \frac{\omega_c^2}{\pi^2}\left|\frac{\sin(\omega_c n)}{\omega_c n}\right|^2 \leq \frac{\omega_c^2}{\pi^2}+\underbrace{\frac{2}{\pi^2}\sum_{n=1}^{\infty}\frac{1}{n^2}}_{\text{converge}}

Concluimos entonces que la DTFT X(ω)X(\omega) de x(n)x(n) converge en media cuadrática, pero no converge uniformemente punto a punto (en las discontinuidades).

Para ver esto en mayor detalle consideremos la suma finita

XN(ω)=n=NNsin(ωcn)πnejωnX_N(\omega)=\sum_{n=-N}^{N}\frac{\sin(\omega_cn)}{\pi n} e^{-j\omega n }

para distintos valores de NN crecientes.

Vemos que existe una oscilación en frecuencia ω=ωc\omega=\omega_c. Cuando NN aumenta, la oscilación es mas rápida y cuando NN\rightarrow\infty la oscilación converge al punto de discontinuidad ω=ωc\omega=\omega_c, pero su amplitud no va a cero. Este fenómeno oscilatorio de XN(ω)X_N(\omega) se denomina fenómeno de Gibbs.

Espectro de Densidad de Energía de Señales Aperiódicas

La energía de la señal x(n)x(n) es:

Ex=n=x(n)2=n=x(n)x(n)=n=x(n)[12πππX(ω)ejωndω]=12πππX(ω)[n=x(n)ejωn]dω=12πππX(ω)2dω\begin{align} E_x=\sum_{n=-\infty}^{\infty} \left|x(n)\right|^2 &= \sum_{n=-\infty}^{\infty} x(n)x^*(n)\\ &= \sum_{n=-\infty}^{\infty} x(n)\left[\frac{1}{2\pi}\int_{-\pi}^{\pi} X^*(\omega)e^{-j\omega n}d\omega\right]\\ &= \frac{1}{2\pi}\int_{-\pi}^{\pi} X^*(\omega)\left[\sum_{n=-\infty}^{\infty} x(n)e^{-j\omega n}\right]d\omega\\ &= \frac{1}{2\pi}\int_{-\pi}^{\pi} \left|X(\omega)\right|^2d\omega\\ \end{align}
X(ω)=X(ω)ejθ(ω)X(\omega)=|X(\omega)|e^{j\theta(\omega)}

donde:

X(ω):Espectro de magnitudθ(ω)=ω:Espectro de magnitud\begin{align*} \left|X(\omega)\right|:&\quad \text{Espectro de magnitud}\\ \theta(\omega)=\angle\omega:&\quad \text{Espectro de magnitud} \end{align*}
X(ω)=X(ω)    {X(ω)=X(ω)X(ω)=X(ω)Sxx(ω)=Sxx(ω)X^{*}(\omega)=X(\omega)\implies \left\{ \begin{align*} |X(-\omega)|&=|X(\omega)|\\ \angle X(-\omega)&=-\angle X(\omega)\\ S_{xx}(-\omega)&=S_{xx}(\omega) \end{align*} \right.

Ejemplo: densidad espectral de energía de una señal exponencial

Calcule y grafique el espectro de densidad de energía Sxx(ω)S_{xx}(\omega) de la señal:

x(ω)=anμ(n),0<a<1x(\omega)=a^{n}\mu(n), \quad 0<a<1

La DTFT de x(n)x(n) resulta:

X(ω)=n=x(n)ejωn=n=anejωn=n=(aejω)n=11aejω\begin{align*} X(\omega)&=\sum_{n=-\infty}^{\infty}x(n)e^{-j\omega n}=\sum_{n=-\infty}^{\infty}a^ne^{-j\omega n}\\ &=\sum_{n=-\infty}^{\infty}\left(ae^{-j\omega}\right)^n=\frac{1}{1-ae^{-j\omega}}\\ \end{align*}

Luego

Sxx=X(ω)2=11+acos(ω)+jasin(ω)2=1(1cos(ω))2+a2sin2(ω)=11+a22acos(ω)\begin{align*} S_{xx}&=\left|X(\omega)\right|^2=\left|\frac{1}{1+a\cos(\omega)+ja\sin(\omega)}\right|^2\\ &=\frac{1}{\left(1-\cos(\omega)\right)^2+a^2\sin^2(\omega)}\\ &=\frac{1}{1+a^2-2a\cos(\omega)} \end{align*}

Implementamos un código de Python que utilice el resultado obtenido para calcular SxxS_{xx}.

import numpy as np
import matplotlib.pyplot as plt

def espectro1(w, a=0.8):
    return 1/(1+a**2-2*a*np.cos(w))

La función anterior nos devuelve el valor de SxxS_{xx} para un ω\omega y un aa dado (por defecto a=0.8a=0.8).

En el siguiente bloque de código calculamos SxxS_{xx} para valores de ω\omega distribuidos de manera lineal entre π-\pi y π\pi y los graficamos.

import numpy as np
omega=np.linspace(-np.pi, np.pi, 1001, endpoint=True)

sxx1=np.empty(omega.shape)

for i, w in enumerate(omega):
    sxx1[i]=espectro1(w)

plt.plot(omega, sxx1)
plt.ylabel(r"$S_{xx}$")
plt.xlabel(r"$\omega$")
plt.grid();
<Figure size 640x480 with 1 Axes>

Ejemplo: densidad espectral de energía de una señal cuadrada

Determine la DTFT y el espectro de densidad de energía de la señal:

x(n)={A,0nL10,c.o.c.x(n)=\left\{ \begin{align*} A, &\quad 0\leq n \leq L-1\\ 0, &\quad \text{c.o.c.} \end{align*} \right.

La DTFT resulta:

X(ω)=n=x(n)ejωn=An=0L1ejωn=An=0L1(ejω)n=A1ejωL1ejω=AejωL/2ejωL/2ejωL/2ejωL/2ejω/2ejω/2ejω/2ejω/2=AejωL/2jω/2sin(ωL/2)sin(ω/2)=Aejω(L1)/2sin(ωL/2)sin(ω/2)\begin{align*} X(\omega)&=\sum_{n=-\infty}^{\infty}x(n)e^{-j\omega n} = A\sum_{n=0}^{L-1}e^{-j\omega n}\\ & =A\sum_{n=0}^{L-1}\left(e^{-j\omega}\right)^n=A\frac{1-e^{-j\omega L}}{1-e^{-j\omega}} \\ & =A\frac{e^{-j\omega L/2}e^{j\omega L/2}-e^{-j\omega L/2}e^{-j\omega L/2}}{e^{-j\omega /2}e^{j\omega /2}-e^{-j\omega /2}e^{-j\omega /2}} \\ & =A\frac{e^{-j\omega L/2}}{-j\omega /2}\frac{\sin(\omega L/2)}{\sin(\omega /2)}\\ & =Ae^{-j\omega (L-1)/2}\frac{\sin(\omega L/2)}{\sin(\omega /2)}\\ \end{align*}

El espectro de densidad de energía resulta:

Sxx=X(ω)2=A2sin2(ωL/2)sin2(ω/2)S_{xx}=|X(\omega)|^2 = A^2 \frac{\sin^2(\omega L/2)}{\sin^2(\omega/2)}
def espectro2(w, L=10, A=1):
    sxx=(A**2)*(np.sin(w*L/2)**2)/(np.sin(w/2)**2)
    xw=A*(np.exp(-1j*w*(L-1)/2))*np.sin(w*L/2)/np.sin(w/2)
    return sxx, np.abs(xw), np.angle(xw)

omega=np.linspace(-np.pi, np.pi, 1000, endpoint=True) # uso mil puntos y evito la evaluación en w=0, que queda dividiendo por 0

shape=omega.shape[0], 3 # las tuplas se definen con comas, el paréntesis no es necesario
sxx21=np.empty(shape)
sxx22=np.empty(shape)
sxx23=np.empty(shape)

for i, w in enumerate(omega):
    sxx21[i,:]=espectro2(w, L=10)
    sxx22[i,:]=espectro2(w, L=20)
    sxx23[i,:]=espectro2(w, L=100)
fig, ax=plt.subplots(3,1, figsize=(6,6))
ax[0].set_title("Espectro de densidad de energía")
ax[0].plot(omega, sxx21[:,0], label="L=10")
ax[0].legend()
ax[1].plot(omega, sxx22[:,0], label="L=20")
ax[1].legend()
ax[2].plot(omega, sxx23[:,0], label="L=100")
ax[2].legend()
ax[2].set_xlabel(r"$\omega$")
for i in ax:
    i.grid()
<Figure size 600x600 with 3 Axes>
fig, ax=plt.subplots(3,1, figsize=(6,6))
ax[0].set_title("Espectro de amplitud")
ax[0].plot(omega, sxx21[:,1], label="L=10")
ax[0].legend()
ax[1].plot(omega, sxx22[:,1], label="L=20")
ax[1].legend()
ax[2].plot(omega, sxx23[:,1], label="L=100")
ax[2].legend()
ax[2].set_xlabel(r"$\omega$")
for i in ax:
    i.grid()
<Figure size 600x600 with 3 Axes>
fig, ax=plt.subplots(3,1, figsize=(6,6))
ax[0].set_title("Espectro de fase")
ax[0].plot(omega, sxx21[:,2], label="L=10")
ax[0].legend()
ax[1].plot(omega, sxx22[:,2], label="L=20")
ax[1].legend()
ax[2].plot(omega, sxx23[:,2], label="L=100")
ax[2].legend()
ax[2].set_xlabel(r"$\omega$")
for i in ax:
    i.grid()
<Figure size 600x600 with 3 Axes>

Podemos notar que pendiente abrupta en la fase se da en ±2πL\pm \frac{2\pi}{L} y que los máximos de amplitud son valores iguales a L.AL.A.

Propiedades de la DTFT

a1x1(n)+a2x2(n)a1X1(ω)+a2X2(ω)a_1 x_1(n)+a_2x_2(n) \longleftrightarrow a_1X_1(\omega)+a_2X_2(\omega)
x(nk)ejωkX(ω)x(n-k) \longleftrightarrow e^{-j\omega k}X(\omega)
x(n)X(ω)x(-n) \longleftrightarrow X(-\omega)
x1(n)x2(n)X1(ω).X2(ω)x_1(n)*x_2(n) \longleftrightarrow X_1(\omega).X_2(\omega)
ejω0nx(n)X(ωω0)e^{j\omega_0n}x(n) \longleftrightarrow X(\omega-\omega_0)
x(n)cosω012[X(ω+ω0)+X(ωω0)]x(n)\cos\omega_0 \longleftrightarrow \frac{1}{2}\left[X(\omega+\omega_0)+X(\omega-\omega_0)\right]
x1(n).x2(n)12πππX1(λ)X2(ωλ)dλx_1(n).x_2(n) \longleftrightarrow \frac{1}{2\pi}\int_{\pi}^{\pi}X_1(\lambda)X_2(\omega-\lambda)d\lambda
nx(n)dX(ω)dωnx(n) \longleftrightarrow \frac{dX(\omega)}{d\omega}
rx1x2(n)X1(ω)X2(ω)r_{x_1x_2}(n)\longleftrightarrow X_1(\omega)X_2(-\omega)
rxx(l)Sxx(ω)r_{xx}(l)\longleftrightarrow S_{xx}(\omega)

El espectro de densidad de energía de una señal de energía finita es la transformada de Fourier en Tiempo Discreto de su secuencia de autocorrelación.

DTFT de Señales Periódicas

Si se admiten como posibles transformadas los impulsos, puede ampliarse la clase de funciones en tiempo que son transformables Fourier para incluir a las funciones periódicas.

Consideremos la señal periódica senoidal

x(n)=ejω0nx(n)=e^{j\omega_0}n

Su transformada de Fourier (calculada aplicando la definición) resulta:

X(ω)=n=ejω0nejωn=n=ej(ωω0)nX(\omega)=\sum_{n=-\infty}^{\infty}e^{j\omega_0n}e^{j\omega n}=\sum_{n=-\infty}e^{-j(\omega-\omega_0)n}

Puede probarse que resulta un tren de impulsos de la forma:

X(ω)=2πl=δ(ωω02πl)X(\omega)=2\pi\sum_{l=-\infty}^{\infty}\delta(\omega-\omega_0-2\pi l)

Para ver esto, basta con calcular la Transformada Inversa y verificar que es igual a x(n)x(n). En efecto

12ππX(ω)ejωndω=ππl=δ(ωω02πl)ejωndw=ππejωnδ(ωω02πl)dω=ej(ω0+2πl)n=ejω0n=x(n)\begin{align*} \frac{1}{2}\int_{-\pi}^{\pi}X(\omega)e^{j\omega n}d\omega&=\int_{-\pi}^{\pi}\sum_{l=-\infty}^{\infty}\delta(\omega-\omega_0-2\pi l)e^{j\omega n}dw\\ &=\int_{-\pi}^{\pi}e^{j\omega n}\delta(\omega-\omega_0-2\pi l)d\omega\\ &=e^{j(\omega_0+2\pi l)n}\\ &=e^{j\omega_0 n}\\ &=x(n) \end{align*}

En el pasaje del segundo renglón se usó el hecho de que siempre existe un indice ll de manera que la frecuencia (ω0+2πl)(\omega_0+2\pi l) cae en el intervalo [π,π][\pi, -\pi].

Consideremos ahora una señal x(n)x(n) periódica con período NN, representada con su Serie de Fourier

x(n)=k=0N1ckej2πknNx(n)=\sum_{k=0}^{N-1}c_{k}e^{j\dfrac{2\pi kn}{N}}

Su transformada de Fourier resulta entonces:

X(ω)=2πk=0N1ckl=δ(ω2πkN2πl)X(\omega)=2\pi\sum_{k=0}^{N-1}c_k\sum_{l=-\infty}^{\infty}\delta\left(\omega\dfrac{2\pi k}{N}-2\pi l\right)

Es decir que la Transformada de Fourier de una señal periódica puede calcularse en forma directa a partir de sus coeficientes de Fourier ckc_k.

Ejemplo señal senoidal

x(n)=cosω0n=12ejω0n+12ejω0nx(n)=\cos\omega_0n=\frac{1}{2}e^{j\omega_0n}+\frac{1}{2}e^{-j\omega_0n}

La transformada de Fourier resulta entonces:

X(ω)=πl=δ(ωω02πl)+πl=δ(ω+ω02πl)X(\omega)=\pi\sum_{l=-\infty}^{\infty}\delta(\omega-\omega_0-2\pi l)+\pi \sum_{l=\infty}^{\infty}\delta(\omega+\omega_0-2\pi l)

Ejemplo tren de impulsos

x(n)=k=δ(nkN)x(n)=\sum_{k=-\infty}^{\infty}\delta(n-kN)

Los coeficientes de Fourier resultan

ck=1Nn=0N1x(n)ej2πknN=1N;kc_k=\frac{1}{N}\sum_{n=0}^{N-1}x(n)e^{-j\dfrac{2\pi k n}{N}}=\frac{1}{N}; \quad \forall k

por lo que la Transformada de Fourier resulta:

X(ω)=2πNk=0N1l=δ(ω2πkN2πl)X(\omega)=\frac{2\pi}{N}\sum_{k=0}^{N-1}\sum_{l=-\infty}^{\infty}\delta\left(\omega-\frac{2\pi k}{N}-2\pi l\right)