Documentación sobre filtros en general.

11

Ya publiqué esta pregunta en StackOverflow. Tengo una sugerencia para buscar una mejor respuesta aquí.

Para hacer la pregunta más concisa, estoy interesado en una introducción a los filtros digitales, cualquier recurso es bueno.

Pero primero me sentiré satisfecho si alguien pudiera señalarme algunos recursos que expliquen este filtro (usado en Android):

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

Lo que me interesa es la forma en que se eligen los parámetros del filtro. Si bien puedo copiarlo sin pensar, creo que debería entender el concepto básico / idea detrás antes de usarlo.

Gracias,

Iulian

Iulian Şerbănoiu
fuente

Respuestas:

11

Puede derivar la expresión de los coeficientes haciendo una transformación bilineal del siguiente filtro de prototipo de paso bajo analógico

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

donde es la frecuencia de corte.w0

Puede buscar la transformación bilineal en Wikipedia .

El filtro utilizado en la aplicación de Android es un filtro de Butterworth porque el valor elegido de Q es . Tenga en cuenta que en el constructor, el inverso de Q se calcula y se asigna a la variable iQ, que se utiliza en el cálculo de los coeficientes. Tenga en cuenta también que la variable K contiene el valor 'deformado por frecuencia' de la frecuencia de corte especificada. Puede encontrar más información sobre el fenómeno de deformación de frecuencia en el enlace anterior.1/2

Puede encontrar muchos ejemplos sobre el diseño de filtros digitales utilizando la transformación bilineal. Encontré este , que está bastante cerca del ejemplo de Android.

niaren
fuente
Gracias. Comienzo a recordar las matemáticas que hice en la universidad; desafortunadamente no había nadie allí para mostrarme también un buen ejemplo práctico o me preocupaba algo más ...
Iulian Şerbănoiu
5

Una introducción realmente buena y completa a los filtros digitales es https://ccrma.stanford.edu/~jos/filters/filters.html . Su ejemplo particular es un filtro de paso bajo de segundo o cuarto orden muy simple. Si utiliza el objeto "Biquad", obtendrá un filtro Butterworth de segundo orden. Si usa el objeto "CascadedBiquad", obtendrá lo que se llama un filtro Linkwitz Riley de cuarto orden (pero NO un Butterworth de cuarto orden). La implementación es bastante específica. Con un poco más de trabajo, puede hacer algo mucho más genérico y utilizable para todas las aplicaciones.

Hilmar
fuente
Sí, realmente quiero entender la teoría del filtro para poder controlar los filtros que estoy usando. El filtro mencionado en la pregunta me hizo darme cuenta de que no solo debería entender cómo funciona, sino que también debería poder diseñar mis propios filtros, dependiendo de la entrada. Buen enlace, gracias!
Iulian Şerbănoiu
5

Mi primera referencia que encontré realmente útil fue la Guía del científico y del ingeniero para el procesamiento digital de señales . Creo que su fuerte es que está orientado a familiarizar al lector con los conceptos y la terminología de DSP sin profundizar demasiado en las matemáticas. Esta táctica se ajusta a mi estilo de aprendizaje y experiencia como ingeniero de software con un ligero énfasis en EE. En estos días, siempre abordo nuevos temas de esta manera tratando de comprender primero los conceptos de alto nivel y luego profundizo en los detalles con otras fuentes de información que son más detalladas / pesadas en matemáticas.

spade78
fuente
Eso es lo que comencé a releer, ya que era lo único que sé que contiene referencias a un tema de este tipo. ¡Gracias!
Iulian Şerbănoiu