Ich möchte eine Frequenz (eine Spitze) aus dem Signal entfernen und meine Funktion ohne sie grafisch darstellen. Nach fft habe ich Frequenz und Amplitude gefunden und bin mir nicht sicher, was ich jetzt machen soll. Zum Beispiel möchte ich meine höchste Spitze entfernen (markiert mit rotem Punkt in der Zeichnung).So entfernen Sie die Frequenz vom 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()
müssen Sie das Signal filtern. Welche Art von Filter und wie Sie ihn konfigurieren, hängt davon ab, welche Frequenzen Sie behalten möchten und welche Sie entfernen möchten. Vielleicht möchten Sie sich ein Intro zum DSP-Buch besorgen oder hier starten: https://en.wikipedia.org/wiki/Filter_(signal_processing) – Turn
Dieser Beitrag könnte nützlich sein: http://forrestbao.blogspot.rs/2014/ 07/signal-filtering-using-inverse-fft-in.html – Prefect
Mögliches Duplikat von [fft bandpass filter in python] (http://stackoverflow.com/questions/19122157/fft-bandpass-filter-in-python) – strpeter