Comment sélectionner la résolution de fréquence et la taille de la fenêtre en FFT?

9

Je fais l'analyse du spectre d'un signal variant dans le temps avec une fréquence changeant de 200 Hz à 10 kHz. J'utilise la FFT pour analyser la composante fréquentielle du signal. Mes questions sont:

  1. Comment décider de la résolution en fréquence et de la largeur de la fenêtre pour le signal?
  2. Quel type de fonction de fenêtre convient au signal variant dans le temps?
  3. Quelle devrait être la taille optimale pour la FFT?

La fréquence d'échantillonnage du signal est de 44,1 kHz.

nitine
la source
2
Quel est le modèle de changement de fréquence? Le signal saute-t-il brusquement entre différentes fréquences ou le changement de fréquence est-il continu? Si le signal saute, pendant combien de temps pouvez-vous supposer que le signal restera à la même fréquence? Si le changement de fréquence est continu, quel modèle ce changement a-t-il (linéaire, gaussien, autre)?
Vasiliy
Il n'espère pas qu'il continue de faire varier le signal similaire au signal Chirp. l'amplitude de chaque fréquence peut changer de façon aléatoire.
nitin
4
Vous dites que vous prenez la FFT pour analyser la composante fréquentielle. Il s'agit d'une étape intermédiaire et pour répondre précisément à votre question, nous devons savoir ce que vous essayez de réaliser. Que comptez-vous faire de ces informations? Pourquoi avez-vous besoin de connaître la composante fréquence? À quelle fréquence devez-vous mettre à jour ces informations? Sans nous dire ce genre de choses, vous êtes le seul à pouvoir savoir quelle doit être la résolution. En fait, si vous n'avez besoin de connaître la réponse qu'à une ou deux fréquences, la FFT n'est peut-être même pas la meilleure solution.
Scott Seidman
@ScottSeidman, vous avez lu dans mes pensées.
Vasiliy
1
@ trav1s, nous enseignons tous différemment. Si un de mes étudiants venait à moi avec cette question posée de cette façon, j'essaierais de lui donner le même message à emporter que j'entendais avec mon commentaire détaillé ci-dessus - "Un ingénieur devrait comprendre pourquoi il fait quelque chose avant de s'y lancer ". Il existe des milliers de ressources où l'on peut trouver les équations décrivant la résolution de fréquence en fonction de N, et on avait l'impression que le questionneur les avait disponibles, mais ce message ne leur est pas attaché! Avec un peu de chance, la provocation a fait comprendre au demandeur qu'il détenait déjà la réponse.
Scott Seidman

Réponses:

4

Puisque vous travaillez avec une fréquence d'échantillonnage fixe, votre longueur FFT (qui nécessitera que votre fenêtre soit à la même largeur) augmentera votre résolution de fréquence. L'avantage d'avoir une résolution de fréquence plus fine est double: l'apparente est que vous obtenez une résolution de fréquence plus fine, de sorte que vous pourriez être en mesure de distinguer deux signaux qui sont très proches en fréquence. Le second est qu'avec une résolution de fréquence plus élevée, votre bruit de fond FFT sera plus faible. Le bruit dans votre système a une puissance fixe, sans rapport avec le nombre de points de votre FFT, et cette puissance est distribuée uniformément (si nous parlons de bruit blanc) à toutes vos composantes de fréquence. Ainsi, le fait d'avoir plus de composantes de fréquence signifie que la contribution individuelle au bruit de vos bacs de fréquence sera réduite, tandis que le bruit total intégré reste le même, ce qui se traduit par un plancher moins bruyant. Cela vous permettra de distinguer une plage dynamique plus élevée.

Cependant, l'utilisation d'une FFT plus longue présente des inconvénients. La première est que vous aurez besoin de plus de puissance de traitement. La FFT est un algorithme O (NlogN), où N est le nombre de points. Bien que cela ne soit pas aussi dramatique que le DFT naïf, l'augmentation de N commencera à saigner votre processeur, surtout si vous travaillez dans les confins d'un système embarqué. Deuxièmement, lorsque vous augmentez N, vous gagnez une résolution en fréquence tandis que vous perdez la résolution en temps. Avec un N plus grand, vous devez prélever plus d'échantillons pour arriver à votre résultat dans le domaine fréquentiel, ce qui signifie que vous devez prélever des échantillons plus longtemps. Vous pourrez détecter une plage dynamique plus élevée et une résolution de fréquence plus fine, mais si vous recherchez des éperons, vous aurez une idée moins claire du QUAND cet éperon s'est produit exactement.

Le type de fenêtre que vous devez utiliser est un tout autre sujet, dont je ne suis pas si informé que vous pour répondre à QUELLE est la meilleure. Cependant, différentes fenêtres ont des caractéristiques de sortie différentes, dont la plupart (sinon toutes) sont réversibles après le traitement du résultat FFT. Certaines fenêtres peuvent faire saigner vos composants de fréquence dans les cases latérales (si je ne me trompe pas, la fenêtre Hanning fait apparaître vos composants sur trois cases), d'autres peuvent vous donner une meilleure précision de fréquence tout en introduisant une erreur de gain dans vos composants. Cela dépend complètement de la nature du résultat que vous essayez d'obtenir, donc je ferais des recherches (ou des simulations) pour arriver à celui qui est le mieux pour votre application spécifique.

mort
la source
Notez que s'il peut être intuitif d'exécuter des évaluations FFT sur des blocs séquentiels, il est également possible de les exécuter sur des blocs de données d'entrée qui se chevauchent , c'est-à-dire de démarrer une FFT de 1024 points tous les 256 échantillons, ce qui donne une résolution temporelle un peu meilleure, bien sûr à le coût d'encore plus de calcul.
Chris Stratton
0

Donc, tout d'abord, la fréquence d'échantillonnage doit être au moins le double de la fréquence maximale du signal qu'elle est (44,1 kHz> 2x10 kHz). Ensuite, si la longueur de la fenêtre dans le domaine temporel est T, la résolution en fréquence avec FFT est exactement 1 / T. La résolution dans le domaine fréquentiel à l'aide de la FFT n'a rien à voir avec la fréquence d'échantillonnage dans le domaine temporel. Mais comme indiqué dans la réponse précédente, la fenêtre de domaine temporel ne peut pas être trop grande car vous perdriez alors des informations sur les signaux parasites qui n'apparaissent que momentanément. Il doit donc y avoir un compromis entre la résolution de fréquence et la détection de signaux parasites. Enfin, la FFT n'est pas le seul algorithme à prendre un signal du domaine temporel au domaine fréquentiel. Si vous recherchez une haute résolution dans le domaine fréquentiel avec un nombre limité d'échantillons dans le domaine temporel, vous pouvez utiliser des techniques d'estimation spectrale haute résolution telles que MUSIC et ESPIRIT. Ceux-ci sont également utilisés pour l'estimation de la direction d'arrivée (DOA) qui est assez similaire au problème d'estimation spectrale.

Yasir Ahmed
la source
euh non ... relisez nyquist. Si vous voulez reconstruire de manière fiable une fréquence, vous aurez besoin de 5-10x. De même, une fenêtre plus large permet de reconstruire la fréquence d'intérêt la plus basse en passant aux sous-harmoniques. De toute façon, un signal parasite ne sera pas vu de manière fiable dans une FFT car une impulsion dirac peut avoir un contenu haute fréquence Son devoir est "aléatoire" seule une composante fiable / périodique sera montrée avec une amplitude significative
JonRB
la plage de fréquences du signal d'intérêt est de 200 Hz à 10 kHz ... donc la fréquence d'échantillonnage est au moins 4,41 fois la fréquence du signal ... si nous regardons l'extrémité inférieure du spectre, la fréquence d'échantillonnage est 220,5 fois ... nous pourrions avoir besoin de savoir comment la fréquence est distribuée statistiquement ... de toute façon je pense que la fréquence d'échantillonnage n'est pas un problème ici!
Yasir Ahmed