我尝试用一个例子来验证我对 Numpy 的 FFT 的理解:傅里叶变换exp(-pi*t^2)
应该是exp(-pi*f^2)
在直接变换上没有应用缩放时。
但是,我发现要获得这个结果,我需要将 FFT 的结果乘以一个 factor dt
,这是我的函数上两个采样点之间的时间间隔。我不明白为什么。有人可以帮忙吗?
这是一个示例代码:
# 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)