Guía 2 - Ejercicio 9: Filtrado Butterworth
Resolución Ejercicio 9 - Diseño de Filtro y Aislación de Armónicos
a) Discusión Teórica: Elección del Filtro
Tenemos una onda cuadrada de frecuencia . Por nuestro análisis previo de la Serie de Fourier (Ejercicio 4), sabemos que una onda cuadrada simétrica no posee armónicos pares. Su espectro está compuesto únicamente por:
- Fundamental:
- 3er armónico:
- 5to armónico:
- ... y así sucesivamente.
El objetivo es quedarnos solamente con el primer armónico (la fundamental a ). Por lo tanto, necesitamos un Filtro Pasa-Bajos (Low-Pass Filter). Este filtro debe dejar pasar sin atenuar la frecuencia de y aplastar lo máximo posible cualquier frecuencia .
Para evitar atenuar nuestra fundamental y a la vez asegurarnos de matar al tercer armónico, una frecuencia de corte () ideal es (el punto medio entre la fundamental y el primer armónico indeseado). A esta frecuencia, la ganancia del filtro caerá , pero para estará casi intacta (ganancia ) y para ya estará fuertemente atenuada.
b) Diseño e Implementación en Python
Para la simulación utilizamos el script ejercicio9.py. En él empleamos la familia de filtros Butterworth, famosa por tener una respuesta lo más plana posible en la banda de paso (maximally flat magnitude), ideal para no distorsionar la amplitud de nuestra fundamental.
- Frecuencia de Nyquist (): Al estar sampleando a , Nyquist es .
- Frecuencia normalizada (): La función
scipy.signal.butterexige la frecuencia de corte normalizada entre y (donde representa Nyquist). . - Orden (): Un filtro de orden 4 provee una caída (roll-off) de . Suficientemente agresivo para eliminar el armónico de .
Para aplicar el filtro sobre la señal temporal, en lugar de usar lfilter (que introduce un corrimiento de fase y nos retrasaría la onda sinusoidal), utilizamos filtfilt. Esta función pasa el filtro hacia adelante y luego hacia atrás en el tiempo, cancelando cualquier desfasaje (fase lineal nula), logrando que la sinusoide quede perfectamente alineada con la cuadrada original.
c) y d) Resultados Gráficos
El gráfico generado:

Consta de tres partes:
- Dominio Temporal: Vemos la cuadrada original (negra punteada) y cómo el filtro extrae limpiamente una sinusoide perfecta (roja). La línea azul marca la amplitud teórica esperada (). La onda filtrada coincide maravillosamente con este valor teórico. El filtro destiló exactamente el de Fourier de entre toda la basura de alta frecuencia.
- Magnitud (Diagrama de Bode): Muestra la banda de paso plana hasta (-3dB) y luego una caída brutal. En la atenuación es (multiplica por 1). En la atenuación ya es de casi (divide por 10).
- Fase: Muestra cómo el filtro IIR crudo alteraría la fase de las componentes. (Recordar que el uso de
filtfilten la práctica anula este efecto bidireccionalmente).
[!infobox] Ejercicio 9: Diseño de Filtros Discretos Contexto: Procesamiento de señales para eliminación de armónicos superiores. Resolución Analítica/Numérica: Se usó un Pasa-Bajos Butterworth de orden 4 con . Al no existir armónicos en (la cuadrada pasa de a ), el filtro pasa la fundamental intacta y suprime al resto. Se aplicó con
filtfiltpara garantizar desfasaje nulo. Advertencia/Clave: La funciónsignal.butterde scipy requiere la frecuencia de corte normalizada dividiendo por la Frecuencia de Nyquist (), NO por . Si pasás el valor absoluto en Hz sin decirle a scipy explícitamentefs=..., el filtro no va a cortar donde vos creés. Siempre validá graficando la respuesta en frecuencia (freqz).