Uploaded by Vergas Lleras

Pantoja Urbano Lab3PDS

advertisement
1
PROCESAMIENTO DIGITAL DE SEÑALES
LABORATORIO 3 – FILTROS IRR Y FIR
Francisco José Pantoja Zapata
Pontificia Universidad Javeriana Cali
Ingeniería Electrónica
Cali, Colombia
pantojazapata@javerianacali.edu.co
Resumen – En este informe de laboratorio, se exponen los
resultados de aplicar las técnicas de filtros FIR, específicamente
filtros por ventanas y la aproximación de Chebyshev, con el fin de
eliminar el ruido provocado por insectos, en una grabación del
canto de un ave. Además, se realiza el mismo procedimiento, pero
con ayuda de un filtro IRR con la técnica de transformación
bilineal.
I.
Cristian Urbano
Pontificia Universidad Javeriana Cali
Ingeniería Electrónica
Cali, Colombia
@javerianacali.edu.co
3.
Realizar el filtro usando la tecnología digital más adecuada
para la aplicación bajo consideración.
El paso 1 es altamente dependiente de la aplicación y de los
detalles suministrados por el usuario. El paso 2 se realiza
utilizando métodos de aproximación y optimización
matemáticos. El paso 3 depende de la tecnología hardware y
software utilizada para construir el filtro
INTRODUCCIÓN
Los filtros digitales se utilizan ampliamente en el
tratamiento digital de señales provenientes de diversas
aplicaciones, que incluyen tratamiento y transmisión de señales
de voz, datos y vídeo entre otras. Los filtros LTI (Lineales e
invariantes en el tiempo) son los que se utilizan frecuentemente
debido a la simplicidad en el análisis, diseño e implementación.
Un filtro digital LTI puede identificarse de forma ´única en el
dominio tiempo/espacio por su respuesta impulsiones h(n),
(donde, n es un ´índice entero que se utiliza como variable
independiente). De forma alterna, los filtros digitales pueden
caracterizarse de forma ´única en el dominio frecuencial por su
respuesta en frecuencia H(ω) (donde, ω es la variable de
frecuencia de valor real en radianes). Los filtros digitales LTI
son de dos tipos: Filtros FIR (Finite-duration Impulse
Response, para los cuales la respuesta impulsional h(n) es
diferente de cero para un número finito de muestras; y filtros
IIR (Infinite-duration Impulse Response) cuya respuesta
impulsional presenta un número infinito de muestras diferentes
de cero. En el caso FIR las muestras de la secuencia h(n)
corresponden directamente a los coeficientes de los filtros; para
el caso IIR, los parámetros encontrados corresponden a los
coeficientes de una ecuación de diferencia que incluye términos
de retroalimentación. El diseño de filtros digitales se realiza
típicamente en tres pasos:
1.
Convertir las restricciones de diseño deseadas en
especificaciones precisas sobre las respuestas de magnitud
y fase deseadas, tipo de filtro (FIR o IIR), orden del filtro,
error tolerable o criterio de error.
2.
Encontrar un filtro FIR o IIR que se aproxime a las
especificaciones de diseño del paso anterior, tal que la
respuesta en frecuencia del filtro obtenido se ajuste mejor
a esas especificaciones de diseño de acuerdo con un criterio
de error matemático.
II. OBJETIVOS
1.
Diseñar filtros digitales FIR utilizando las técnicas de
Ventanas y aproximación de Chebyshev.
2.
Diseñar filtros digitales IIR utilizando las técnicas de
transformación bilineal
III. PROCEDIMIENTO
A. Diseño del filtro FIR por el método de ventanas:
Para diseñar un filtro FIR (respuesta finita al impulso) por
el método de ventanas, debemos fijarnos primero, en las
frecuencias que deseamos filtrar. Para ello es útil realizar un
análisis en el espectro frecuencial del audio que contiene el
canto del ave. Para ello, utilizamos Python, con la librería
“librosa” luego encontramos la transformada rápida de Fourier
de la señal de audio, normalizamos los ejes e imprimimos. A
continuación, se muestran los códigos utilizados:
Fig. 1. Librerías utilizadas en Python.
2
Como podemos ver en la figura 3.b., la señal contiene
múltiples frecuencias en el espectro. Podemos analizar
directamente que las frecuencias más interesantes para analizar,
según algunas fuentes, la mayoría del canto de las aves se sitúan
en frecuencias entre los 1000Hz a 7000Hz [1]. Esto significa
entonces que, para realizar el filtrado, podemos hacer uso de
una ventana o filtro de paso bajo con frecuencia de corte den
aproximadamente 7000Hz, y posteriormente un filtro de paso
alto con frecuencia de corte de 1000Hz. En otras palabras,
estamos creando un filtro pasa bandas.
Fig. 2. Código para hacer el análisis de la señal de audio.
Al ejecutar el código anterior, se obtienen entonces los
siguientes resultados en frecuencia:
Fig. 3.c. Espectrograma del audio.
Podemos corroborar lo anteriormente mencionado, yendo
directamente al espectrograma implementado en Python, donde
se observa cómo las frecuencias cambian en el tiempo, pero aun
así se observa con claridad que se tiene gran información en las
anteriormente mencionadas. También se observa cómo se tiene
un gran ruido para las frecuencias entre 8kHz y 9kHz
aproximadamente.
Fig. 3.a. Línea de tiempo del audio a filtrar.
Para realizar el filtro, entonces realizamos primero la
definición matemática de la ventana ideal que utilizaremos
como base o kernel de la ventana que posteriormente
diseñaremos.
Filtro Pasa bajas:
Primero, tenemos un filtro pasa bajas, que sabemos tiene
respuesta en frecuencia:
𝐻𝐻𝑑𝑑 (πœ”πœ”) = οΏ½1 · 𝑒𝑒
0
−𝑗𝑗𝑗𝑗(𝑀𝑀−1)
2
,
,
πœ”πœ”π‘π‘ ≤ πœ”πœ” ≤ πœ”πœ”π‘π‘
𝑒𝑒𝑒𝑒 π‘œπ‘œπ‘œπ‘œπ‘œπ‘œπ‘œπ‘œ 𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐
Donde M es el número de muestras de la ventana y πœ”πœ”π‘π‘ es la
frecuencia de corte del filtro.
Podemos entonces representar el filtro en el dominio del
tiempo mediante la transformada inversa de Fourier:
Fig. 3.b. Magnitud de las frecuencias contenidas en el audio.
β„Žπ‘‘π‘‘ (𝑛𝑛) =
1 πœ”πœ”π‘π‘ 𝑗𝑗𝑗𝑗�𝑛𝑛−𝑀𝑀−1οΏ½
2 𝑑𝑑𝑑𝑑
οΏ½ 𝑒𝑒
2πœ‹πœ‹ −πœ”πœ”π‘π‘
3
β„Žπ‘‘π‘‘ (𝑛𝑛) =
𝑀𝑀 − 1
οΏ½οΏ½
𝑀𝑀 − 1
2
(1)
,
∀𝑛𝑛, 𝑛𝑛 ≠
𝑀𝑀 − 1
2
πœ‹πœ‹ �𝑛𝑛 −
οΏ½
2
𝑀𝑀 − 1
πœ”πœ”πΆπΆ
β„Žπ‘‘π‘‘ (𝑛𝑛) =
,
𝑛𝑛 =
πœ‹πœ‹
2
sin οΏ½πœ”πœ”π‘π‘ �𝑛𝑛 −
Filtro Pasa altas:
Ahora, la definición de la ventana para un filtro pasa altas:
−𝑗𝑗𝑗𝑗(𝑀𝑀−1)
2
1 · 𝑒𝑒
,
−𝑗𝑗𝑗𝑗(𝑀𝑀−1)
(πœ”πœ”)
οΏ½
𝐻𝐻𝑑𝑑
=
2
1 · 𝑒𝑒
,
0
,
− πœ‹πœ‹ ≤ πœ”πœ” ≤ −πœ”πœ”π‘π‘
πœ”πœ”π‘π‘ ≤ πœ”πœ” ≤ πœ‹πœ‹
𝑒𝑒𝑒𝑒 π‘œπ‘œπ‘œπ‘œπ‘œπ‘œπ‘œπ‘œ 𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐
Que tiene respuesta en frecuencia:
β„Žπ‘‘π‘‘ (𝑛𝑛) =
−πœ”πœ”π‘π‘
πœ‹πœ‹
𝑀𝑀−1
𝑀𝑀−1
1
οΏ½οΏ½
𝑒𝑒 𝑗𝑗𝑗𝑗�𝑛𝑛− 2 οΏ½ 𝑑𝑑𝑑𝑑 − οΏ½ 𝑒𝑒 𝑗𝑗𝑗𝑗�𝑛𝑛− 2 οΏ½ 𝑑𝑑𝑑𝑑�
2πœ‹πœ‹ −πœ‹πœ‹
πœ”πœ”π‘π‘
𝑀𝑀 − 1
οΏ½οΏ½
− sin οΏ½πœ”πœ”π‘π‘ �𝑛𝑛 −
2
(𝑛𝑛)
β„Žπ‘‘π‘‘
,
=
𝑀𝑀 − 1
πœ‹πœ‹ �𝑛𝑛 −
οΏ½
2
β„Žπ‘‘π‘‘ (𝑛𝑛) = 1 −
πœ”πœ”πΆπΆ
,
πœ‹πœ‹
∀𝑛𝑛, 𝑛𝑛 ≠
𝑛𝑛 =
𝑀𝑀 − 1
(2)
2
𝑀𝑀 − 1
2
Al normalizar:
πœ”πœ”π‘π‘ =
πœ”πœ”π‘π‘1 =
πœ”πœ”π‘π‘2 =
2πœ‹πœ‹οΏ½π‘“π‘“π‘π‘ + Δ𝑓𝑓 οΏ½
,
𝑓𝑓𝑠𝑠
2πœ‹πœ‹(1π‘˜π‘˜π‘˜π‘˜π‘˜π‘˜ − 0.125π‘˜π‘˜π‘˜π‘˜π‘˜π‘˜)
= 2πœ‹πœ‹(0.0198) = 0.125π‘Ÿπ‘Ÿπ‘Ÿπ‘Ÿπ‘Ÿπ‘Ÿ/𝑠𝑠
44.1π‘˜π‘˜π‘˜π‘˜π‘˜π‘˜
Para cumplir con los requisitos, podemos notar que es posible
usar una ventana Hanning, pues tiene una atenuación de 44dB
en la banda de rechazo, como vemos en la tabla 1.
Tabla 1. Características de las ventanas más comunes.
Procedemos a calcular entonces el número de muestras de la
ventana así:
Δπœ”πœ” = 2πœ‹πœ‹Δ𝑓𝑓
Δ𝑓𝑓 =
𝑀𝑀 − 1
𝑀𝑀 − 1
οΏ½οΏ½ sin οΏ½πœ”πœ”π‘π‘2 �𝑛𝑛 −
οΏ½οΏ½
2
2
(3)
−
𝑀𝑀 − 1
𝑀𝑀 − 1
πœ‹πœ‹ �𝑛𝑛 −
πœ‹πœ‹ �𝑛𝑛 −
οΏ½
οΏ½
2
2
β„Žπ‘‘π‘‘ =
πœ”πœ”πΆπΆ1 πœ”πœ”πΆπΆ2
−
,
πœ‹πœ‹
πœ‹πœ‹
𝑀𝑀 − 1
2
𝑛𝑛 =
𝑀𝑀 − 1
2
Como podemos observar en la ecuación (3), es posible
implementar directamente un filtro ideal pasabandas con dos
filtros ideales pasa bajas, con frecuencias de corte 𝑓𝑓𝑐𝑐1 y 𝑓𝑓𝑐𝑐2 . [2]
Parámetros del filtro:
Para este caso, hemos decidido implementar un filtro con una
frecuencia de paso superior de 𝑓𝑓𝑝𝑝𝑠𝑠 = 7π‘˜π‘˜π‘˜π‘˜π‘˜π‘˜, una frecuencia de
paso inferior de 𝑓𝑓𝑝𝑝𝑖𝑖 = 1π‘˜π‘˜π‘˜π‘˜π‘˜π‘˜, con un ancho de banda de
transición de Δ𝑓𝑓 = 0.25π‘˜π‘˜π‘˜π‘˜π‘˜π‘˜ y que tenga una atenuación
mínima de 𝛼𝛼𝑠𝑠 = 40𝑑𝑑𝑑𝑑. También tenemos una frecuencia de
muestreo para la señal original de 𝑓𝑓𝑠𝑠 = 44.1π‘˜π‘˜π‘˜π‘˜π‘˜π‘˜. Entonces,
encontramos primero las frecuencias de corte normalizadas:
0.25π‘˜π‘˜π‘˜π‘˜π‘˜π‘˜
44.1π‘˜π‘˜π‘˜π‘˜π‘˜π‘˜
Δπœ”πœ” = 2πœ‹πœ‹ οΏ½
sin οΏ½πœ”πœ”π‘π‘1 �𝑛𝑛 −
∀𝑛𝑛, 𝑛𝑛 ≠
πœ”πœ”π‘ π‘  − πœ”πœ”π‘π‘
2πœ‹πœ‹
2πœ‹πœ‹(7π‘˜π‘˜π‘˜π‘˜π‘˜π‘˜ + 0.125π‘˜π‘˜π‘˜π‘˜π‘˜π‘˜)
= 2πœ‹πœ‹(0.1616) = 1.015π‘Ÿπ‘Ÿπ‘Ÿπ‘Ÿπ‘Ÿπ‘Ÿ/𝑠𝑠
44.1π‘˜π‘˜π‘˜π‘˜π‘˜π‘˜
Por tanto, se tiene un filtro pasabandas así:
β„Žπ‘‘π‘‘ (𝑛𝑛)𝐡𝐡𝐡𝐡 =
Δ𝑓𝑓 =
Δπœ”πœ” =
→ 𝑀𝑀 =
𝑀𝑀 =
0.25π‘˜π‘˜π‘˜π‘˜π‘˜π‘˜
οΏ½
44.1π‘˜π‘˜π‘˜π‘˜π‘˜π‘˜
3.1(2πœ‹πœ‹)
𝑀𝑀
3.1(2πœ‹πœ‹)
Δπœ”πœ”
3.1(2πœ‹πœ‹)
= 546.84
0.25π‘˜π‘˜π‘˜π‘˜π‘˜π‘˜
2πœ‹πœ‹ οΏ½
οΏ½
44.1π‘˜π‘˜π‘˜π‘˜π‘˜π‘˜
𝑀𝑀 ≅ 547 π‘šπ‘šπ‘šπ‘šπ‘šπ‘šπ‘šπ‘šπ‘šπ‘šπ‘šπ‘šπ‘šπ‘šπ‘šπ‘š
Entonces, ya podremos calcular los coeficientes del filtro
ideal, teniendo en cuenta que necesitamos 547 muestras para las
especificaciones deseadas.
Ventana rectangular:
Ahora, procedemos a reemplazar en la ecuación 3, los
valores anteriores para encontrar la respuesta temporal y
frecuencial de la ventana rectangular. [3] Podemos observar
entonces, las muestras de la respuesta al impulso, en el dominio
del tiempo de la ventana ideal al reemplazar los valores:
4
Fig. 5. Código para el filtro ideal pasabandas.
Fig. 4.a. Muestras de la ventana rectangular en el dominio del tiempo.
En la figura 4.a., podemos observar que se tiene una señal de
tipo 𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠(π‘₯π‘₯). Como es de esperar, esta señal tiene una respuesta
finita que, al ser acotada, provoca unos lóbulos laterales en la
banda de paso y en la banda de rechazo. Este fenómeno es
conocido como el fenómeno de Gibbs, y puede ser observada
en detalle en la figura 4.b. Para poder mejorar este resultado, es
decir, para intentar mejorar este fenómeno, es decir, para
intentar evitarlo, se debe utilizar una ventana con una transición
mucho más suave. Para nuestro caso como se mencionó
anteriormente, se utilizará una ventana Hanning.
En la figura 4.c., podemos observar, además, en escala
logarítmica, las atenuaciones en dB que podemos tener en las
bandas de rechazo, siendo que, para las bajas frecuencias, el
filtro está aproximadamente en los -35dB.
En la figura 5, observamos que se utilizó la función de round
de Python para eliminar la indeterminación.
Ventana Hanning.
Ya que se conoce la ecuación que describe la ventana
Hanning, se procede a programarla con su ecuación:
Fig. 4.b. Respuesta en frecuencia del filtro ideal pasabandas.
1
2πœ‹πœ‹πœ‹πœ‹
π‘Šπ‘Šπ»π»π»π»π»π»π»π»π»π»π»π»π»π» = (1 − cos οΏ½
οΏ½
2
𝑀𝑀 − 1
(4)
Una vez implementado, se muestra entonces el resultado
temporal y frecuencial obtenido en Python al implementar la
ecuación anterior que describe el comportamiento del filtro.
Para esto se utilizan los mismos valores que la ventana anterior:
Fig. 4.c. Respuesta en frecuencia del filtro ideal pasabandas.
Fig. 6. Muestras en el tiempo de la ventana Hanning.
5
Fig. 7. Respuesta frecuencial de la ventana Hanning.
En la figura 6 y 7, observamos entonces, el comportamiento
de una ventana Hanning, esta ventana tiene una respuesta al
impulso mucho más suave y delimitada en los bordes.
Filtro FIR pasa bajas implementado:
Ahora, para encontrar la respuesta o coeficientes del filtro
que estamos diseñando, basta con realizar el producto en el
dominio del tiempo o convolución en frecuencia, de las
ventanas anteriores, es decir:
β„Žπ‘‘π‘‘ (𝑛𝑛) = β„Žπ‘‘π‘‘ (𝑛𝑛) · π‘Šπ‘Šπ»π»π»π»π»π»π»π»π»π»π»π»π»π» (𝑛𝑛)
Para realizar la implementación anterior, basta con realizar la
multiplicación de los vectores que contienen las ventanas en el
dominio del tiempo y al graficar entonces en Python, se
obtienen las siguientes respuestas tanto temporal como
frecuencial:
Fig. 9. Respuesta frecuencial del filtro FIR implementado.
Como podemos notar en la figura 8, se obtiene una respuesta
similar al de la figura 4, pero que se extingue más rápidamente.
Así mismo, podemos observar en la figura 9, que el fenómeno
de Gibbs es muy poco visible, es decir, que las transiciones son
mucho más suaves cuando se aplica la ventana Hanning.
Además, se observa que se tiene el resultado deseado, un
filtro pasa bandas con frecuencias entre 1kHz y 6kHz.
Además, podemos observar que la ventaja de este filtro es
que tienen una fase lineal como se muestra a continuación:
Fig. 10. Fase lineal del filtro FIR implementado.
Fig. 8. Respuesta temporal del filtro FIR implementado.
Como se puede observar en la figura 10, se tiene una
respuesta lineal en la fase, lo que representa una gran ventaja en
las aplicaciones que la necesiten. En este caso se cumple el
requisito previo, de buscar que el filtro tenga dicha fase.
6
Fig. 11. Fase lineal del filtro FIR implementado.
EN la figura 11, podemos observar en detalle en la escala
logarítmica, las atenuaciones en dB resultantes al aplicar la
ventana Hanning sobre la ventana rectangular. Podemos
observar que en comparación con la gráfica de la figura 4.c. se
tiene una mejor respuesta de atenuación en las bandas de
rechazo.
Fig. 12.b. Magnitud de las frecuencias contenidas en el audio filtrado con
ventanas.
Aplicación del filtro FIR pasabandas (método de
ventanas) al audio:
Por último, se procede a aplicar el filtro FIR por ventana
Hanning, al audio grabado con el fin de eliminar las
componentes de frecuencia deseadas. Para ello se realiza la
multiplicación de las señales en el dominio de la frecuencia, o
bien, la convolución en el dominio del tiempo y se obtiene:
Fig. 12.c. Espectrograma del audio filtrado.
En la figura 12.a. se puede observar ligeros cambios en el
dominio del tiempo, comparados con la figura 3.a. Pero los
cambios más significativos se pueden observar fácilmente en el
dominio de la frecuencia, donde se puede observar que la señal
está completamente atenuada en las frecuencias que se
quisieron eliminar.
Fig. 12.a. Línea de tiempo del audio a filtrado con ventanas.
Igual que se realizó anteriormente, podemos corroborar estos
resultados al observar nuevamente el espectrograma, pero esta
vez, de la señal filtrada. Se observa cómo para las bandas de
rechazo no existe prácticamente información de audio. Esto
significa que el filtro tiene una atenuación según el gráfico por
debajo de los 30dB. Una vez realizado este tipo de filtro,
procedemos entonces a construir con las mismas características
un filtro FIR pasabandas, pero con el método de aproximación
de Chebyshev.
7
B. Diseño del filtro FIR por aproximación de Chebyshev:
Para implementar este método, usamos las mismas
frecuencias de corte que se utilizaron con anterioridad al igual
que las mismas bandas de transición. Ya que este método
permite un control total sobre las bandas de transición, entonces
especificaremos las características adicionales con las cuales
buscaremos encontrar el filtro pasa bandas por este método.
Filtro pasabandas, Parámetros del filtro:
- Atenuación en la banda de paso: 𝛼𝛼𝑝𝑝 = 40𝑑𝑑𝑑𝑑
- Atenuación en la banda de rechazo: π›Όπ›Όπ‘Ÿπ‘Ÿ = 0.1𝑑𝑑𝑑𝑑
Calculamos entonces la cantidad de puntos u orden del filtro:
𝑀𝑀2 =
−20 log10 ��𝛿𝛿1 𝛿𝛿2 οΏ½ − 13
+1
14.6Δ𝑓𝑓
Fig. 14.a. Respuesta en frecuencia del filtro FIR por Chebyshev.
Necesitamos encontrar los deltas o rizados:
π›Όπ›Όπ‘Ÿπ‘Ÿ
0.1
π›Ώπ›Ώπ‘Ÿπ‘Ÿ = 10−20 = 10− 20 = 0.9885
𝛼𝛼𝑝𝑝
40
𝛿𝛿𝑝𝑝 = 1 − 10− 20 = 1 − 10−20 = 0.99
Δ𝑓𝑓 =
πœ”πœ”π‘ π‘  − πœ”πœ”π‘π‘ 2πœ‹πœ‹(7250 − 7000)
=
= 250
2πœ‹πœ‹
2πœ‹πœ‹
Al reemplazar los valores, tenemos el resultado de:
𝑀𝑀2 = 320 π‘šπ‘šπ‘šπ‘šπ‘šπ‘šπ‘šπ‘šπ‘šπ‘šπ‘šπ‘šπ‘šπ‘šπ‘šπ‘š
Ahora, procedemos entonces a utilizar el algoritmo de
Remez, para encontrar los coeficientes del filtro pasabandas que
estamos diseñando. Para esto, utilizamos la rutina
predeterminada de Python que viene incluida en la librería de
Scipy. Este algoritmo entonces nos entrega como resultado, la
señal de los coeficientes o respuesta al impulso en el tiempo:
Fig. 13. Respuesta al impulso del filtro FIR por Chebyshev.
Fig. 14.b. Respuesta en frecuencia del filtro FIR por Chebyshev.
Como podemos ver en la figura 13, se tiene una respuesta
temporal con forma de sinc(x). La respuesta del filtro se puede
observar de mejor manera en el dominio de la frecuencia, como
se muestra en la figura 14.a. Se puede observar que, en la banda
de paso, existe un leve rizado, que concuerda con el que
programamos, además se nota que la banda de rechazo está
aproximadamente en los 40dB que escogimos. Se puede
mejorar la exactitud de esta respuesta al añadir unas 3 muestras
más en el código. También es posible observar que este tipo de
filtro tiene una excelente respuesta en cuanto a la banda de
transición en comparación con la respuesta del filtro por
ventanas de la figura 11. Además, también tenemos una fase
lineal según la figura 14.b.
Aplicación del filtro FIR pasabandas (aproximación de
Chebyshev) al audio:
Ahora, solo queda realizar el mismo procedimiento que se
realizó con el filtro anterior, es decir, realizar la multiplicación
en frecuencia de las señales o bien, la convolución en el tiempo
de la señal de audio y el filtro pasabandas encontrado por la
aproximación.
8
C. Tabla comparativa de los filtros por ventanas y
Chebyshev.
A continuación, realizamos entonces una comparación de los
resultados obtenidos en los métodos anteriores. En esta tabla
tendremos en cuenta si las especificaciones fueron complidas,
además de las frecuencias de corte obtenidas y las bandas de
atenuación:
Fig. 15.a. Línea de tiempo del audio filtrado con Chebyshev.
Fig. 16.a. Espectrograma del audio filtrado con Chebyshev.
Fig. 16.b. Frecuencias de corte en dB para Chebyshev.
En las figuras 16 se puede observar entonces las frecuencias
de corte que se obtuvieron. Esto se consignará entonces en la
tabla.
Fig. 15.b. Magnitud de las frecuencias contenidas en el audio filtrado con
Chebyshev.
Parámetros
Frecuencia de
corte inferior
Frecuencia de
corte superior
Atenuación banda
de paso
Atenuación banda
de rechazo
Especificaciones
cumplidas
Orden del filtro
FIR Ventanas
750Hz
FIR Chebyshev
750Hz
-40dB
-38dB
7250Hz
-40dB
Sí
7250Hz
-38dB
Parcialmente
547
320
Tabla 1. Comparación de los filtros FIR implementados.
Como podemos ver en la tabla anterior, los dos filtros
tuvieron resultados muy similares, la única diferencia es en la
banda de atenuación del filtro por el método de Chebyshev.
Donde se tiene una diferencia de 2dB.
Fig. 15.c. Espectrograma del audio filtrado con Chebyshev.
9
D. Diseño de filtros IIR por Transformación Bilineal:
Ahora, procedemos a realizar la implementación del filtro IIR
(respuesta infinita al impulso) mediante el método de
transformación bilineal. Para esto, decidimos también utilizar
un filtro pasabandas con las mismas frecuencias de corte que se
utilizó en los métodos anteriores, con los siguientes resultados
de los cálculos:
Primero, se calculan las frecuencias del filtro digital:
2
πœ”πœ”
Ω = tan οΏ½ οΏ½ → 𝑃𝑃𝑃𝑃𝑃𝑃 − 𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀𝑀
𝑇𝑇
2
Fig. 19. Filtro IIR Butterworth implementado con transformación bilineal. [4]
Fig. 17. Ecuaciones para el cálculo de las frecuencias del filtro digital con las
frecuencias del filtro analógico.
En el código podemos observar que se encuentran los bordes
de las frecuencias digitales con las frecuencias lineales del
filtro pasabandas ideal.
Fig. 20. Respuesta al impulso.
Fig. 18. Ecuaciones para el cálculo del filtro pasabandas.
Dadas las especificaciones del filtro, con una banda de paso
de 3dB y una banda de rechazo de 40dB, se decide usar un filtro
tipo Butterworth. Entonces, se utiliza con los valores anteriores,
la ecuación del filtro pasabandas para el filtro analógico
deseado:
Ω = Ωp
οΏ½ 20 − Ω
οΏ½2
Ω
οΏ½ π΅π΅πœ”πœ”
Ω
Se implementa entonces estos resultados con las librerías de
Python para el filtro IIR de dos formas diferentes y se obtienen
los siguientes resultados:
-
Forma 1: calculado con las ecuaciones de transformación
bilineal
-
Forma 2: Rutina de Python para filtros IIR.
Fig. 21. Frecuencias de la señal filtrada.
10
En la figura 19, podemos observar el espectro del filtro IIR de
la primera forma implementada. Podemos observar que tiene
una respuesta un poco simétrica, tal como se busca y con las
frecuencias de corte y atenuaciones deseadas. [5]
Como vemos en la figura 21, se logró eliminar de manera
satisfactoria las frecuencias más altas pero las frecuencias más
bajas no se lograron eliminar completamente.
Fig. 24. Espectrograma del filtro IIR de la segunda forma.
En la figura 24, observamos los resultados del espectrograma,
donde se puede observar que se logró una mejor atenuación para
la banda de las frecuencias superiores, pero no se logró de forma
óptima mitigar el ruido en las frecuencias menores.
IV. CONCLUSIONES
Fig. 22. Espectrograma del filtro IIR de la primera forma.
Ya que los resultados anteriores, no fueron satisfactorios, se
buscó entonces implementar un nuevo filtro con una función
más específica de Python. Se utilizaron las mismas frecuencias
que los filtros anteriores y se obtuvieron los siguientes
resultados:
-
El diseño de los filtros digitales FIR, tiende a ser de
implementación mucho más sencilla ya que implementar
las ventanas no requiere un mayor trabajo.
-
El filtro Chebyshev, tiene un excelente comportamiento en
la banda de rechazo, pues se logra atenuar de forma casi
lineal en toda la banda de rechazo (respuesta plana).
-
Para la cantidad de muestras calculadas, el filtro
Chebyshev tiene el rizado esperado, pues fue el definido.
Se logró observar que se tiene menos muestras que el filtro
por ventana Hanning.
-
Es posible mejorar el resultado del filtro Chebyshev al
aumentar la cantidad de muestras disminuyendo los rizados
o el Δ𝑓𝑓 .
-
Mejorar el filtro con ventanas disminuyendo la banda de
transición o aumentando la cantidad de muestras, al igual
que el filtro Chebyshev, aumenta el número de cálculos, lo
que puede llevar a utilizar mucha memoria.
-
Para este caso, los resultados del filtrado del audio fueron
totalmente satisfactorios, se logró filtrar las bandas
requeridas y disminuir el ruido de los insectos con los dos
métodos del filtro FIR.
-
EL filtro IIR se logró de forma satisfactoria mediante dos
métodos similares, uno de ellos solo requería los datos
mientras que el otro se hizo con los cálculos de la
transformación bilineal. Dado que los cálculos permitieron
un mejor control, se llegó a un mejor resultado en cuanto a
simetría y bandas de paso.
Fig. 23. Espectrograma del filtro IIR de la segunda forma. [6]
Como observamos en la figura 23. Se tiene también una
respuesta esperada para el filtro con las frecuencias elegidas,
pero con muy poca simetría en comparación con el filtro
anterior de la primera forma. Aún así, se logró obtener
atenuaciones en las bandas elegidas, pero para la banda mayor,
la banda de transición es más grande que la esperada.
11
-
Todos los métodos fueron filtrados utilizando la
convolución, pues era el resultado más sencillo de
implementar.
-
Por algún problema en la implementación de la rutina de
convolución con los filtros IIR, el resultado en el filtrado
no fue el mejor, pero se podría mejorar las rutinas con un
mejor control sobre el código de convolución
implementado o por algún posible error de digitación.
V. BIBLIOGRAFÍA
[1] A. Gordillo Martínez, M. F. Ortiz Ramírez y A. G.
Navarro Sigüenza, «Estructura y evolución de las
vocalizaciones de las aves,» Ciencias, pp. 32 - 40, 2013.
[2] J. L. N. Vera, «Filtrado Digital. Lectura 3: Diseño de
Filtros FIR,» 21 Diciembre 2021. [En línea]. Available:
https://silo.tips/download/filtrado-digital-lectura-3diseo-de-filtros-fir.
[3] L. G. A. J. S. V. J. G. M. MARTÍNEZ, «FILTROS
DIGITALES,» 2010. [En línea]. Available:
http://ocw.uv.es/ingenieria-y-arquitectura/filtrosdigitales/tema_3._diseno_de_filtros_fir.pdf.
[4] SciPy , «SciPy documentation,» SciPy , 2022. [En
línea]. Available:
https://docs.scipy.org/doc/scipy/reference/generated/sci
py.signal.butter.html.
[5] N. Robertson, «dsprelated,» 6 Enero 2018. [En línea].
Available:
https://www.dsprelated.com/showarticle/1128.php.
[6] SciPy, «SciPy documentation,» SciPy, 2022. [En línea].
Available:
https://docs.scipy.org/doc/scipy/reference/generated/sci
py.signal.buttord.html.
Download