amplitudę wyników fft numpy należy pomnożyć przez okres próbkowania?
Staram się potwierdzić moje zrozumienie FFT Numpy'ego na przykładzie: transformata Fourieraexp(-pi*t^2)
powinno byćexp(-pi*f^2)
gdy nie stosuje się skalowania dla transformacji bezpośredniej.
Uważam jednak, że aby uzyskać ten wynik, muszę pomnożyć wynik FFT przez współczynnikdt
, który jest przedziałem czasu między dwoma punktami próbnymi na mojej funkcji. Nie rozumiem dlaczego. Czy ktoś może pomóc?
Oto przykładowy kod:
# 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)