Si une phase linéaire est une exigence, cela vous orientera probablement vers une implémentation FIR. Il est possible de construire des filtres IIR qui ont une phase linéaire approximative, mais il est facile de concevoir une FIR à phase linéaire.
Si vous êtes préoccupé par la latence, le filtrage avant-arrière comme dans filtfilt
n'est pas vraiment une bonne option. En général, il est vraiment destiné à être utilisé dans un processus hors ligne, car pour implémenter la technique exactement, vous devez exécuter l'intégralité du signal vers l'avant, puis faire la même chose en sens inverse. Cela implique que vous avez accès à la totalité du signal à la fois, ce qui n'est pas proportionné à un faible retard.
En général, un filtre FIR nécessitera un ordre supérieur pour un ensemble donné d'exigences de performances. Cependant, les filtres FIR apportent de réels avantages, tels qu'une stabilité garantie, une moindre sensibilité aux erreurs d'arrondi (car l'erreur de quantification n'est pas renvoyée à travers le filtre, bien que vous puissiez compenser cela avec une complexité accrue), et simplement réalisée réponse de phase linéaire. De plus, des implémentations de filtres FIR efficaces sont disponibles pour de nombreuses architectures de processeur, ce qui atténue quelque peu le coût des prises supplémentaires.
Une autre façon d'atténuer le coût supplémentaire pour les filtres FIR dans votre situation est de tirer parti de techniques de traitement du signal multidébit efficaces. Plus précisément, vous pouvez utiliser une approche de décimation polyphasée pour réduire considérablement le nombre de calculs que vous effectuez dans le processus de décimation de votre signal. Cela a pour effet de diminuer le nombre de prises effectives (en termes de complexité de calcul) dans le filtre de décimation. De plus, si vous devez décimer de manière importante, les approches à plusieurs étapes peuvent vous aider à réduire davantage votre charge. Le livre d'introduction de DSP à Lyon contient de bons documents faciles à lire sur ces sujets.
Étant donné des paramètres plus spécifiques de votre système, on pourrait faire des recommandations plus pointues. Quelles sont vos exigences de conception de filtre? De quelles capacités de calcul votre plateforme dispose-t-elle? À quel taux d'échantillonnage décimerez-vous?
Qu'entendez-vous par «faible latence»?
Si vous voulez dire en dessous de 1 mS avec une forte réduction de la fréquence d'échantillonnage, alors une FIR de phase minimale peut être requise. Si vous voulez dire environ 1 / 30e de seconde, vous pourriez même être en mesure d'implémenter un filtre FIR à phase linéaire efficace en utilisant une approche d'ajout / sauvegarde à chevauchement FFT (convolution rapide).
la source
Un petit problème concernant la complexité temporelle: les filtres FIR sont vectorisables, ce qui aide vraiment dans les architectures CPU modernes. De plus, les filtres IIR subissent un impact sur les performances car la valeur de sortie actuelle dépend des valeurs de sortie antérieures, ce qui supprime l'avantage du pipelining.
la source