[NumPy] Fonction fft() issue de numpy/numarray
Bonjour,
En complément du topic traitant de la création du .wav monofréquence, je passe actuellement à l'étape clé de la FFT. Grace à l'aide de oiffrig , la création du fichier .wav se fait de la sorte:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| import math, numarray as NA, wave, numarray as NA2
freq = 200.
freqech = 44100
duree = 10.
omega = 2 * math.pi * freq
son = NA.arange(0., duree, 1./freqech, NA.Float64)
son = NA.sin(omega * son)
son *= 32768.
son = son.astype(NA.Int16)
wavfile = wave.open('AutreAmplitude200.wav','w')
wavfile.setparams((1, 2, freqech , len(son), 'NONE', 'not compressed'))
wavfile.writeframes(son.tostring())
wavfile.close()
Valeurs = son[0:222] |
Dans la varable Valeur, je sauvegarde les valeurs prises par la fonction sinus (avec f = 200Hz) sur 1 période environ.
En appliquant la fonction fft issue du module numarray, je devrais donc obtenir quelque chose me disant qu'effectivement j'ai un signal de l'ordre de 200Hz.
Code:
1 2
| from numarray import fft
print fft.fft(Valeurs,450).real |
Or le résultat obtenu est le suivant:
Code:
1 2 3 4 5 6 7 8 9
| 3.51000000e+02 3.02301824e+06 2.29319478e+05 -1.96406314e+06
-1.23762282e+04 -4.48999295e+05 -1.02429368e+04 -2.03945581e+05
-9.59045653e+03 -1.15423303e+05 -9.26517011e+03 -7.30000882e+04
-9.02794648e+03 -4.93465665e+04 -8.82407680e+03 -3.47937512e+04
-8.63322297e+03 -2.52527407e+04 -8.44808818e+03 -1.86411046e+04
-8.24596904e+03 -1.39443011e+04 -8.04285242e+03 -1.04709028e+04
-7.82704600e+03 -7.87677142e+03 -7.59881077e+03 -5.88953325e+03
-7.36427447e+03 -4.36747628e+03 -7.11766236e+03 -3.17780670e+03
ETC... |
La première valeur correspond à la composante continue du signal, autrement sa valeur moyenne, OK
Mais Quid des autres valeurs? Amplitudes de quelles harmoniques, fréquences(cos, sin)? Pourquoi des valeurs négatives?
Si vous avez des suggestions....