2011-05-12 3 views
3

Supposons une séquence de nombres (données de type onde). J'effectue ensuite la transformation DFT (ou FFT). La prochaine étape que je veux accomplir est de trouver les fréquences, qui correspondent aux fréquences réelles qui sont incluses dans les données. Comme nous le savons, la sortie DFT a une partie réelle et imaginaire a [i] et b [i]. Si nous regardons le spectre (sqrt (a [i]^2 + b [i]^2) alors le maximum correspond à la fréquence qui est incluse dans les données La question est comment trouver toutes les fréquences de DFT? problème se pose quand il y a beaucoup d'autres pics qui peuvent être faussement sélectionnésComment sélectionner les fréquences de DFT

Répondre

3

J'ai eu un problème similaire lorsque vous faites un traitement d'analyse spectrale des données quand je rédigeais ma thèse d'honneur

Vous avez raison:.. Pour les fréquences dominantes Il suffit généralement de regarder l'ampleur de la valeur complexe dans la DFT

Malheureusement, il faut à peu près écrire un algorithme intelligent qui va identifier les pics (fréquences). algorithme fonctionne dépend fortement de ce à quoi ressemble la DFT pour votre application. Mes DFT avaient toutes des caractéristiques similaires, il n'était donc pas trop difficile de mettre en place un algorithme heuristique. Si votre DFT peut prendre n'importe quelle forme, vous obtiendrez probablement beaucoup de faux positifs et/ou de faux négatifs. La façon dont je l'ai fait était d'identifier des régions dans la DFT avec une grande amplitude (pics) qui étaient entourés de faible amplitude (creux). Vous pouvez définir la différence minimale entre les pics et les creux (la sensibilité) en tant que constante fois l'écart-type des données. De plus, vous pouvez dire que tous les pics qui tombent en dessous d'une certaine amplitude (seuil) sont complètement ignorés, car ils ne sont que du bruit.

Bien sûr, la technique ci-dessus ne fonctionnera vraiment que si vous avez des fréquences relativement bien définies dans vos données. Si votre DFT est hautement aléatoire, vous devrez prendre soin de régler la sensibilité et le seuil avec précaution. N'oubliez pas que l'ampleur de vos données est symétrique, vous n'avez donc qu'à en regarder la moitié. Une fois que vous avez identifié les fréquences dans votre DFT, n'oubliez pas de le convertir dans les unités que vous voulez. De mémoire, si vous avez n échantillons pris avec discrétisation temporelle dt, alors si vous avez un pic au point de données 5 (par exemple), où le premier point de données est 1, alors la fréquence est 1/(n * dt) radians par unité de temps. (Je n'ai pas fait cela depuis un moment, donc cette formule peut être désactivée par un facteur de Pi ou quelque chose)

Questions connexes