ALGORITHME DE FFT EN C

ghuysmans99 Messages postés 2496 Date d'inscription jeudi 14 juillet 2005 Statut Contributeur Dernière intervention 5 juin 2016 - 13 oct. 2007 à 08:36
cs_JCDjcd Messages postés 1138 Date d'inscription mardi 10 juin 2003 Statut Membre Dernière intervention 25 janvier 2009 - 14 oct. 2007 à 15:18
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/44369-algorithme-de-fft-en-c

cs_JCDjcd Messages postés 1138 Date d'inscription mardi 10 juin 2003 Statut Membre Dernière intervention 25 janvier 2009 4
14 oct. 2007 à 15:18
cs_JCDjcd Messages postés 1138 Date d'inscription mardi 10 juin 2003 Statut Membre Dernière intervention 25 janvier 2009 4
14 oct. 2007 à 15:17
Bon alors en fait du fait un FFT avec le bit reverse.
Cet algorithme est plus difficile a implementer.
Ton code n'est pas lisible, on sait pas ou l'on va.
Meme si je connais le principe, je ne comprends pas.
On peut faire une FFT directement.
A toute fin utile, voici ma version :
# //-------------------------------------------------
# // on decompose le polynome P = A0 + B0 avec les coefficients
# // de degres pairs (en A0) et impairs (en B0)
# // alors on a :
# // P(w) = A0(w) + B0(w)
# // = A(w^2) + w.B(w^2)
# // or w^2 est une racine nieme, donc on se ramene a un cas
# // de taille deux fois moins grand
# static void polyFFT(
# P_COMPLEX res,
# P_COMPLEX tabCoeff,
# int stepi,
# int n,
# P_COMPLEX w
# )
# {
#
# if(1 == n)
# {
# // P(z)=constante
# res->re = tabCoeff->re;
# res->im = tabCoeff->im;
# }
# else
# {
# int k;
# COMPLEX w2,wPowk;
#
#
# // strategie diviser pour regner
#
# // calcul du carre de <w>
# MulComplex(&w2,w,w);
# // appel recursif
# polyFFT(res ,tabCoeff ,2*stepi,n/2,&w2); // coefficients pairs
# polyFFT(res + n/2,tabCoeff + stepi ,2*stepi,n/2,&w2); // coefficients impairs
#
# // on calcule la FFT a partir de ce que l'on vient de calculer
# wPowk.re = 1.;
# wPowk.im = 0.;
# for(k=0;k<n/2;k++)
# {
# COMPLEX A,B;
#
# A = res[k];
# B = res[k + n/2];
# MulComplex(&B,&B,&wPowk);
#
# AddComplex(res + k ,&A,&B);
# SubComplex(res + k + n/2,&A,&B);
#
# MulComplex(&wPowk,&wPowk,w);
# }
# }
# } // polyFFT()

bien plus courte (normalement bien indentee)
cs_Patrice99 Messages postés 1221 Date d'inscription jeudi 23 août 2001 Statut Membre Dernière intervention 9 septembre 2018
13 oct. 2007 à 09:58
Voir aussi en VB 2005 Express :
VBWaveComp : Le comparateur de spectre audio en VB .Net
Vers un "benchmark" de la compression audio
www.vbfrance.com/code.aspx?ID=5319
ghuysmans99 Messages postés 2496 Date d'inscription jeudi 14 juillet 2005 Statut Contributeur Dernière intervention 5 juin 2016 1
13 oct. 2007 à 08:36
pourquoi tu ne fais pas toute la compil dans un makefile ?
Rejoignez-nous