Jessaie dimplémenter une FFT pour comprendre son fonctionnement. Jutilise un fichier son aléatoire (donc je ne peut « t contrôler la taille du signal), avec une fréquence déchantillonnage de 44,1Khz. Je » m utilise cette bibliothèque

https://www.nayuki.io/res/free-small-fft-in-multiple-languages/Fft.java

Lobjectif est dappliquer cette formule à obtenir la fréquence: F = n * Fs / N

Avec n nombre de bacs. Fs fréquence déchantillonnage et N taille de la FFT

1) Un Fft est censé avoir une longueur, la plupart dentre eux utilisent une puissance de 2 radix. Mais comment puis-je connaître la longueur de la FFT si je lapplique à tout un tableau de données? est-ce la taille de ce tableau?

2) Je ne comprends pas les bins, comment sont-ils traités? Je sais que FFT fonctionne avec des morceaux de données, mais si je donne un tableau complet de données, comment les bins sont-ils « créés ».

Commentaires

  • Vous pouvez répondre à ces questions avec juste un peu de recherche et de lecture sur Internet. Je vous recommande également de commencer votre codage avec une construction mathématique signaux de durée assez courte et appliquez votre logiciel FFT à ceux-ci et examinez les résultats.
  • En fait, jai beaucoup cherché mais je ne pouvais pas ' comprendre, mais peut-être Je ' je suis trop lent. Merci de votre inquiétude.
  • Essayez de rechercher sur " Transformée de Fourier discrète " ou " comment fonctionne un DFT " au lieu de " comment fonctionne une FFT ". Une Transformée de Fourier Rapide est un raccourci de calcul dune Trans de Fourier Discrète forme. Avec cette dernière recherche, vous êtes plus susceptible de trouver des informations sur lefficacité du calcul plutôt que sur le processus sous-jacent. Je ne ' pas voir comment vous pouvez vous attendre à ce que quelquun explique mieux les principes fondamentaux dans une réponse rapide du forum que dans un tas de sites Web dédiés à cela. Les quatre premiers articles de mon blog devraient également vous être utiles. Commencez par dsprelated.com/showarticle/754.php .

Réponse

Question 1

Si vous lappliquez sur toute la longueur du tableau, la longueur de la FFT serait la longueur du tableau. Mais, la FFT est plus efficace si la longueur est une puissance de deux, il est donc courant de placer 0 « s sur la fin du signal jusquà ce que sa longueur soit une puissance de 2.

Exemple trop simple …

x = [3.4, 2.56, 1.3]

x a une longueur de 3, la puissance suivante sur 2 après 3 est égal à 4, nous changeons donc x par

x = [3.4, 2.56, 1.3, 0]

et appliquez une FFT de longueur 4.

Un autre gros MAIS! Si votre signal est long, il devient extrêmement inefficace pour tout faire en même temps. Vous ne voudriez pas essayer de faire une FFT sur un fichier audio de la longueur même dune chanson courte. Dans ce cas, nous divisons le signal en morceaux de taille raisonnable, exécutons un FFT sur chacun, et moyenne des résultats.

Il y a de bonnes chances que ce que vous voulez réellement faire avec vos données ne soit pas seulement une FFT standard, mais plutôt le processus de calcul de la moyenne que jai décrit ci-dessus. Google Bartlett et Welch méthodes pour plus d etails.

Question 2

Je ne suis pas sûr à 100% de ce que vous demandez ici. Je vais linterpréter comme vous voulez savoir comment la largeur des tranches de fréquence est déterminée et exécutée avec cela.

La largeur de chaque tranche de fréquence est déterminée uniquement par la vitesse à laquelle le signal a été échantillonné et la longueur de la FFT. La largeur de chaque bac est la fréquence déchantillonnage divisée par le nombre déchantillons de votre FFT.

df = fs / N

Les intervalles de fréquences commencent à -fs/2 et montent jusquà fs/2. Cela signifie que sils sont échantillonnés à 100 Hz pour 100 échantillons, vos intervalles de fréquences seront de largeur 1 Hz. Si vous prenez 200 échantillons, vous aurez désormais 2 fois plus de tranches de fréquences et leur largeur sera de 1 / 2Hz chacune.

Commentaires

  • Merci beaucoup, cétait tout ce que je navais ' compris.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *