Hay varios filtros que se pueden utilizar, y la elección real del filtro dependerá de lo que esté tratando de lograr. Como mencionaste los filtros Butterworth, Chebyschev y Elliptical, supongo que estás buscando filtros IIR en general.
Wikipedia es un buen lugar para comenzar a leer los diferentes filtros y lo que hacen. Por ejemplo, Butterworth es máximo plano en la banda de paso y la respuesta rueda en la banda de parada. En Chebyschev, tiene una respuesta suave, ya sea en la banda de paso (tipo 2) o la banda de detención (tipo 1) y ondulaciones más grandes e irregulares en la otra y por último, en los filtros Elliptical, hay ondas en ambas bandas. La siguiente imagen is taken from wikipedia.

Así que en los tres casos, usted tiene que negociar algo por otra cosa. En Butterworth, no obtienes ondas, pero la respuesta de frecuencia disminuye más lentamente. En la figura anterior, lleva de 0.4
a aproximadamente 0.55
para obtener la mitad de la potencia. En Chebyschev, obtienes una caída más pronunciada, pero tienes que permitir ondulaciones irregulares y más grandes en una de las bandas, y en elíptica, obtienes un corte casi instantáneo, pero tienes ondas en ambas bandas.
La elección del filtro dependerá completamente de su aplicación. ¿Estás tratando de obtener una señal limpia con poca o ninguna pérdida? Entonces necesitas algo que te dé una respuesta suave en la banda de paso (Butterworth/Cheby2). ¿Estás tratando de matar frecuencias en la banda de stop, y no te importará una pequeña pérdida en la respuesta en la banda de paso? Entonces necesitarás algo que sea suave en la banda de paro (Cheby1). ¿Necesita esquinas de corte extremadamente afiladas, es decir, cualquier cosa un poco más allá de la banda de paso es perjudicial para su análisis? Si es así, debes usar filtros elípticos.
Lo que hay que recordar sobre los filtros IIR es que tienen polos. A diferencia de los filtros FIR, donde puede aumentar el orden del filtro con la única ramificación que es el retardo del filtro, aumentar el orden de los filtros IIR hará que el filtro sea inestable. Por inestable, quiero decir que tendrá postes que se encuentran fuera del círculo unitario. Para ver por qué esto es así, puede leer los artículos de la wiki en IIR filters, especialmente la parte sobre estabilidad.
Para ilustrar más mi punto, considere el siguiente filtro de paso de banda.
fpass=[0.05 0.2];%# passband
fstop=[0.045 0.205]; %# frequency where it rolls off to half power
Rpass=1;%# max permissible ripples in stopband (dB)
Astop=40;%# min 40dB attenuation
n=cheb2ord(fpass,fstop,Rpass,Astop);%# calculate minimum filter order to achieve these design requirements
[b,a]=cheby2(n,Astop,fstop);
Ahora bien, si nos fijamos en el diagrama de polo cero utilizando zplane(b,a)
, verá que hay varios polos (x
) se encuentran fuera del círculo de la unidad, lo que hace que este enfoque inestable.

y esto es evidente por el hecho de que la respuesta de frecuencia es todo loco. freqz(b,a)
utilizar para obtener la siguiente

Para obtener un filtro más estable con sus requisitos de diseño exactos, tendrá que utilizar filtros de segundo orden usando el método z-p-k
en lugar de b-a
, en MATLAB. He aquí cómo el mismo filtro que el anterior:
[z,p,k]=cheby2(n,Astop,fstop);
[s,g]=zp2sos(z,p,k);%# create second order sections
Hd=dfilt.df2sos(s,g);%# create a dfilt object.
Ahora bien, si nos fijamos en las características de este filtro, verá que todos los polos se encuentran dentro del círculo unitario (por lo tanto estable) y coincide con los requisitos de diseño


El enfoque es similar para butter
y ellip
, con equivalente buttord
y ellipord
. La documentación de MATLAB también tiene buenos ejemplos sobre el diseño de filtros. Puede basarse en estos ejemplos y en los míos para diseñar un filtro de acuerdo con lo que desee.
Para usar el filtro en sus datos, puede hacer filter(b,a,data)
o filter(Hd,data)
según el filtro que utilice. Si desea una distorsión de fase cero, use filtfilt
. Sin embargo, esto no acepta objetos dfilt
. Así que para el filtro de fase cero con Hd
, utilice el archivo filtfilthd
disponible en el sitio de intercambio de archivos Mathworks
EDITAR
Esto es en respuesta al comentario de @ darenw. El suavizado y el filtrado son dos operaciones diferentes, y aunque son similares en algunos aspectos (el promedio móvil es un filtro de paso bajo), no puede simplemente sustituir uno por otro a menos que pueda estar seguro de que no será de preocupación en la aplicación específica.
Por ejemplo, la implementación de la sugerencia de Daren en una señal chirp lineal de 0-25kHz, muestreada a 100 kHz, este espectro de frecuencia después del alisado con un filtro gaussiano

Claro, la deriva cerca de 10 Hz es casi nulo Sin embargo, la operación ha cambiado por completo la naturaleza de los componentes de frecuencia en la señal original. Esta discrepancia se produce porque ignoraron por completo la caída de la operación de suavizado (ver línea roja), y supusieron que sería cero plano. Si eso fuera cierto, la resta habría funcionado. Pero, por desgracia, ese no es el caso, por lo que existe un campo completo para diseñar filtros.
me hacen una mejor persona con sus respuestas – Diego