Transformée de Fourier en python

Fermé
Lola - 11 avril 2015 à 19:35
 Utilisateur anonyme - 28 avril 2015 à 15:48
Bonjour,

Je ne comprend pas cette erreur sur mon programme (il est censé faire une TFD) :
# -*- coding: utf-8 -*-


# importation des librairies
import numpy as np
from numpy import linspace, mean
from scipy.fftpack import fft, fftfreq
import matplotlib.pyplot as plt
from scipy.io.wavfile import read


# nom du fichier à étudier
nomfile="7991.wav"
rate,signal = read(nomfile)

# définition du vecteur temps
dt = 1./rate
FFT_size = 2**18
NbEch = signal.shape[0]

t = linspace(0,(NbEch-1)*dt,NbEch)
t = t[0:FFT_size]


signal = signal[0:FFT_size]
signal = signal - mean(signal)

signal_FFT = abs(fft(signal))


# récupération du domaine fréquentiel
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]

x = np.arange(signal_FFT)
y = np.arange(Amplitude)


#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 cette 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


A voir également:

2 réponses

S'il vous plaît aidez-moi... Je pense que c'est parce que l'amplitude et la fréquence n'ont pas le même nombre de valeurs mais je ne sais pas comment régler ce problème...
0
Utilisateur anonyme
28 avril 2015 à 15:48
Vérifie peut-être la longueur et le contenu de tes listes signal_FFT et Amplitude en ajoutant :
print(signal_FFT) # ou len(signal_FFT)
print(Amplitude) # ou len(Amplitude)
0