Leí un artículo sobre una interfaz cerebro-computadora. En este artículo, los autores informaron que "cada señal se ha filtrado con un filtro Chebishev Tipo I de paso de banda de 8 órdenes cuyas frecuencias de corte son 0.1 y 10 Hz y se ha diezmado de acuerdo con la frecuencia de corte alta". Traté de diseñar este filtro con scipy:
import scipy.signal as signal
signal.cheby1(8,0.05,[0.1,10.0],btype='band',analog=0,output='ba')
El resultado fue:
Warning: invalid value encountered in sqrt
(array([ nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan,
nan, nan, nan, nan, nan, nan]), array([ nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan,
nan, nan, nan, nan, nan, nan]))
No tengo experiencia en el procesamiento de señales, por lo que en realidad no sé lo que estoy haciendo. No sé si usaron un filtro IIR o FIR o si tengo que escalar las frecuencias de corte o si estoy usando la ondulación incorrecta. Espero que puedas ayudarme.
fuente
Dos frecuencias de corte generalmente significan que es un filtro de paso de banda con el paso alto a 0.1 Hz y el paso bajo a 10 Hz. El corte de paso bajo (que es la más alta de las dos frecuencias) determina cuánto puede reducir la muestra. Si su filtro de paso bajo era infinitamente empinado, podría salirse con una nueva frecuencia de muestreo de 20 Hz (el doble del límite). Dado que tiene una inclinación limitada, debe dejar una banda de protección entre la frecuencia de corte y la nueva frecuencia de Nyquist. Cuánto necesita depende del orden del filtro y cuánto ruido de alias puede tolerar.
En este ejemplo específico, parece que han reducido la muestra en un factor de 12 o más, lo que me parece demasiado agresivo y probablemente generará mucho ruido de alias.
fuente