Documentação sobre filtros em geral

11

Eu já postei esta pergunta no StackOverflow. Eu tenho uma sugestão para buscar uma resposta melhor aqui.

Para tornar a pergunta mais concisa, estou interessado em uma introdução aos filtros digitais, qualquer recurso é bom.

Mas primeiro ficarei satisfeito se alguém puder me indicar alguns recursos que explicam esse filtro (usado no Android):

http://gitorious.org/rowboat/frameworks-base/blobs/671a6ff4be11b3e2d8eb017e0c7a78e6133fb2b8/services/sensorservice/SecondOrderLowPassFilter.cpp

O que me interessa é a maneira como os parâmetros do filtro são escolhidos. Embora eu possa copiá-lo sem pensar, acho que devo entender o conceito / idéia básica antes de usá-lo.

Obrigado,

Iulian

Iulian Şerbănoiu
fonte

Respostas:

11

Você pode derivar a expressão para os coeficientes fazendo a transformação bilinear do seguinte filtro de protótipo de passa-baixo analógico

H(s)=w02s2+(w0/Q)s+w02

onde é a frequência de corte.w0

Você pode pesquisar a transformação bilinear na Wikipedia .

O filtro usado no aplicativo Android é um filtro Butterworth porque o valor escolhido de Q é . Observe que no construtor o inverso de Q é calculado e atribuído à variável iQ, que é usada no cálculo dos coeficientes. Observe também que a variável K mantém o valor 'deformado pela frequência' da frequência de corte especificada. Você pode encontrar mais informações sobre o fenômeno de distorção de frequência no link acima.1/2

Você pode encontrar muitos exemplos de design de filtro digital usando transformação bilinear. Eu encontrei este , que é bem parecido com o exemplo do Android.

niaren
fonte
Obrigado. Começo a lembrar de matemática que fiz na faculdade; infelizmente, ninguém estava lá para me mostrar também um bom exemplo prático ou eu estava preocupado com outra coisa ...
Iulian Şerbănoiu
5

Uma introdução realmente boa e completa aos filtros digitais é https://ccrma.stanford.edu/~jos/filters/filters.html . Seu exemplo particular é um filtro passa-baixas de 2 ou 4 ordens muito simples. Se você usar o objeto "Biquad", obterá um filtro Butterworth de segunda ordem. Se você usar o objeto "CascadedBiquad", obteria o que chamamos de filtro Linkwitz Riley de 4ª ordem (mas NÃO um Butterworth de 4ª ordem). A implementação é bastante específica. Com um pouco mais de trabalho, você pode fazer algo que é muito mais genérico e utilizável para todos os aplicativos.

Hilmar
fonte
Sim, eu realmente quero entender a teoria dos filtros para poder controlar os filtros que estou usando. O filtro mencionado na pergunta me fez perceber que não apenas eu deveria entender como ele funciona, mas também deveria poder projetar meus próprios filtros, dependendo da entrada. Bom link, obrigado!
Iulian Şerbănoiu
5

Minha primeira referência que achei realmente útil foi o Guia do cientista e do engenheiro para o processamento de sinais digitais . Eu acho que o ponto forte é que ele é voltado para familiarizar o leitor com os conceitos e terminologia do DSP sem se aprofundar muito na matemática. Essa abordagem se encaixou no meu estilo de aprendizado e experiência como engenheiro de software, com uma leve ênfase no EE. Hoje em dia, sempre abordo novos tópicos dessa maneira, tentando entender primeiro os conceitos de alto nível e depois aprofundar os detalhes com outras fontes de informação que são mais detalhadas / pesadas em matemática.

spade78
fonte
Foi assim que comecei a reler, já que era a única coisa que eu sabia que continha referências a esse tópico. Obrigado!
Iulian Şerbănoiu 19/09/11