C Programme de test de FFT C Dominique Lefebvre avril 2006 PROGRAM TESTFFT IMPLICIT NONE EXTERNAL FFT C Declaration des constantes INTEGER n REAL Fech, DEUXPI PARAMETER (n = 1024,DEUXPI=6.283185307) C Declaration des variables INTEGER i REAL frequence, phi REAL t(n), y(n), f(n), Spectre(n) COMPLEX yc(n) C Saisie de la valeur de la frequence WRITE(*,'(a,$)')'Frequence du signal (Hz): ' READ(*,*)frequence C Saisie de la valeur d'echantillonnage WRITE(*,'(a,$)')'Le critere de Nyquist impose que la frequence' WRITE(*,*)'d''echantillonnage soit > 2*frequence du signal' WRITE(*,*)'' WRITE(*,'(a,$)')'Frequence d''echantillonnage (Hz): ' READ(*,*)Fech C Saisie de la valeur de la phase WRITE(*,'(a,$)')'Phase (rd): ' READ(*,*)phi C Verification du critere de Nyquist IF (Fech .GT. 2*frequence)THEN C Calcul du vecteur signal DO i=1,n t(i) = (i-1)/Fech y(i) = SIN(DEUXPI*t(i)*frequence + phi) f(i) = Fech*(i-1)/n ENDDO C Calcul de la transformee de Fourier du signal DO i=1,n yc(i) = CMPLX(y(i), 0.0) ENDDO CALL FFT(yc, n) C Calcul du spectre du signal DO i=1,n Spectre(i) = REAL(yc(i))**2 + AIMAG(yc(i))**2 ENDDO C Stockage des donnees dans un fichier OPEN(10,FILE = 'Spectre.dat') DO i=1,n WRITE(10,*) t(i),y(i),f(i),REAL(yc(i)),AIMAG(yc(i)), * Spectre(i) ENDDO CLOSE(10) ELSE WRITE(*,*)'Le critere de Nyquist n''est pas respecte' ENDIF STOP END