Documentation sur les filtres en général

11

J'ai déjà posté cette question sur StackOverflow. J'ai eu une suggestion d'aller chercher une meilleure réponse ici.

Pour rendre la question plus concise, je suis intéressé par une introduction aux filtres numériques, toute ressource est bonne.

Mais d'abord, je serai satisfait si quelqu'un pouvait me pointer vers des ressources expliquant ce filtre (utilisé dans Android):

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

Ce qui m'intéresse, c'est la façon dont les paramètres du filtre sont choisis. Bien que je puisse le copier sans réfléchir, je suppose que je devrais comprendre le concept / l'idée de base derrière avant de l'utiliser.

Merci,

Iulian

Iulian Şerbănoiu
la source

Réponses:

11

Vous pouvez dériver l'expression des coefficients en effectuant une transformation bilinéaire du filtre prototype passe-bas analogique suivant

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

où est la fréquence de coupure.w0

Vous pouvez rechercher la transformation bilinéaire sur Wikipedia .

Le filtre utilisé dans l'application Android est un filtre Butterworth car la valeur choisie de Q est . Notez que dans le constructeur, l'inverse de Q est calculé et affecté à la variable iQ qui est utilisée dans le calcul des coefficients. Notez également que la variable K contient la valeur «déformée en fréquence» de la fréquence de coupure spécifiée. Vous pouvez trouver plus d'informations sur le phénomène de déformation de fréquence dans le lien ci-dessus.1/2

Vous pouvez trouver de nombreux exemples sur la conception de filtres numériques utilisant la transformation bilinéaire. J'ai trouvé celui-ci , qui est assez proche de l'exemple Android.

niaren
la source
Je vous remercie. Je commence à me souvenir des mathématiques que j'ai faites au collège; malheureusement personne n'était là pour me montrer aussi un bon exemple pratique ou j'étais préoccupé par autre chose ...
Iulian Şerbănoiu
5

Https://ccrma.stanford.edu/~jos/filters/filters.html est une très bonne introduction complète aux filtres numériques . Votre exemple particulier est un filtre passe-bas très simple de 2e ou 4e ordre. Si vous utilisez l'objet "Biquad", vous obtiendrez un filtre Butterworth de second ordre. Si vous utilisez l'objet "CascadedBiquad", vous obtiendrez ce qu'on appelle un filtre Linkwitz Riley de 4e ordre (mais PAS un Butterworth de 4e ordre). L'implémentation est assez spécifique. Avec un peu plus de travail, vous pouvez faire quelque chose de beaucoup plus générique et utilisable pour toutes les applications.

Hilmar
la source
Oui, je veux vraiment comprendre la théorie des filtres pour pouvoir contrôler les filtres que j'utilise. Le filtre mentionné dans la question m'a fait réaliser que non seulement je devrais comprendre comment cela fonctionne, mais je devrais également pouvoir concevoir mes propres filtres, en fonction de l'entrée. Joli lien, merci!
Iulian Şerbănoiu
5

Ma première référence que j'ai trouvée très utile était le Guide du scientifique et de l'ingénieur sur le traitement numérique du signal . Je pense que son point fort est qu'il vise à familiariser le lecteur avec les concepts et la terminologie du DSP sans trop approfondir les mathématiques. Cette approche correspondait à mon style d'apprentissage et à mes antécédents en tant qu'ingénieur logiciel, avec un léger accent sur l'EE. Ces jours-ci, j'approche toujours de nouveaux sujets de cette manière en essayant de comprendre d'abord les concepts de haut niveau, puis en approfondissant les détails avec d'autres sources d'informations plus détaillées / plus mathématiques.

spade78
la source
C'est ce que j'ai commencé à relire car c'était la seule chose que je connaisse contenant des références à un tel sujet. Merci!
Iulian Şerbănoiu