Transformée de Fourier

Transformée de Fourier - Python - Programmation

Marsh Posté le 16-04-2015 à 20:00:03    

Bonjour, j'ai vraiment besoin d'aire pour un programme dont je ne comprends pas l'erreur:  
 

Code :
  1. from numpy import linspace, mean
  2. from scipy.fftpack import fft, fftfreq
  3. import matplotlib.pyplot as plt
  4. from scipy.io.wavfile import read
  5. # nom du fichier à étudier
  6. nomfile = open('7991.wav','r')
  7. # lecture du fichier son 8 Khz mono
  8. rate,signal = read(nomfile)
  9. # définition du vecteur temps
  10. dt = 1./rate
  11. FFT_size = 2**18
  12. NbEch = signal.shape[0]
  13. t = linspace(0,(NbEch-1)*dt,NbEch)
  14. t = t[0:FFT_size]
  15. signal = signal[0:FFT_size]# soustraction de la valeur moyenne du signal
  16. signal = signal - mean(signal)# la fréquence nulle ne nous intéresse pas
  17. signal_FFT = abs(fft(signal))  # on ne récupère que les composantes réelles
  18. signal_freq = fftfreq(signal.size, dt)
  19. signal_FFT = signal_FFT[0:len(signal_FFT)//2]
  20. signal_freq = signal_freq[0:len(signal_freq)//2]
  21. #affichage du signal
  22. plt.subplot(211)
  23. plt.title('Signal reel et son spectre')
  24. plt.plot(t,signal)
  25. plt.xlabel('Temps (s)'); plt.ylabel('Amplitude')
  26. #affichage FFT
  27. plt.subplot(212)
  28. plt.plot(signal_freq,signal_FFT)
  29. plt.xlabel('Frequence (Hz)'); plt.ylabel('Amplitude')
  30. plt.show()


 
J'obtiens ceci comme erreur:
 
File "/media/A620-A5CF/Raspberry Pi/Programmation/ProjetISN.py", line 50, in <module>
plt.plot(signal_freq,signal_FF T)
File "/usr/lib/pymodules/python2.7/matplotlib/pyplot.py", line 2467, in plot
ret = ax.plot(*args, **kwargs)
File "/usr/lib/pymodules/python2.7/matplotlib/axes.py", line 3893, in plot
for line in self._get_lines(*args, **kwargs):
File "/usr/lib/pymodules/python2.7/matplotlib/axes.py", line 322, in _grab_next_args
for seg in self._plot_args(remaining, kwargs):
File "/usr/lib/pymodules/python2.7/matplotlib/axes.py", line 300, in _plot_args
x, y = self._xy_from_xy(x, y)
File "/usr/lib/pymodules/python2.7/matplotlib/axes.py", line 240, in _xy_from_xy
raise ValueError("x and y must have same first dimension" )
ValueError: x and y must have same first dimension
 
Merci d'avance, bonne soirée.

Reply

Marsh Posté le 16-04-2015 à 20:00:03   

Reply

Marsh Posté le 22-04-2015 à 12:41:51    

le code que tu nous as copié vient du fichier ProjetISN.py ?
D'après la trace, l'erreur est ligne 50...
 
D'après l'exception soulevée, c'est un problème de taille de deux tableaux qui ne matchent pas.
 
Que te donne l'affichage suivant ?
 

Code :
  1. print len( signal_freq )
  2. print len( signal_FFT)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed