<jupyter_start><jupyter_text>Procesamiento Digital de Señales Primeras pruebas hacia el análisis espectral <NAME> Comenzamos a tomar contacto con la transformada discreta de Fourier (DFT) y su implementación eficiente la FFT. Aprovechamos la oportunidad para presentar una aplicación de los notebooks de Jupyter y su potencial para presentar resultados de forma ordenada y elegante.<jupyter_code># Módulos para Jupyter
import warnings
warnings.filterwarnings('ignore')

import numpy as np
import matplotlib as mpl
#%%  Inicialización de librerías
# Setup inline graphics: Esto lo hacemos para que el tamaño de la salida, 
# sea un poco más adecuada al tamaño del documento
mpl.rcParams['figure.figsize'] = (14,7)

# Módulos para mi script propiamente dicho
import numpy as np
import matplotlib.pyplot as plt
from scipy.fftpack import fft
from pdsmodulos import print_markdown, print_subtitle, print_latex<jupyter_output><empty_output><jupyter_text>Podemos intercalar bloques de texto y código casi sin restricciones. En este caso el código de inicialización lo dejamos resuelto en el bloque anterior.<jupyter_code>nn = 1000
fs = 1000
tt = np.arange(0.0, nn/fs, 1/fs)
ff = np.arange(0.0, fs, nn/fs)

# ahora podemos simular que los canales están desconectados,
# o que una señal de ruido blanco, normalmente distribuido ingresa al ADC.
canales_ADC = 1
a0 = 1 # Volt
f0 = nn/4 * fs/nn

# dd = np.sin(2*np.pi*f0*tt)
dd = np.random.uniform(-np.sqrt(12)/2, +np.sqrt(12)/2, size = [nn,canales_ADC])
# dd = np.random.normal(0, 1.0, size = [N,canales_ADC])

DD = fft( dd, axis = 0 )

bfrec = ff <= fs/2

plt.figure()
plt.plot( ff[bfrec], np.abs(DD[bfrec]) )
plt.ylabel('Módulo [¿Unidades?]')
plt.xlabel('Frecuencia [Hz]')

plt.figure()
plt.plot( ff[bfrec], np.abs(DD[bfrec])**2 )
plt.ylabel('Densidad de Potencia [¿Unidades?]')
plt.xlabel('Frecuencia [Hz]')

plt.show()<jupyter_output><empty_output><jupyter_text>Teorema de ParsevalPara practicar te dejo las siguientes consignas:1. Editá este notebook y agregá una breve explicación de cómo aplicarías el teorema de Parseval a las señales que te presento más arriba en este mismo notebook.2. Escribí la ecuación del teorema en Latex, podés copiarla de la bibliografía.$ \sum\limits_{n=0}^{N-1} ?? = \frac{1}{N} \sum\limits_{k=0}^{N-1} ?? $3. En un bloque de código, verificá que dicho teorema se cumple, con alguna experimentación con señales que vos generes.<jupyter_code># Algo que podría resultarte útil alguna vez es generar Markdown en tu propio código, tal vez
# para presentar una tabla, resultado, etc. Acá te dejo unos ejemplos
print_subtitle('Teorema de Parseval (generado dinámicamente desde código)')

print_markdown('Te dejo unas funciones que te pueden servir si alguna vez quisieras generar Markdown desde tus scripts.')
# ojo que la "r" antes del string es IMPORTANTE!
print_latex(r'\sigma^2 = \frac{s+2}{p+1}')

## Escribí tu respuesta a partir de aquí ...<jupyter_output><empty_output>