Si vous optimisez pour le temps d'ingénierie et que vous êtes sur une plate-forme qui prend bien en charge les grandes FFT (c'est-à-dire pas un point fixe), suivez les conseils de hotpaw2 et utilisez une convolution rapide . Il fonctionnera beaucoup mieux qu'une implémentation FIR naïve et devrait être relativement facile à implémenter.
D'un autre côté, si vous avez du temps à consacrer à cela pour obtenir la meilleure implémentation ou si vous êtes sur une plate-forme à virgule fixe, vous devez utiliser une structure multirate down-filter-up-soustract. Mais c'est un peu plus compliqué de tout faire correctement.
J'ai accès à des implémentations fiables et hautement optimisées des outils de convolution rapide et de filtrage multidébit. La convolution rapide prend environ 3 fois plus de temps pour obtenir des performances de signal équivalentes par rapport à la structure multidébit. De plus, c'est même sur une plate-forme à virgule flottante. L'écart s'élargirait considérablement sur un point fixe dsp.
De façon générale:
Conversion vers le bas:
Utilisez 8 étages de filtres demi-bande décimés par 2 pour transformer votre signal 48 kHz en un signal 187,5 Hz. La première étape de ce sous-échantillonnage peut avoir une très large bande de transition, permettant à l'énergie de se replier tant qu'elle ne se replie pas dans la plage inférieure à 60 Hz. Au fur et à mesure que les étapes progressent, le nombre de prises doit augmenter, mais elles seront appliquées à des taux d'échantillonnage progressivement inférieurs, de sorte que le coût global de chaque étape reste faible.
Filtration:
Effectuez votre filtrage serré autour des 60 Hz pc pour conserver l'énergie que vous voudrez éventuellement soustraire. Le filtrage serré présente un double avantage:
- La bande passante de transition de 1 Hz est 256 fois plus grande en termes de fréquence numérique à faible débit par rapport au débit d'origine. Ainsi, chaque pression sur votre filtre est 256 fois plus puissante.
- Le signal lui-même est à un taux inférieur, donc le filtre n'a besoin que de traiter 1/256 des données.
Conversion ascendante:
Il s'agit essentiellement de l'inverse des étapes de décimation. Chacun des 8 étages d'interpolateur double le taux en estimant l'échantillon qui se situe entre les échantillons d'entrée consécutifs. La bande de transition s'élargit à mesure que la fréquence d'échantillonnage augmente.
Soustraire:
Soustrayez votre signal filtré passe-bas à plein débit du signal d'origine. Si vous avez ajusté correctement tous les retards de groupe, la structure globale sera un filtre passe-haut avec une bande passante de transition étroite.