Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Hace ya un tiempo que publicara en esta misma revista el diseño de un filtro de banda eliminada
analógico activo y ya era hora de que explicara cómo puede hacerse esto mismo en forma digital.
Este trabajo consiste en el desarrollo de un software en el entorno Matlab que sea capaz de eliminar
una frecuencia específica y lo haré a través de un ejemplo; en este caso pretendo eliminar el
zumbido de 50Hz, aunque con mínimas modificaciones numéricas puede aplicarse a cualquier
frecuencia no deseada dentro del rango de audio.
Este tutorial está destinado no sólo a programar el filtro sino también a mostrar su funcionamiento
mediante su simulación en Matlab. Para conseguir este objetivo he compuesto una señal con sólo
dos frecuencias pero se puede aplicar a una señal multifrecuencia cualquiera en el rango de audio,
incluso una pieza musical con una contaminación de zumbido o de cualquier otra señal no deseada
con sólo introducir dicha frecuencia en el programa.
1.- La señal: la señal que propongo es la suma de una sinusoide de 100 Hz con una de 50 Hz y es
esta última la que quiero eliminar. La señal propuesta en el lenguaje Matlab sería,
1
3.- Ceros y polos: habrá que determinar ahora los ceros y los polos de la función transferencia que
sería el 2º paso y lo realizo mediante dos exponenciales de la siguiente manera:
Para ubicar los polos y ceros en el “plano complejo z” referidos al círculo unitario utilizo la función
“zplane” de Matlab aunque dada la “poca gracia estética” de esta función del entorno, he diseñado
mi propia función “pinta_z_p” sólo para ilustrar este tutorial a fin de que la gráfica fuera más
presentable, aunque esta última función no forma parte de este tutorial.
Para ejecutar la función zplane tanto la matriz de los polos como la de los ceros se requiere de una
transposición, como es dable observar de seguido, siempre en el lenguaje Matlab:
% Diagrama de polos y ceros del filtro
zplane(z.', p.'); % plano de ceros y polos del filtro notch
a = poly(p); % polos
b = poly(z); % ceros
2
En la Fig. 2, se observa la proximidad entre los polos y ceros de la transferencia que se debe a la
elección del ancho de ranura ar=0.08, si se aumentara este ancho, por ejemplo ar=0.2 los polos en
la Fig. 2 se irían desplazando apreciablemente hacia el centro del círculo, pero la señal filtrada se
vería seriamente comprometida por el ancho excesivo de filtrado.
3.- Respuesta del filtro: La respuesta del filtro resulta de la implementación de la función Matlab
en su versión,
“[h,f] = freqz(b,a,N/2+1,fs)”
También podría haberse utilizado la versión “freqz(b,a,fs)” que nos hubiera dado en forma
directa incluso el diagrama de fase, ejercicio que dejo para el lector.
De esta forma resulta un filtro “muy agudo” cuya característica gráfica exhibo en la Fig. 3.
Como dije antes, a fin de afectar lo menos posible a la señal el ancho de eliminación o ranura de
eliminación será muy estrecho, ar=0.08, como se observó en la especificación del filtro.
5.- Proceso de filtrado: Corresponde ahora mostrar el proceso completo de filtrado a través de
la simulación en Matlab, para conseguir el filtrado usaremos la siguiente función “u” de Matlab y
la graficamos en este paso:
% La señal filtrada
u = filter(b,a,y); % señal filtrada usa los coef b,a de los polos y ceros
plot(1000*t,u) % Gráfica en el tiempo. 1000*t --> t(mili-segundos)
% que es como gradúo el eje x.
En la Fig. 4 se observa en la parte superior la señal original y en la parte inferior la señal recuperada
3
mediante filtrado notch.
6.- Conclusiones: En la señal filtrada salta a la vista que en el intervalo de tiempo entre 20 y 40
ms y sucesivos caben exactamente dos ciclos completos de la señal recuperada y una vez superado
el tiempo de estabilización de los primeros ciclos la duración de un ciclo es de 10 ms, es decir
f=1/0.010=100 Hz, es así que aparece recuperada nuestra componente de f2=100 Hz de la señal
compuesta original. En el caso de una señal multifrecuencia, como una pieza musical por ejemplo,
recuperaríamos toda la señal excepto la frecuencia perturbadora que quedará eliminada por el filtro.
Se observa que la señal filtrada prácticamente conserva su amplitud original entre -1 y +1 como se
ve en la señal propuesta donde la componente deseada f2 = 100 Hz presenta amplitud unitaria:
“y = 0.5*sin(2*pi*f1*t)+sin(2*pi*f2*t)”.
El objetivo de este tutorial ha sido demostrativo de allí la elección de una señal lo más sencilla
posible para poder observar claramente el proceso de filtrado digital, una vez simulado el sistema
como muestro en la Fig. 4.
De haber impuesto un ancho de eliminación mayor la señal filtrada perdería amplitud de forma
apreciable en la medida que el filtro “machaca” también la componente útil de la señal.
(2) Signal Processing First.- J. McClellan – R. Schafer – M. Yoder - Pearson Education, Inc. 2003
___