#include #include #include #include #define SWAP(a,b) tempr=(a);(a)=(b);(b)=tempr void four1(float data[], unsigned long nn, int isign) { unsigned long n,mmax,m,j,istep,i; double wtemp,wr,wpr,wpi,wi,theta; float tempr,tempi; n=nn << 1; j=1; for (i=1; i i) { SWAP(data[j],data[i]); SWAP(data[j+1],data[i+1]); } m=nn; while (m >= 2 && j > m) { j -= m; m >>= 1; } j += m; } mmax=2; while (n > mmax) { istep=mmax << 1; theta=isign*(6.28318530717959/mmax); wtemp=sin(0.5*theta); wpr = -2.0*wtemp*wtemp; wpi=sin(theta); wr=1.0; wi=0.0; for (m=1; mtaille) { taille=taille*2; puissance=puissance+1; } printf ("nombre de points traites : 2^%d=%d\n",puissance,taille); tempstotal=(1./header.frequency)*taille; printf ("temps total : %f s\n",tempstotal); taille=taille*2; /*------------------fin de determiner la taille des tableaux---------------------*/ /*---------------------creation des tableaux dynamiques--------------------------*/ float *data=NULL; //tableau de l'onde temporelle data=malloc( (taille) * sizeof(float)); if (data == NULL) { exit(0); } double *filtre=NULL; //tableau calculé par la transformée de fourrier filtre=malloc((taille) * sizeof(double)); if (filtre == NULL) { exit(0); } /*---------------------fin de creation des tableaux dynamiques-------------------*/ /*---------------------initialisation des tableaux dynamiques--------------------*/ for(i=0; i(filtre_freq-(filtre_large/2))&&i<(filtre_freq+(filtre_large/2))) { filtre[i]=0.5*(1-cos(2*M_PI*(i-(filtre_freq-(filtre_large/2)))/(filtre_large-1))); } else if (i>(taille-1-filtre_freq-(filtre_large/2))&&i<(taille-1-filtre_freq+(filtre_large/2))) { filtre[i]=0.5*(1-cos(2*M_PI*(i-(taille-1-filtre_freq-(filtre_large/2)))/(filtre_large-1))); } else { filtre[i]=0; } } for(i=0; i