Soyez le premier à donner votre avis sur cette source.
Snippet vu 10 606 fois - Téléchargée 33 fois
bool FFT(int dir,int m,double *x,double *y) { long nn,i,i1,j,k,i2,l,l1,l2; double c1,c2,tx,ty,t1,t2,u1,u2,z; /* Calculate the number of points */ nn = 1<<m; /* Do the bit reversal */ i2 = nn >> 1; j = 0; for (i=0;i<nn-1;i++) { if (i < j) { tx = x[i]; ty = y[i]; x[i] = x[j]; y[i] = y[j]; x[j] = tx; y[j] = ty; } k = i2; while (k <= j) { j -= k; k >>= 1; } j += k; } /* Compute the FFT */ c1 = -1.0; c2 = 0.0; l2 = 1; for (l=0;l<m;l++) { l1 = l2; l2 <<= 1; u1 = 1.0; u2 = 0.0; for (j=0;j<l1;j++) { for (i=j;i<nn;i+=l2) { i1 = i + l1; t1 = u1 * x[i1] - u2 * y[i1]; t2 = u1 * y[i1] + u2 * x[i1]; x[i1] = x[i] - t1; y[i1] = y[i] - t2; x[i] += t1; y[i] += t2; } z = u1 * c1 - u2 * c2; u2 = u1 * c2 + u2 * c1; u1 = z; } c2 = sqrt((1.0 - c1) / 2.0); if (dir == 1) c2 = -c2; c1 = sqrt((1.0 + c1) / 2.0); } /* Scaling for forward transform */ if (dir == 1) { for (i=0;i<nn;i++) { x[i] /= (double)nn; y[i] /= (double)nn; } } return true; }
17 sept. 2009 à 13:47
17 sept. 2009 à 10:48
c'est dans une image? ou un signal electrique?
17 sept. 2009 à 09:45
Mais je ne vois pas comment faire ça avec cet algo, à moins que cela ne soit a faire apres...
16 sept. 2009 à 17:07
loicus : euh il me veut quoi le gamin ?
16 sept. 2009 à 16:55
Voila je m'interesse depuis peu a la transformée de Fourier dans le but de faire un filtre numérique.
Certains l'ont deja demandé mais ils n'ont pas eu de réponse alors je réessaie :p
Serait-il possible d'avoir plus de détails sur l'algo en lui-même ?
A quoi correspond le paramètre m, et comment influence-t-il l'algo ?
Merci d'avance.
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.