Bonjour,

Je souhaite faire une transformée de Fourrier sur un son apériodique mais j'ai un problème avec mon programme:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
 
dt = 1./rate
FFT_size = 2**18
NbEch = signal.shape[0]
 
t = linspace(0,(NbEch-1)*dt,NbEch)
t = t[0:FFT_size]
 
# calcul de la TFD par l'algo de FFT
signal = signal[0:FFT_size]
signal = signal - mean(signal) 
 
signal_FFT = abs(fft(signal)) 
 
 
# récupération du domaine fréquentiel en passant la période d'échantillonnage
signal_freq = fftfreq(signal.size, dt)
 
# extraction des valeurs réelles de la FFT et du domaine fréquentiel
signal_FFT = signal_FFT[0:len(signal_FFT)//2]
signal_freq = signal_freq[0:len(signal_freq)//2]
 
 
#affichage du signal
plt.subplot(211)
plt.title('Signal reel et son spectre')
plt.plot(t,signal)
plt.xlabel('Temps (s)'); plt.ylabel('Amplitude')
 
#affichage du spectre du signal
plt.subplot(212)
plt.xlabel('Frequence (Hz)'); plt.ylabel('Amplitude')
Fmin = 0
Fmax = 4000
 
plt.xlim(Fmin,Fmax)
plt.plot(signal_freq,signal_FFT)
 
plt.show()
J'obtiens ceci comme erreur:

Traceback (most recent call last):
File "/media/A620-A5CF/Raspberry Pi/Programmation/ProjetISN.py", line 50, in <module>
plt.plot(signal_freq,signal_FFT)
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

Je comprends bien qu'il faut que x et y ait la même longueur mais je ne sais pas comment faire, pourriez-vous m'aider s'il vous plaît ?
Merci d'avance pour vos réponses, bonne soirée.