我试图理解为什么高斯的 FFT(用 numpy 计算)的幅度与其解析解不同。
} 。但是,如果我用 numpy 中的 FFT 函数计算它,那么得到的高斯幅度不是 1?
我已经做了以下事情:
- 我确实将 fft 结果除以样本数(归一化)。
- 我什至尝试移动高斯,以便它的第一个样本是它的高度。这纠正了正弦行为,并去除了虚数部分,但不会改善幅度结果(与未偏移情况的绝对值相同)。但是,无论如何我都会采用绝对值。
这是代码:
def test_gauss_1D(self,a,f_c,delta_f):
delta_t = 1.0/(2.0*f_c)
N = int(np.ceil(1/(delta_f*delta_t)))+1
if (N % 2) == 0:
N = N + 1
t = np.linspace(-(N-1)/2*delta_t,(N-1)/2*delta_t,N)
f = np.linspace(-1/(2*delta_t),1/(2*delta_t),N)
x_t = np.exp(-np.pi*t**2)
#x_t = np.roll(x_t,-1*(N-1)/2)
#x_t = 1/(np.sqrt(2*np.pi)*a)*np.exp(-t**2/(2*a**2))
#print "std = ", 1/(4*a**2*np.pi**2)
#print "ampl =", np.sqrt(2*np.pi)*a
plt.plot(t,x_t)
plt.show()
#x_f = np.fft.fft(x_t)/N
#print "N = ",N
x_f = np.fft.fft(x_t)/N
x_f = np.roll(x_f,1*(N-1)/2)
plt.plot(f,np.absolute(f))
plt.show()
以下是图片:

如您所见,第二张图像中的幅度不正确(应该是一个)。
为什么是这样?