Im FFT (zweiten) Diagramm erwarte ich eine größere Spitze bei Frequenz = 1,0, verglichen mit anderen Frequenzen, da es sich um ein 1 Hz Rechtecksignal bei 5Hz handelt.Wie finde ich die Frequenz einer Rechteckwelle mit FFT
Ich bin ein Anfänger in diesem, möglicherweise fehlt etwas albern hier Hier ist, was ich getan habe:
import numpy as np
from matplotlib import pyplot as plt
from scipy import signal
t500 = np.linspace(0,5,500,endpoint=False)
s1t500 = signal.square(2*np.pi*1.0*t500)
Erste Plot zeigt 1 Hz Rechteckwelle bei 5 Hz abgetastet für 5 Sekunden:
t5 = np.linspace(0,5,25,endpoint=False)
t5 = t5 + 1e-14
s1t5 = signal.square(2.0*np.pi*1.0*t5)
plt.ylim(-2,2); plt.plot(t500,s1t500,'k',t5,s1t5,'b',t5,s1t5,'bo'); plt.show()
Hier in der zweiten Handlung erwarte ich das magn es ist bei f = 1 Hz mehr als bei f = 2. Fehle ich etwas?
y1t5 = np.fft.fft(s1t5)
ff1t5 = np.fft.fftfreq(25,d=0.2)
plt.plot(ff1t5,y1t5); plt.show()
Dies scheint eine Eigenschaft von DFT zu sein, fand ich ein ähnliches Beispiel in der Matlab-Dokumentation: http://de.mathworks.com/help/matlab/math/discrete-fourier-transform-dft.html – jojonas