J'ai besoin d'aide pour comprendre le résultat du calcul DFT / FFT.
Je suis un ingénieur logiciel expérimenté et j'ai besoin d'interpréter certaines lectures d'accéléromètre de smartphone, telles que la recherche des principales fréquences. Malheureusement, j'ai dormi pendant la plupart de mes cours d'EE au collège il y a quinze ans, mais j'ai lu sur DFT et FFT ces derniers jours (en vain, apparemment).
S'il vous plaît, aucune réponse de "allez suivre un cours d'EE". Je prévois en fait de le faire si mon employeur me paie. :)
Alors voici mon problème:
J'ai capturé un signal à 32 Hz. Voici un échantillon d'une seconde de 32 points, que j'ai cartographié dans Excel.
J'ai ensuite reçu du code FFT écrit en Java de l'Université de Columbia (après avoir suivi les suggestions d'un article sur " FFT fiable et rapide en Java ").
La sortie de ce programme est la suivante. Je crois qu'il exécute une FFT en place, donc il réutilise le même tampon pour l'entrée et la sortie.
Before:
Re: [0.887 1.645 2.005 1.069 1.069 0.69 1.046 1.847 0.808 0.617 0.792 1.384 1.782 0.925 0.751 0.858 0.915 1.006 0.985 0.97 1.075 1.183 1.408 1.575 1.556 1.282 1.06 1.061 1.283 1.701 1.101 0.702 ]
Im: [0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ]
After:
Re: [37.054 1.774 -1.075 1.451 -0.653 -0.253 -1.686 -3.602 0.226 0.374 -0.194 -0.312 -1.432 0.429 0.709 -0.085 0.0090 -0.085 0.709 0.429 -1.432 -0.312 -0.194 0.374 0.226 -3.602 -1.686 -0.253 -0.653 1.451 -1.075 1.774 ]
Im: [0.0 1.474 -0.238 -2.026 -0.22 -0.24 -5.009 -1.398 0.416 -1.251 -0.708 -0.713 0.851 1.882 0.379 0.021 0.0 -0.021 -0.379 -1.882 -0.851 0.713 0.708 1.251 -0.416 1.398 5.009 0.24 0.22 2.026 0.238 -1.474 ]
Donc, à ce stade, je ne peux pas faire des têtes ou des queues de la sortie. Je comprends les concepts DFT, tels que la partie réelle étant les amplitudes des ondes cosinus composantes et la partie imaginaire étant les amplitudes des ondes sinusoïdales composantes. Je peux également suivre ce diagramme du grand livre " Le guide du scientifique et de l'ingénieur sur le traitement numérique du signal ":
Donc mes questions spécifiques sont:
A partir de la sortie de la FFT, comment trouver les "fréquences les plus fréquentes"? Cela fait partie de mon analyse de mes données d'accéléromètre. Dois-je lire les tableaux réels (cosinus) ou imaginaires (sinus)?
J'ai une entrée de 32 points dans le domaine temporel. La sortie de la FFT ne devrait-elle pas être un tableau de 16 éléments pour les réels et un tableau de 16 éléments pour l'imaginaire? Pourquoi le programme me donne-t-il des sorties de tableau réelles et imaginaires de taille 32?
Lié à la question précédente, comment analyser les index dans les tableaux de sortie? Compte tenu de mon entrée de 32 échantillons échantillonnés à 32 Hz, je crois comprendre qu'une sortie de tableau de 16 éléments devrait avoir son index uniformément réparti jusqu'à la moitié de la fréquence d'échantillonnage (de 32 Hz), donc j'ai raison de comprendre que chaque élément du tableau représente (32 Hz * 1/2) / 16 = 1 Hz?
Pourquoi la sortie FFT a-t-elle des valeurs négatives? Je pensais que les valeurs représentaient les amplitudes d'une sinusoïde. Par exemple, la sortie de Real [3] = -1,075 devrait signifier une amplitude de -1,075 pour une onde cosinus de fréquence 3. Est-ce vrai? Comment une amplitude peut-elle être négative?