J'essaie de comprendre comment fonctionne fft en python (ou en général).
Lorsque j'ai un signal enregistré pendant quelques secondes, je peux seulement afficher une seconde de cette FFT.
Existe-t-il un moyen de prendre toutes les données et de calculer la moyenne? Je l'ai fait auparavant dans LabView. Quelqu'un peut-il aider?FFT Numpy sur quelques secondes
Voici un exemple de code que j'utilise.
from numpy import linspace, sin, pi, log10, average, arange
from matplotlib.pyplot import plot, show, figure
from numpy.fft import fft, fftfreq
N = 1000 * 60 * 4
dt = 1/1000
x = linspace(0, N*dt, N)
freq = linspace(10, 200, N)
sinsweep = sin(x*freq)
mavg = [average(sinsweep[i*60:(i+1)*60]) for i in range(int(N/60))]
plot(freq, sinsweep, '.')
plot(linspace(10, 200, int(N/60)), mavg, '.')
f = figure()
t = arange(60)
sp = fft(mavg, n=60)
freq = fftfreq(t.shape[-1])
plot(sp.imag)
show()
Je ne comprends pas ce que vous essayez de faire. Quelle est votre sortie attendue. Le code que vous utilisez fonctionne. Il prend le signal moyen dans une seconde et affiche plusieurs secondes. – Glostas
J'essaie d'obtenir un graphique fft qui montre pendant toute la durée du test toutes les fréquences. Ce qui signifie que je shold obtenir une large gamme de 10 à 200 Hz. –
Ensuite, prenez la FFT du signal et vous avez terminé – Glostas