Quelle est la relation entre la longueur de la FFT et la résolution de fréquence?

67

Si j'ai échantillonné un signal en utilisant des méthodes d'échantillonnage appropriées (Nyquist, filtrage, etc.), comment puis-je associer la longueur de ma FFT à la résolution de fréquence résultante que je peux obtenir?

Comme si j'avais une onde sinusoïdale de 2 000 Hz et 1 999 Hz, comment pourrais-je déterminer la longueur de la FFT nécessaire pour dire avec précision la différence entre ces deux ondes?

Kellenjb
la source

Réponses:

81

La résolution en fréquence dépend de la relation entre la longueur de la FFT et le taux d'échantillonnage du signal d'entrée.

Si nous collectons 8192 échantillons pour la FFT, nous aurons:

8192 samples2=4096 FFT bins

Si notre fréquence d'échantillonnage est de 10 kHz, le théorème d'échantillonnage de Nyquist-Shannon indique que notre signal peut contenir un contenu de fréquence allant jusqu'à 5 kHz. Ensuite, notre résolution de fréquence bin est:

5 kHz4096 FFT bins1.22 Hzbin

Ceci est peut - être le moyen plus facile de l' expliquer , mais sur le plan conceptuel simplifié: votre résolution bin est juste fsampNfsamp

Nous pouvons voir ci-dessus que pour obtenir des bacs FFT plus petits, nous pouvons soit utiliser une FFT plus longue (c'est-à-dire prélever plus d'échantillons au même taux avant d'exécuter la FFT), soit réduire notre taux d'échantillonnage.

La prise:

Il y a toujours un compromis entre résolution temporelle et résolution en fréquence.

Dans l'exemple ci-dessus, nous devons collecter 8192 échantillons avant de pouvoir exécuter la FFT, ce qui prend 0,82 seconde pour un échantillonnage à 10 kHz.

Si nous essayions d'obtenir des bacs FFT plus petits en utilisant une FFT plus longue, il faudrait encore plus de temps pour collecter les échantillons nécessaires.

Cela peut être OK, peut-être pas. Le point important est qu’à une fréquence d’échantillonnage fixe, une résolution en fréquence croissante diminue la résolution temporelle. Plus votre mesure est précise dans le domaine fréquentiel, moins vous pouvez être précis dans le domaine temporel. Vous perdez effectivement toutes les informations de temps dans la longueur de la FFT.

Dans cet exemple, si une tonalité de 1999 Hz commence et s'arrête dans la première moitié de l'échantillon FFT de 8192 et qu'une tonalité de 2002 Hz est émise dans la seconde moitié de la fenêtre, nous verrions les deux, mais ils sembleraient s'être produits de la même manière. temps.

Vous devez également tenir compte du temps de traitement. Une FFT de 8192 points nécessite une puissance de traitement décente. Un moyen de réduire ce besoin consiste à réduire le taux d'échantillonnage, qui est le deuxième moyen d'augmenter la résolution en fréquence.

Dans votre exemple, si vous réduisez votre taux d'échantillonnage à 4096 Hz, vous avez uniquement besoin d'une FFT à 4096 points pour atteindre des intervalles de 1 Hz * à 4096 Hz. Dans ce cas, vous n'avez besoin que d'une FFT à 4096 points pour atteindre des intervalles de 1 Hz et vous pouvez toujours résoudre un problème. Signal 2khz. Cela réduit la taille de la corbeille FFT, mais réduit également la bande passante du signal.

En fin de compte, avec une FFT, il y aura toujours un compromis entre résolution de fréquence et résolution temporelle. Vous devez faire un peu d'équilibre pour atteindre tous les objectifs.

marque
la source
avec des balises d'en-tête et une certaine mise en forme, ce message pourrait aller de bon à excellent. Vous avez abordé tout ce que je voulais noter et très bien, mais le format du message est réduit au nombre de personnes, car sa longueur est prohibitive. Si vous donnez des en-têtes avec chaque section de ce que vous discutez, les gens passeront à l'essentiel. cela les suites et votre nombre de +1 augmentera beaucoup. Pas de moi bien sûr, comme vous l'avez déjà mérité.
Kortuk
@kurtuk J'ai craché celui-ci dans l'urgence, je vais nettoyer le formatage quand j'ai du temps libre (ou n'hésitez pas à le modifier si vous le souhaitez).
Marc
1
@kortuk, le nom commence par un «o». Je supposais que vous l'aviez, je partageais juste mon point de vue, à la fois pour vous si vous ne le saviez pas déjà, mais davantage pour la communauté dans son ensemble.
Kortuk
1
Notez que vous n'avez pas à calculer la FFT. Si vous voulez seulement connaître quelques bacs, il est moins coûteux de calculer la DFT de ces bacs seulement que de faire fonctionner une FFT optimisée qui calcule tous les bacs à la fois en partageant de nombreuses opérations.
Chris Stratton
Il convient également de noter qu’un compromis similaire dans le domaine fréquence / temps s’applique aux filtres analogiques et IIR.
Caleb Reister
10

fsNfs

La capacité de différencier deux signaux très rapprochés dépend fortement des amplitudes relatives et de la fonction de fenêtrage utilisée.

Vous constaterez peut-être que l' utilisation de l'analyseur de signaux Baudline est un bon moyen de développer une certaine intuition à ce sujet - et non, gérer des FFT et tracer un spectre à la fois dans Matlab ou Python / Numpy n'est pas la même chose.

EDIT: Il y a aussi une astuce pour remplir l'entrée avec des zéros et prendre une plus grande FFT. Cela n'améliorera pas votre capacité de différenciation mais rendra le spectre plus lisible. C'est en gros une astuce similaire à l'antialiasing dans les graphiques vectoriels.

jpc
la source
Suis-je le seul à ne pas voir le code Latex affiché correctement formaté?
stevenvh
@stevenvh ne fonctionne pas pour moi aussi.
terrasse le
Travaille pour moi. Le latex est seulement 2 places.
Kortuk
2
Fixe (déjà depuis un certain temps). Le module complémentaire NoScript de Firefox a bloqué mathjax.org.
stevenvh
3

Il est intéressant de noter qu'une FFT est une alternative au calcul de plusieurs paires de sommes distinctes (k = 0..sample_length-1) de Sample [k] * SineRefWave [j] [k] et Sample [j] * CosRefWave [j ] [k], pour tout j jusqu’à la moitié de la longueur de l’échantillon. Si l'on a besoin d'afficher des amplitudes à toutes ces fréquences, une FFT les calculera toutes en temps O (NlN), alors que les calculer individuellement prendrait un temps en O (N ^ 2). D'un autre côté, si l'on n'a besoin que d'afficher des amplitudes à quelques fréquences, il est souvent préférable de les calculer individuellement, surtout si l'on utilise un processeur ou un DSP capable de calculer efficacement ce style de somme.

Il convient également de noter qu’une FFT avec une fenêtre d’échantillonnage de 20 ms, par exemple, ne pourra pas faire la distinction entre une tonalité unique de 1975Hz ou une combinaison de fréquences (1975-N) Hz et (1975 + N) Hz pour N <25, il peut être utilisé pour mesurer des fréquences isolées avec une précision plus fine que la fenêtre d'échantillonnage s'il n'y a pas d'autre contenu spectral à proximité. Une fréquence unique de 1975Hz reprendra également dans les fréquences 1950Hz et 2000Hz, de même qu'une combinaison de tonalités de 1974Hz et de 1976Hz. Une tonalité isolée de 1974Hz, cependant, serait plus forte dans la case 1950Hz que dans la case 2000Hz, et une tonalité de 1976Hz serait plus forte dans la case 2000Hz.

supercat
la source
1

La résolution en fréquence ne dépend pas de la longueur de la FFT, mais de la durée totale de la période d'échantillonnage T, c'est-à-dire 1 / T, qui est également la composante de fréquence la plus basse obtenue.

Remarque: le remplissage à zéro n'augmente pas la résolution de fréquence; La TFD du signal de remplissage à zéro est simplement une meilleure approximation de la DTFT du signal original.

chaohuang
la source
0

Si vous connaissez la plage de fréquences d'entrée possibles et si la plage est étroite, vous pouvez appliquer le sous-échantillonnage pour réduire le nombre d'échantillons et le temps nécessaire au calcul de la FFT. Avec 256 échantillons et une fréquence d'échantillonnage de 256 Hz, vous obtenez la résolution souhaitée de 1 Hz et une bande passante sans alias de 128 Hz.

Rainald62
la source
-3

regarde cette photo. c'est clair. relation entre la résolution fs et fft

entrez la description de l'image ici

hamid
la source
5
Ce n'est pas tout à fait clair de cette image ce qui se passe. (Cela n'aide pas que l'image ne soit pas en anglais.) Qu'est-ce que cela ajoute que les autres réponses ne mentionnent pas?
Greg d'Eon