Universidad Simón Bolívar
Ingeniería Electrónica
SEÑALES Y SISTEMAS I
Práctica N° 4
FILTRADO Y CONVOLUCION
Preparación
Antes de asistir al laboratorio Ud. Debe:
• Leer en el Help de Matlab las siguientes funciones:
• fft, ifft,conv,filter,filtfilt,sosfilt
• Leer sobre filtros FIR e IIR
Ejercicio Nro. 1
Sea la secuencia x[n] = cos(0.25πn) + cos(0.5πn)+ cos(0.52πn). Se pide
Calcular la DFT utilizando la función matlab fft(x,N) con N=L= longitud de las
secuencia x[n] y representar su módulo para diferentes valores de número de muestras
L. Pruebe por ejemplo los siguientes valores N=16, N=32, N=64, N=128. Indique a
partir de que valor de N son distinguibles las tres frecuencias de la señal.
• ¿Cómo están relacionados los valores de L, N y la resolución en frecuencias?
• Compruebe que sucede en el espectro de la señal si una secuencia de L= 100
muestras de x[n] se rellena con ceros hasta N=128.
• Calcule la transformada inversa de la función X(w) utilizando la funcion ifft (X)
para recuperar la señal en el dominio de tiempos.
• Suponga que se desea estudiar el contenido en frecuencias usando la FFT, de la
siguiente señal.
x(t) = 0.0472*cos(2π(200)t + 1.5077) + 0.1362*cos(2π(400)t + 1.8769) + 0.4884
*cos(2π(500)t - 0.1852) +0.2942*cos(2π(1600)t -1.4488) + 0.1223*cos(2π(1700)t).
¿Cual es su frecuencia fundamental? ¿Que frecuencia de muestreo debe usarse? Estime
un valor adecuado de N para obtener suficiente precisión en frecuencias. Represente
|X(w)| y la fase de X(w) en función de w.
Ejercicio Nro. 2
Ud. labora para la división de equipos médicos de “SIEMENS” en el Dpto. de
Optimización de Procesamiento Digital de ECG y en su primer día se le encomienda
remover ciertas componentes del espectro ECG de un paciente sometido a Angioplastia
Transluminal Percutanea en el laboratorio de Cateterismo. Se le proporciona un archivo
ECG.MAT donde se encuentra un segmento ecg de 15000 muestras, el mismo fue
obtenido a una frecuencia de muestreo Fs = 1000 muestras/seg. En un primer caso se
requieren conservar las componentes hasta 50Hz y en un segundo caso es preciso
conservarlas hasta los 300Hz.
Realice las siguientes actividades:
1. Diseñe los filtros necesarios (rechazabandas y pasabajo) utilizando “fdatool”
2. Exporte coeficientes y utilice las rutinas “sosfilt”.
3. Grafique en una sola figura
9 Señal ecg proporcionada
9 Espectro señalando componentes indeseadas, utilice la rutina fftplot
suministrada (recuerde modificar fftplot para no generar una nueva figura).
9 Señal ecg filtrada (para el Caso 1: pasan todas las frecuencias hasta 50Hz)
9 Espectro de señal ecg filtrada (caso 1)
9 Señal ecg filtrada (para el Caso 2: se requieren conservar componentes hasta
los 300Hz)
9 Espectro de señal ecg filtrada (caso 2)
¿Cómo utilizar fdatool para hallar los coeficientes?
• En la línea de comandos de Matlab 7.0 escriba: fdatool y presione enter,
obtendrá la siguiente interfase de diseño (fig.1).
Fig. 1
• En el caso 1 Ud. tendrá que seleccionar un “Lowpass filter” (parte inferior
izquierda de la interfase), tendrá que decidir si escoge un filtro tipo IIR o tipo
FIR, investigue que significa esto y que implicaciones tiene. Si elige un filtro
tipo IIR, seleccione la opción “Butterworth”, y si es tipo FIR: seleccione
“Equirriple”; en ambos casos señale ventajas y desventajas.
• Para este ejemplo en específico se seleccionó: tipo: IIR-Butter (Lowpass) de
orden mínimo para: fs = 1000 y magnitudes Apass =1 y Astop = 60. Presione el
boton “Desing filter” al final y obtendrá una figura como la siguiente (fig.2):
Fig. 2
• El siguiente paso es exportar los coeficientes: Vaya al menú File->Export y
seleccione: export to: “Workspace” y export as: “Coefficients”, presione OK y
tendrá los coeficientes en el “Workspace” como se muestra en la siguiente figura
(fig.3): SOS es la matriz de coeficientes del filtro y G representa un vector de
escalamiento para cada una de las secciones del filtro, aunque no la utilizaremos
en ningún argumento.
Fig. 3
• Coloque ecgfiltrada = sosfilt(SOS,ecg), grafique los espectros de ambas señales
(“cruda” y filtrada), debería obtener una figura semejante a la siguiente(fig. 4):
Fig. 4
• Ulitice un filtro butterworth del mismo orden anterior (191) pero esta vez
programado sobre la línea de comando: [b a]=butter(191,wn) con
wn=50/500=50/(fs/2), filtre la señal ecg con la función filter y filtfilt, guarde
ambas señales, grafique con subplot en varios paneles: ecg+ecg(filter),
ecg+ecg(filtfilt) y los espectros antes y después de filtrar (una vez). Si tiene
problemas de aproximación numérica disminuya el orden del filtro.
¿Observando los ecg’s en tiempo, que ventajas tiene filtfilt sobre filter?.
Ejercicio Nro. 3 (Convolución)
Haga una función para simular una convolución contínua en Matlab que tenga como
variables de salida [y,ty] (ty, vector de tiempo de y) y como parámetros de entrada
s1,t1,s2,t2,T; donde S1 y S2 son señales de entrada, t1 y t2 sus respectivos vectores de
tiempo y T el tiempo de muestreo.