Je veux supprimer une fréquence (un pic) du signal et tracer ma fonction sans elle. Après fft j'ai trouvé la fréquence et l'amplitude et je ne suis pas sûr de ce que je dois faire maintenant. Par exemple, je veux supprimer mon plus haut sommet (marqué d'un point rouge sur l'intrigue).Comment supprimer la fréquence du signal
import numpy as np
import matplotlib.pyplot as plt
# create data
N = 4097
T = 100.0
t = np.linspace(-T/2,T/2,N)
f = np.sin(50.0 * 2.0*np.pi*t) + 0.5*np.sin(80.0 * 2.0*np.pi*t)
#plot function
plt.plot(t,f,'r')
plt.show()
# perform FT and multiply by dt
dt = t[1]-t[0]
ft = np.fft.fft(f) * dt
freq = np.fft.fftfreq(N, dt)
freq = freq[:N/2+1]
amplitude = np.abs(ft[:N/2+1])
# plot results
plt.plot(freq, amplitude,'o-')
plt.legend(('numpy fft * dt'), loc='upper right')
plt.xlabel('f')
plt.ylabel('amplitude')
#plt.xlim([0, 1.4])
plt.plot(freq[np.argmax(amplitude)], max(amplitude), 'ro')
print "Amplitude: " + str(max(amplitude)) + " Frequency: " + str(freq[np.argmax(amplitude)])
plt.show()
Vous devez filtrer le signal. Quel type de filtre et comment vous le configurez sera déterminé à la fois par les fréquences que vous voulez conserver et celles que vous voulez supprimer. Vous voudrez peut-être vous procurer une introduction au livre DSP ou commencer ici: https://en.wikipedia.org/wiki/Filter_(signal_processing) – Turn
Ce message peut être utile: http://forrestbao.blogspot.rs/2014/ 07/signal-filtering-using-inverse-fft-in.html – Prefect
Copie possible de [filtre passe-bande fft en python] (http://stackoverflow.com/questions/19122157/fft-bandpass-filter-in-python) – strpeter