Por que devo usar filtros digitais para passar a banda em vez de simplesmente manipular sinais no domínio da frequência e depois recuperá-los no domínio do tempo?

15

Sou um novato no processamento de sinais e sei que essa pergunta pode ser muito ampla. Mas ainda gostaria de ouvir dicas de especialistas.

Fui ensinado a usar butter(para projetar o filtro Butterworth, também conhecido como filtro de magnitude máxima plana) e filtfilt(filtragem digital de fase zero) para a filtragem de banda de sinais EEG (eletroencefalograma) no MATLAB offline (ou seja, após a conclusão da gravação). Dessa forma, você pode evitar o inevitável "atraso" causado pelo filtro digital (ou seja, filtragem de fase zero).

Então, alguém me perguntou por que não podemos usar fft(transformação rápida de Fourier) para obter a representação do sinal no domínio da frequência e, em seguida, definir o poder das frequências indesejadas para zero, seguido por ifft(transformação rápida inversa de Fourier) para recuperar os dados filtrados no tempo domínio para a mesma finalidade. Essa manipulação no domínio da frequência parecia mais simples e razoável para mim, e eu realmente não conseguia responder o porquê.

Quais são as vantagens e desvantagens do uso do fft/ifftmétodo simples para a filtragem de banda? Por que as pessoas preferem usar filtros digitais FIR ou IIR?

Por exemplo, o fft/ifftmétodo é mais propenso a vazamentos ou ondulações espectrais em comparação com os filtros digitais estabelecidos? O método também sofre de atraso de fase? Existe uma maneira de visualizar a resposta ao impulso desse método de filtragem para comparação?

Kouichi C. Nakamura
fonte
Pergunta relacionada (mas não necessariamente duplicada): electronics.stackexchange.com/questions/100348/why-use-a-filter/…
helloworld922:
Usar uma FFT para filtrar um sinal é absolutamente válido, mas há algumas coisas a serem observadas. Veja esta pergunta / resposta semelhante para mais informações: stackoverflow.com/a/2949227/565542
sbell
5
Perguntas como essa podem ser mais apropriadas para o site de processamento de sinais .
Jason R
2
Penso que o Guia do Cientista e do Engenheiro para o Processamento de Sinais Digitais Por Steven W. Smith tem uma resposta. Eu acho que ele diz que amostra dentro - fora amostra é muito mais eficiente com um filtro digital. Porém, existe uma largura mínima da janela (64 amostras ou mais, não me lembro exatamente) quando é mais apropriado involuir a conversão FFT, na qual você pode ter um filtro físico no domínio freq. Eficiência não é o único problema. O filtro de tijolos implica que você precisa usar amostras do futuro, o que é impossível em tempo real.
Val
Obrigado, eu estava procurando por algo como o site de processamento de sinais, mas não consegui encontrá-lo.
Kouichi C. Nakamura

Respostas:

9

A principal razão pela qual o processamento no domínio da frequência não é feito diretamente é a latência envolvida. Para fazer, por exemplo, uma FFT em um sinal, você deve primeiro registrar todo o sinal no domínio do tempo, do início ao fim, antes de poder convertê-lo no domínio da frequência. Em seguida, você pode fazer seu processamento, convertê-lo novamente no domínio do tempo e reproduzir o resultado. Mesmo que as duas conversões e o processamento do sinal no meio sejam efetivamente instantâneos, você não obtém a primeira amostra de resultado até que a última amostra de entrada tenha sido gravada. Mas você pode obter resultados "ideais" no domínio da frequência, se quiser tolerar isso. Por exemplo, uma música de 3 minutos gravada a 44100 amostras / segundo exigiria 8 milhões de transformações de ponto, mas isso não é grande coisa em uma CPU moderna.

Você pode ficar tentado a dividir o sinal no domínio do tempo em blocos de dados menores e de tamanho fixo e processá-los individualmente, reduzindo a latência ao tamanho de um bloco. No entanto, isso não funciona por causa de "efeitos de borda" - as amostras em cada extremidade de um determinado bloco não se alinham adequadamente com as amostras correspondentes dos blocos adjacentes, criando artefatos questionáveis ​​nos resultados.

Isso acontece devido a suposições implícitas no processo que converte entre domínio de tempo e domínio de frequência (e vice-versa). Por exemplo, a FFT e a IFFT "assumem" que os dados são cíclicos; em outras palavras, esses blocos de dados idênticos no domínio do tempo vêm antes e depois do processamento do bloco. Como isso geralmente não é verdade, você obtém os artefatos.

O processamento no domínio do tempo pode ter seus problemas, mas o fato de você poder controlar a latência e não produzir artefatos periódicos o torna um vencedor claro na maioria dos aplicativos de processamento de sinal em tempo real.

(Esta é uma versão expandida da minha resposta anterior .)

Dave Tweed
fonte
1
Muito obrigado pela resposta detalhada em palavras simples. Agora percebo que na minha pergunta eu deveria ter mencionado que meu trabalho é principalmente para análise offline, em vez de processamento online ou em tempo real. Eu vou editar a pergunta. Seu argumento é bem claro: como a FFT exige toda a duração dos dados, você precisa esperar até a gravação terminar.
Kouichi C. Nakamura
1
OK, é justo. Deixe-me salientar mais uma coisa sobre a filtragem no domínio da frequência que pode ou não ser um problema para você: Os filtros não serão causais no domínio do tempo. Em outras palavras, suas respostas de impulso se estendem ao tempo positivo e negativo. Isso pode ter alguns efeitos surpreendentes se você não estiver ciente disso.
Dave Tweed
Obrigado. Procurei "Filtro causal" na Wikipedia. Por definição, o vagão da FFT não se importa com o tempo, então posso ver que não é causal. Essa natureza explica por que você não pode usá-lo para filtragem em tempo real.
Kouichi C. Nakamura
3
@DaveTweed: Sua afirmação sobre exigir uma FFT de 8 milhões de pontos para filtrar uma música de 3 minutos amostrada em 44,1 kHz está incorreta. Os algoritmos de convolução baseados em FFT são de fato muito usados ​​na prática. Métodos como overlap-save e overlap-add são usados ​​para que sejam necessários tamanhos mais modestos de FFT (e, portanto, latência de processamento). Essas técnicas fazem exatamente o que o segundo parágrafo sugere: use blocos menores enquanto lida com os "efeitos de borda" que ocorrem entre eles.
Jason R
2
@DaveTweed: Eu discordo. Métodos rápidos de convolução, como sobreposição-salvar e sobreposição-adição, são equivalentes (até precisão numérica) a convolução linear direta (isto é, implementar o filtro no domínio do tempo). Não há comprometimento de desempenho em condições de contorno de qualquer tipo versus processamento no domínio do tempo, e sua latência limitada ainda as torna úteis para muitos aplicativos em tempo real. Eu mantenho que a afirmação de que a filtragem no domínio da frequência exige uma grande FFT em todo o sinal de entrada é falsa, e não tenho certeza do que você quer dizer com processamento "puro" no domínio da frequência nesse contexto.
Jason R
2

Você certamente pode usar filtros ideais para "vagões" no domínio da frequência. A dualidade diz que isso é equivalente a convolver com uma função sinc de comprimento infinito. Para reduzir artefatos associados a tornar o comprimento finito, a função sinc é frequentemente multiplicada por uma janela. Você já deve ter ouvido falar de Hamming, Hanning (na verdade von Hann), cosseno elevado e outras técnicas de janelas. A convolução pode ser computacionalmente mais simples que a abordagem fft / ifft, mas as respostas são as mesmas.

Todo método terá pontos positivos e negativos. O Butterworth é IIR, e os vagões são FIR. Os Butterworths provavelmente são mais lisos na faixa de passes, mas provavelmente com menos rolagem íngreme, dependendo da ordem do IIR e da largura do FIR. seria mais difícil implementar em tempo real.

Scott Seidman
fonte
1
Para uma explicação realmente clara sobre janelas e filtragem de blocos, veja o livro Digital Filters by RW Hamming. Disponível em Dover, com preços muito agradáveis. (Aliás, Scott, eu acho que este é o Hamming janela é nomeado para e von Hann é aquele que tem o seu nome massacrado na nomeação de sua janela)
O Photon
Além disso, tenho certeza de que um vagão de carga implementado com FFTs é, por definição, perfeitamente plano na faixa de transmissão. Quando dizemos que o filtro Butterworth é "maximamente plano", acredito que estamos falando sobre isso apenas no contexto de filtros causais (e a Wiki diz que, mesmo assim, é possível criar um filtro Chebychev inverso que seja mais plano que um Butterworth).
The Photon
1
Acordado para comprimento infinito ideal, mas não tão certo depois de truncagem e de janelas
Scott Seidman
@ThePhoton Obrigado pela correção de Hamming / von Hann. Não conseguia visualizar minha estante de livros corretamente de casa.
Scott Seidman
@The Photon; Obrigado pelo livro de Filtros Digitais da Hamming . Eu olhei para ele e parecia escrito especialmente para alunos do ensino fundamental. Eu comprei com uma esperança. :)
Kouichi C. Nakamura
0

Perguntas relacionadas

Por que é uma má idéia filtrar zerando as caixas de FFT? /signals/6220/why-is-it-a-bad-idea-to-filter-by-zeroing-out-fft-bins

A remoção de valores da FFT resulta da mesma filtragem? /signals/11487/removing-values-from-fft-result-same-as-filtering?noredirect=1&lq=1

Por que usamos a janela no domínio do tempo, em vez de a FFT modificar o espectro e a FFT inversa /signals/8911/why-do-we-use-window-in-time-domain-rather -que-fft-modificar-o-espectro-e-t? noredirect = 1 & lq = 1

Kouichi C. Nakamura
fonte