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 bins≃1.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.
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.
la source
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.
la source
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.
la source
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.
la source
regarde cette photo. c'est clair. relation entre la résolution fs et fft
la source