Qu'est-ce que cela fait dans ma sortie de filtre LP devenu HP?


10

J'essaie de filtrer HP un signal en le filtrant LP et en soustrayant la sortie du filtre d'origine. Pour obtenir le signal filtré LP, j'ai filtré en arrière-avant en utilisant un filtre Butterworth du troisième ordre pour un signal de 16 000 échantillons. La fréquence de coupure était de 0,5 Hz à 250 Hz. Aucune fenêtre n'a été utilisée.

Dans les premiers 85% des échantillons, la sortie de cette méthode semble chevaucher complètement le signal réellement filtré par HP. Cependant, à la fin de la sortie, il y a un phénomène incroyablement sincère.

  • Quelles sont les causes?
  • Que pourrais-je changer pour rendre cette méthode possible?

Voici les deux signaux superposés. Le bleu est filtré par HP et le rouge est obtenu par soustraction.

Signaux HP et orig-LP

Voici la différence absolue par échantillon. Ils ne sont jamais exactement égaux; la différence minimale est de 8e-12. 87% des valeurs sont inférieures à 0,01.

différence entre les deux méthodes

(S'il existe un meilleur moyen d'obtenir un filtre HP à partir du d'un filtre LP , je serais heureux de l'apprendre.)H(z)


Pouvez-vous inclure le code MATLAB que vous utilisez pour générer les tracés? Les données ne sont pas importantes; vous pouvez simplement le simuler avec des échantillons aléatoires à la place si nécessaire.
Jason R

Réponses:


0

Methinks @ hotpaw2 est sur la bonne voie. Je suppose que filtfilt ne gère pas tout à fait les conditions initiales pour le filtre inverse. Cela semble être un problème vraiment difficile - je ne pense pas que je puisse reprocher à Mathworks de se tromper ...

Le correctif me semble assez simple: mettre à zéro la fin de votre signal jusqu'à ce que le sinc disparaisse et supprimer le remplissage (désormais différent de zéro!) Après le filtre.


0

Vous effectuez un filtre vers l'avant pour l'un et un filtre vers l'avant uniquement pour l'autre. Ainsi, les deux filtres se comporteront différemment sur un ou les deux bords.

Si votre signal est fortement stationnaire et exactement périodique dans la longueur de la fenêtre de données, vous pouvez essayer d'enrouler les données de manière circulaire et de démarrer vos filtres en fonction de leur longueur de réponse impulsionnelle.


Désolé si je n'ai pas été assez clair. Le signal que je compare à (bleu) est également filtré avant-arrière ( filtfiltet butter(3,0.5/250,high)). Le signal provient d'un ECG que je ne peux pas espérer être exactement périodique.
Andreas

Suis-je en train de mal comprendre quelque chose? Je ne peux pas comprendre le vote positif car le premier paragraphe est clairement faux.
Andreas
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.