我正在尝试检查高斯信号的 Parseval 定理。众所周知,的傅立叶变换是。所以我通过使用 quad 和 simps 来实现它。我认为一个是连续积分,另一个是使用样本的积分。
代码
from scipy import integrate
import numpy as np
def f(x):
return (np.exp(-x**2))**2
def F(k):
return ((np.pi**0.5)*np.exp((-np.pi**2)*(k**2)))**2
a=integrate.quad(f,-np.inf,np.inf)
print(a)
#>>>(1.2533141373155017, 4.4674503165883495e-09)
b=integrate.quad(F,-np.inf,np.inf)
print(b)
#>>>(1.2533141373155066, 1.592743224014847e-08)
a=b 所以上面的代码遵循 Parseval 定理。问题出在以下代码上。
import scipy.fftpack as fft
N=50000
t = np.linspace(-1000,1000, N)
h=np.exp(-t**2)
H=2*np.abs(fft.fftshift(fft.fft(h)/N))
freq=fft.fftshift(fft.fftfreq(H.shape[0],t[1]-t[0]))
S_h=integrate.simps(h**2,t)
print(S_h)
>>>1.25331413732
S_H=integrate.simps(H**2,freq)
print(S_H)
>>>1.25326400525e-06
S_h
不等于S_H
。问题是什么?我该如何解决?