niketou
Messages postés295Date d'inscriptiondimanche 4 mai 2003StatutMembreDernière intervention 6 décembre 2010
-
10 juin 2006 à 18:33
niketou
Messages postés295Date d'inscriptiondimanche 4 mai 2003StatutMembreDernière intervention 6 décembre 2010
-
11 juin 2006 à 21:45
Salut.
J'ai pris une source de fft mais je n'ai pas compris un truc:
Je me retrouve avec deux tableaux de sortie (reel et imaginaire en floats).
Je n'ai pas comrpis comment et dans quelle ordre ercuperer les frequence svp.
Que signifie ceci:
for (i=0;i<1024;i++){
mag=(float)(sqrt(pow(RealOut[i],2)+pow(ImageOut[i],2)));
freq=(float)((44100*(i+1))*2);
freq/=Buffer.dwBufferLength;
}
Guilou34
Messages postés142Date d'inscriptionmercredi 5 avril 2006StatutMembreDernière intervention29 janvier 20161 11 juin 2006 à 14:16
Salut.
<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /?>
FFT produit une suite de vecteurs complexes de la forme x+iy, ( i=opérateur qui appliqué à un vecteur le fait pivoter de 90° , c'est pourquoi l'appliquer 2 fois revient à multiplier par -1).
Le module de (x+iy)= racine carrée de (x2+y2 )appelé ici mag dans la ligne 2. (théorème de Pythagore)
FFT agit sur une suite de valeurs d'une grandeur, prises à intervalles égaux pendant une durée T,la fréquence associée à chaque vecteur dépend donc de la valeur de T et du nombre de valeurs. D'où les lignes 3 et 4. Pour les décoder il faudrait afficher tout le code : on utile parfois des artifices de calcul pour gagner de la place ou du temps.
Guilou34
Messages postés142Date d'inscriptionmercredi 5 avril 2006StatutMembreDernière intervention29 janvier 20161 11 juin 2006 à 20:51
module =amplitude
En principe il faut creer deux vecteurs un pour l'amplitude mag [n] et un pour la fréquence freq[n].
Et dans la boucle remplacer mag par mag[i] et freq par freq[i] pour obtenir un spectre de fréquences.