Die Amplitude der fft-Ergebnisse von numpy ist mit der Abtastperiode zu multiplizieren.

Ich versuche mein Verständnis von Numpys FFT anhand eines Beispiels zu überprüfen: der Fourier-Transformation vonexp(-pi*t^2) sollte seinexp(-pi*f^2) wenn auf die direkte Transformation keine Skalierung angewendet wird.

Um dieses Ergebnis zu erhalten, muss ich jedoch das Ergebnis der FFT mit einem Faktor multiplizierendtDies ist das Zeitintervall zwischen zwei Abtastpunkten meiner Funktion. Ich verstehe nicht warum. Kann jemand helfen?

Hier ist ein Beispielcode:

# create data
N = 4097
T = 100.0
t = linspace(-T/2,T/2,N)
f = exp(-pi*t**2)

# perform FT and multiply by dt
dt = t[1]-t[0]
ft = fft(f)  * dt      
freq = fftfreq( N, dt )
freq = freq[:N/2+1]

# plot results
plot(freq,abs(ft[:N/2+1]),'o')
plot(freq,exp(-pi*freq**2),'r')
legend(('numpy fft * dt', 'exact solution'),loc='upper right')
xlabel('f')
ylabel('amplitude')
xlim(0,1.4)

Antworten auf die Frage(1)

Ihre Antwort auf die Frage