我创建了一个简单的积分函数和 DFT 函数,可以将其与我编写的其他代码一起使用。
from math import sin,pi
from time import time
def aintegral(d,step):
return sum(d)*step
def partialdft(d,step,w):
i = 0
x = d
while i/step < len(d):
x[int(i/step)]*=sin(w*pi*i)
i+=step
return aintegral(x,step)
x = []
y = 0
while y<100:
x.append(5*sin(4*pi*y))
y+=.01
print partialdft(x,.01,4)
此代码给出的输出为 249.028500022,接近预期的 250 值。但是,当我迭代 DFT 时,我在 4 处得到一个完全不同的变换值。
from math import sin,pi
from time import time
def aintegral(d,step):
return sum(d)*step
def partialdft(d,step,w):
i = 0
x = d
while i/step < len(d):
x[int(i/step)]*=sin(w*pi*i)
i+=step
return aintegral(x,step)
x = []
y = 0
while y<100:
x.append(5*sin(4*pi*y))
y+=.01
y = 0
while y<10.:
print y,partialdft(x,.01,y)
y+=.1
此代码的输出为:0 0.0514628731431
0.1 0.0514628731431
0.2 0.0514628731431
. . . .
4.0 0.0514628731431
. . . .
9.8 0.0514628731431
9.9 0.0514628731431
10.0 0.0514628731431
谁能告诉我是什么导致了这个问题?提前致谢。
注意:此时我并不关心使用更高效的 fft 函数。样本量不大,所以没关系。