MATLAB « s filtfilt effectue un filtrage avant-arrière, cest-à-dire filtre, inverse le signal, filtre à nouveau, puis inverse à nouveau. Apparemment, cela est fait pour réduire les décalages de phase? Quels sont les avantages / inconvénients de lutilisation dun tel filtrage (je suppose que cela entraînerait dans une augmentation effective de lordre des filtres).

Serait-il préférable dutiliser filtfilt toujours au lieu de filter ( Existe-t-il des applications où il est nécessaire de lutiliser et où il ne devrait pas être utilisé?

Commentaires

Réponse

Il est préférable de lexaminer dans le domaine fréquentiel. Si $ x [n] $ est la séquence dentrée et $ h [n] $ est la réponse impulsionnelle du filtre, alors le résultat du premier passage de filtre est

$$ X (e ^ {j \ omega}) H (e ^ {j \ omega}) $$

avec $ X (e ^ {j \ omega}) $ et $ H (e ^ {j \ omega}) $ le Transformées de Fourier de $ x [n] $ et $ h [n] $, respectivement. Linversion du temps correspond au remplacement de $ \ omega $ par $ – \ omega $ dans le domaine fréquentiel, donc après linversion du temps, nous obtenons

$$ X (e ^ {- j \ omega}) H (e ^ {- j \ omega}) $$

Le deuxième passage de filtre correspond à une autre multiplication avec $ H (e ^ {j \ omega}) $:

$$ X (e ^ {- j \ omega}) H (e ^ {j \ omega}) H (e ^ {- j \ omega}) $ $

qui, après inversion de temps, donne finalement le spectre du signal de sortie

$$ Y (e ^ {j \ omega}) = X (e ^ {j \ omega }) H (e ^ {j \ omega}) H (e ^ {- j \ omega}) = X (e ^ {j \ omega}) | H (e ^ {j \ omega}) | ^ 2 \ tag {1} $$

car pour les coefficients de filtre à valeur réelle, nous avons $ H (e ^ {- j \ omega}) = H ^ {*} (e ^ {j \ omega}) $. Léquation (1) montre que le spectre de sortie est obtenu en filtrant avec un filtre de réponse en fréquence $ | H (e ^ {j \ omega}) | ^ 2 $, whi ch est purement réel, cest-à-dire que sa phase est nulle et par conséquent il ny a pas de distorsions de phase.

Cest la théorie. Dans le traitement en temps réel, il y a bien sûr un retard assez important car linversion de temps ne fonctionne que si vous autorisez une latence correspondant à la longueur du bloc dentrée. Mais cela ne change pas le fait quil ny a pas de distorsions de phase, cest juste un retard supplémentaire des données de sortie. Pour le filtrage FIR, cette approche nest pas particulièrement utile car vous pourriez aussi bien définir un nouveau filtre $ \ hat {h } [n] = h [n] * h [-n] $ et obtenir le même résultat avec un filtrage ordinaire. Il est plus intéressant dutiliser cette méthode avec des filtres IIR, car ils ne peuvent pas avoir de phase nulle (ou de phase linéaire, ie un délai pur).

En résumé:

  • si vous avez ou avez besoin dun filtre IIR et que vous voulez une distorsion de phase nulle, ET le délai de traitement nest pas un problème alors cette méthode est utile

  • si le délai de traitement est un problème, vous ne devriez pas lutiliser

  • si vous avez un filtre FIR , vous pouvez facilement calculer une nouvelle réponse de filtre FIR qui équivaut à utiliser cette méthode. Notez quavec les filtres FIR, une phase exactement linéaire peut toujours être réalisée.

Commentaires

  • Jai créé une balise nommée maximum-aposteriori-estimation. Pourriez-vous le renommer en maximum-a-posteriori-estimation? Par erreur, jai oublié le - après le a. Merci.

Réponse

Jai trouvé cette vidéo être très, très utile (il développe la réponse de Matt).

Voici quelques idées clés de la vidéo:

  • La phase zéro sera nentraînera aucune distorsion de phase, mais produira un filtre non causal. Cela signifie que si les données sont filtrées au fur et à mesure de leur collecte, ce ne sera pas une option (valable uniquement pour les données stockées que nous pouvons post-traiter) . entrez la description de limage ici
  • Lorsque vous implémentez un filtre non causal, les transitoires deviennent flous vers lavant et vers larrière (par exemple, si nous voulons une ondulation de 2 dB, le fait que nous « allons faire un passage en avant et en arrière en utilisant le filtre signifie que nous » voulons que chacun deux ait 1 dB). entrez la description de limage ici
  • Utilise la propriété dinversion temporelle de la transformée de Fourier en temps discret. entrez la description de limage ici
  • La réponse en fréquence effective causée par FILTFILT est lamplitude de celle dans une direction, au carré. Prenez votre signal dentrée, x[n], filtrez-le, inversez le résultat, filtrez-le à nouveau et inversez-le à nouveau (létape dinversion temporelle nécessite que toutes les données soient disponibles). entrez la description de limage ici

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *