Eu li um artigo sobre uma interface cérebro-computador. Neste artigo, os autores relataram "cada sinal foi filtrado com um filtro Chebishev Tipo I de passagem de banda de 8 ordens, cujas frequências de corte são de 0,1 e 10 Hz e foi dizimado de acordo com a alta frequência de corte". Eu tentei projetar esse filtro com scipy:
import scipy.signal as signal
signal.cheby1(8,0.05,[0.1,10.0],btype='band',analog=0,output='ba')
O resultado foi:
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]))
Não tenho experiência no processamento de sinais, então, na verdade, não sei o que estou fazendo. Não sei se eles usaram um filtro IIR ou FIR ou se tenho que escalar as frequências de corte ou se estou usando a ondulação errada. Espero que você possa me ajudar.
Duas frequências de corte normalmente significam que é um filtro passa-banda com o passa-alto a 0,1 Hz e o passa-baixo a 10 Hz. O ponto de corte passa-baixo (que é a mais alta das duas frequências) determina quanto você pode obter uma amostra abaixo. Se o seu filtro passa-baixo fosse infinitamente íngreme, você poderia obter uma nova taxa de amostragem de 20 Hz (o dobro do ponto de corte). Como a inclinação é limitada, é necessário deixar uma faixa de proteção entre a frequência de corte e a nova frequência de Nyquist. Quanto você precisa depende da ordem do filtro e da quantidade de ruído de alias que você pode tolerar.
Neste exemplo específico, parece que eles tiveram uma amostragem reduzida por um fator de 12 ou mais ou menos, o que parece muito agressivo para mim e provavelmente resultará em muito ruído de alias.
fonte