J'utilise une FFT pour analyser ce qui est essentiellement l'enveloppe de puissance d'un signal (voir ici pour plus d'informations sur le projet contenant), et, comme les nombres de puissance sont toujours positifs, pour éliminer la composante DC, j'aimerais utiliser une fenêtre fonction qui est 50/50 positive et négative, par rapport à la fonction tout positive habituelle.
J'ai pris la fonction " flat top ", supprimé le a0
biais et converti les cosinus en sinus, mais je ne suis pas sûr que ce soit optimal (ou même significatif).
Toute suggestion?
fft
window-functions
Daniel R Hicks
la source
la source
Réponses:
La dérivée première des fonctions de fenêtre continue les plus courantes (von Hann, etc.) rejettera le courant continu, mais aura toujours une réponse en fréquence d'amplitude similaire à celle de la fonction de fenêtre d'origine; vous pouvez donc toujours utiliser vos critères de "qualité" d'origine pour la sélection de la fenêtre, si elle n'est pas liée à la phase.
la source
Si vous souhaitez effectuer une analyse spectrale sur un signal avec une grande composante CC et que vous souhaitez supprimer ce pic CC, alors une fonction de fenêtre n'est pas ce que vous voulez. Comme d'autres réponses l'ont noté, un filtre passe-haut (ou, vu différemment, un filtre coupe-bande avec l'entaille à fréquence nulle) est une solution appropriée.
Pour comprendre pourquoi, vous devez réfléchir à ce que l'application d'une fonction de fenêtre fait à la réponse en fréquence de chaque sortie DFT. La DFT est définie comme:
Une interprétation du fonctionnement de la DFT est celle d'une banque de filtres à fréquences également espacées entre - f sN etfs- fs2 . Refonte de la somme ci-dessus comme suit:Fs2
où:
Ainsi, la ème sortie DFT est générée en prenant d'abord le signal d'entrée x [ n ] et en le multipliant par une exponentielle complexe à la fréquence - 2 π kk x[n] pour donner un signal abaisséxk[n]. Le signal résultant est ensuite additionné sur lafenêtre àNéchantillons pour produire la sortie DFTX[k]. Il s'agit en fait d'un filtre à moyenne mobile (parfois appelé filtre à wagon couvert), dont la réponse impulsionnelle peut être décrite comme:−2πkN xk[n] N X[k]
La réponse en amplitude du filtre boxcar peut être trouvée en prenant la transformée de Fourier à temps discret (DTFT) de cette réponse impulsionnelle:
Avec la fonction de fenêtre en place, le downconvertedXk[ n ] passe effectivement à travers un filtre FIR avec une réponse impulsionnelle décrite par la fonction fenêtre. Ainsi, la réponse en amplitude par sortie de la DFT est:
oùW( f) le DTFT de la fonction fenêtre w [ n ] . Notez maintenant que si vous avez choisi une fonction de fenêtre qui avait un zéro à DC et l'avez utilisée pour prémultiplierx [ n ] avant la DFT, vous provoqueriez en fait l'effet non voulu de l'annulation non seulement du courant continu dans le spectre résultant, mais aussi des fréquences centrales de chacune des sorties DFT. Ce n'est probablement pas ce que vous voulez.
Donc, si vous voulez vraiment simplement annuler la composante CC du signal, la supprimer via un autre type de prétraitement, pas de fenêtrage dans le domaine temporel, est la voie à suivre. Vous pouvez utiliser un filtre passe-haut linéaire avec une fréquence de coupure très basse ou soustraire la moyenne estimée du signal en premier, par exemple. Le choix entre ces méthodes doit être basé sur les autres contraintes de votre système.
la source
Je ne pense pas que l'utilisation d'une fonction de fenêtre soit un bon moyen de supprimer DC. Comme l'endolith l'a mentionné, une méthode courante consiste simplement à soustraire la moyenne avant le fenêtrage. Une autre option serait d'appliquer un filtre passe-haut à votre signal avant l'analyse, par exemple, avec une fréquence de coupure d'environ 10 Hz.
la source