Documentos de Académico
Documentos de Profesional
Documentos de Cultura
NOTAS:
Enviar el informe del laboratorio con el siguiente nombre: Lab3 PDS Apellido Nombre.ipynb
Enviar junto con el informe los archivos adicionales generados y descargados. Todo esto debe ir en un archivo
comprimido con el siguiente nombre: Lab3 PDS Apellido Nombre.zip
1. La fecha.
2. Festivo, indicando que ese dı́a no se transó.
3. TCRM, en COP.
Para cargar este archivo a una matriz podemos utilizar el siguiente comando:
import pandas as pd
data=pd.read excel("historiatrm.xls")
La señal que nos interesa está en la columna “TCRM” mientras que las fechas nos servirán para graficar y hacer
análisis, para ello las extraemos de la siguiente manera:
senal=data['TCRM']
fechas=data['Fecha']
1
2. Año, desde 1978 hasta 2011.
3. Valor de la precipitación (en mm de precipitación).
Para cargar este archivo a una matriz podemos utilizar el siguiente comando:
import pandas as pd
data=pd.read csv('archivoslab3/data precipitacion.csv')
La señal que nos interesa está en la columna “prec” mientras que la fecha nos servirán para graficar y hacer análisis,
para ello las extraemos y generamos de la siguiente manera:
senal=data['prec']
En este caso se debe generar el vector de fechas para hacer análisis de la siguiente manera:
2. Visualice algunos de los datos usando las siguientes instrucciones en celdas separadas.
data.head()
data.tail()
plt.figure(figsize=(15,8))
plt.plot(fechas,senal)
plt.grid()
plt.show()
plt.hist(senal[np.isnan(senal)!=True],50)
plt.show()
from datetime import datetime # Para generar un objeto tipo datetime, que almacena fechas en Python
indiceD=fechas == datetime(2016,8,12)
senalD = senal[indiceD].values[0]
2
indices2000 = fechas.dt.year == 2000
senal2000 = senal[indices2000]
donde L es el número de puntos usados (orden del filtro), x[n] es la señal de entrada y y[n] es la señal de salida.
Para generar los coeficientes de un filtro de media móvil con L variable en Python, se puede utilizar el siguiente
código:
coefs=np.ones(L)/float(L)
num=np.zeros(L)
num[0]=1.0/L
num[-1]=-1.0/L
den=np.zeros(L)
den[0]=1
den[1]=-1
Los ceros están determinados por las raı́ces de la ecuación z L − 1 = 0, es decir, z L = 1. Las raı́ces se pueden
encontrar con base en que ej2πk = 1 para cualquier k entero. Las raı́ces serán:
zk = ej2πk/L (3)
2.1. Procedimiento
1. Diseñe un filtro de media móvil con diferentes valores de L, calcule la respuesta de la señal ante dicho filtro
y grafique la señal resultante (se puede utilizar el vector de tiempos generado anteriormente). ¿Con cual
considera que se visualiza y se podrı́a analizar mejor la información?
Tip: Para calcular la salida se usa la convolución:
3
from ztrans import *
4. Utilice la función impz para graficar y analizar la respuesta al impulso y al escalón del filtro de media móvil.
¿Qué me indica la respuesta al impulso? Hágalo para L = 7 y L = 30. Tip: para usarla utilice el siguiente
comando:
impz(num,den)
5. Utilice la función mfreqz para graficar y analizar la respuesta en frecuencia del filtro de media móvil. ¿Qué
tipo de filtro es? ¿Cómo es su respuesta en fase? Compare los resultados con L = 7 y L = 30.
Tip: para usarla utilice el siguiente comando:
mfreqz(num,den)
difcoefs=[1, -1]
num=[1, -1]
den=[1, 0]
1. Mediante la función de convolución utilizada anteriormente, calcule la derivada de la señal con el filtro de
primera diferencia, grafique y analice brevemente la señal resultante. ¿Qué me indica esta señal?
2. Utilice la función impz para graficar y analizar la respuesta al impulso y al escalón del filtro de primera
diferencia. ¿Qué me indica la respuesta al impulso?
3. Utilice la función mfreqz para graficar y analizar la respuesta en frecuencia del filtro de primera diferencia.
¿Qué tipo de filtro es? ¿Cómo es la respuesta de fase?
4. Conclusiones
Realice conclusiones generales sobre la práctica.
4
5. Bonus
Implemente una interfaz gráfica en el Notebook que permita seleccionar un rango de fechas a analizar, si se quiere
aplicar un filtro, el tipo de filtro a aplicar y el orden en el caso del filtro de media.
Tip: puede ayudarse con la siguiente páginas
http://jupyter.org/widgets
https://blog.dominodatalab.com/interactive-dashboards-in-jupyter/
http://ipywidgets.readthedocs.io/en/latest/examples/Using%20Interact.html