TECNOLOGICO NACIONAL DE MEXICO CAMPUS CULIACAN Maestría en Ciencias de la Ingeniería 2do Semestre Materia: Procesamiento Digital de Señales Profesor: Dr. Modesto Guadalupe Medina Meléndrez Alumno: Ing. Julio Edel Angulo Ríos Asunto: Practica 5: Diseño de filtros FIR Junio de 2015 1
Introducción La respuesta de un filtro digital ante una señal de entrada puede calcularse con la sumatoria de convolución o con la implementación de la ecuación en diferencias. Para el caso de los filtros digitales FIR, la sumatoria de convolución y la ecuación en diferencias del sistema están relacionados como:
Por lo que, la respuesta al impulso del sistema corresponde de manera exacta a los coeficientes de la ecuación en diferencias del sistema. Los filtros digitales FIR son utilizados para eliminar ruidos o señales no deseadas que ocurren a frecuencias diferentes a las frecuencias de las señales deseadas. En el procesamiento digital de señales se analizan secuencias de entrada de longitud finita. Considerando que la secuencia analizada, x[n], es una señal temporal con duración Tp y que la frecuencia de muestreo es f m, se puede deducir que el periodo de muestreo es Tm=1/fm y que el número de muestras a analizar es de Nm=Tp/Tm=fmTp. De acuerdo al criterio de Nyquist, la frecuencia de muestreo debe ser mayor a dos veces la frecuencia máxima en la señal a procesar, esto es fm>2fmax. Entonces, una vez establecida la frecuencia de muestreo f m,la frecuencia f de la señal a procesar debe caer dentro del rango 0
0 ≤ ω ≤ π rad .
La secuencia finita que se obtiene de la DFT
aplicada sobre la secuencia discreta x[n], corresponden al espectro en 0 Hz ≤ f ≤ f max frecuencia de x[n] en el intervalo de (0 a π rad ), pero linealmente mapeado en los elementos
0≤k ≤ N /2 .
Objetivos Implementar un filtro pasabanda FIR de selectividad fina y validar su funcionamiento.
Materiales: Software MatLab. 2
Equipo: Computadora.
3
Procedimiento 1. Genere una señal discreta como la suma de 10 ondas cosenoidales de diferente frecuencia. La duración de la señal es frecuencia de muestreo es muestras es
f m=200 Hz
N m=f m x T p=200.
cos(2 πn f s /N m)
para
p=¿ 1 seg , y la T¿
, por lo que, el número de
Cada onda a sumar se genera como
n=0 :1: N m −1
cada una de las señales a sumar (
, donde
f s=[0:10 :99 ]
fs
es la frecuencia de
).
Código en Matlab: %%%%Practica 5: Diseño de filtro FIR%%%%%% %Amplitud A=1; %Numero de muestras Nm=200; %Vector n n=0:1:(Nm-1); %Las 10 señales cosenoidales suma=0; for fs=0:10:99 suma=suma+A*cos((2*pi*n*fs)/Nm); end stem(n,suma)
Grafica de la señal discreta:
4
2. ¿Puede observar el contenido de las 10 señales senoidales contenidas? No se puede observar las 10 señales en la gráfica generada.
El procedimiento siguiente sirve para extraer la señal a la frecuencia normalizada de 30 Hz, utilizando un filtro FIR pasabanda. Este procedimiento se repetirá cambiando el orden del filtro, hasta que el ancho de la banda de paso incluya solo una de las frecuencias de la señal original. 3. Generar un filtro FIR pasabanda con la instrucción fir1 de Matlab y adoptando cierto orden para el filtro. La frecuencia de corte inferior normalizada a 1 será de 0.28 y la frecuencia de corte superior normalizada a 1 de 0.32. Grafique la respuesta al impulso y la respuesta en frecuencia de dicho filtro. Código en Matlab: %Generacion de filtro FIR b=fir1(40,[0.28 0.32]); %Respuesta al impulso del filtro FIR figure(1),impz(b,1,Nm,200) %Respuesta en frecuencia del filtro FIR figure(2),freqz(b,1)
Gráfica de la respuesta al impulso:
5
Gráfica de la respuesta en frecuencia:
4. Implemente el filtro FIR pasabanda generado y filtre la señal original. 6
Código en Matlab: %Implementacion del filtro FIR pasabanda y=filter(b,1,suma);
5. Grafique el contenido en frecuencia de la señal original y de la señal filtrada. Código en Matlab: %Contenido en frecuencia de la xsuma=fft(suma,200); magxsuma=abs(xsuma); magxsuma=fftshift(magxsuma); m=-100:1:99; figure,stem(m,magxsuma) title('Contenido en frecuencia %Contenido en frecuencia de la xY=fft(y,200); magxY=abs(xY); magxY=fftshift(magxY); figure(2),stem(m,magxY) title('Contenido en frecuencia
señal original
de la señal original') señal filtrada
de la señal filtrada')
Gráfica del contenido en frecuencia de la señal original
7
Gráfica del contenido en frecuencia de la filtrada
6. ¿La señal filtrada es una señal senoidal pura (sin otras frecuencias)? Se puede considerar que la señal filtrada es una señal senoidal pura, ya que en su grafica de su contenido en frecuencia, la señal de 30 Hz se encuentra bien 8
diferenciada con respecto a las demás frecuencias que se encuentran muy atenuadas.
7. En caso negativo volver a introducir un orden diferente y repetir los pasos del 3 al 4, hasta que la respuesta a la pregunta 6 sea afirmativa.
Conclusiones Con la ayuda de Matlab se pudo hacer y simular un filtro FIR, lo cual es relativamente fácil. Se pudo comprobar que es imposible construir un filtro ideal, ya que las frecuencias que no se desean presentan una atenuación, pero nunca se eliminan. Además en un filtro FIR es muy importante el grado del mismo en el comportamiento que presentará, ya que a ciertos grados del filtro se presentan mejores atenuaciones a frecuencias no deseadas, aunque siempre se busca encontrar el menor grado ya que al momento de su implementación se requerirá menores recursos hardware.
9