【发布时间】:2017-10-27 15:50:08
【问题描述】:
我需要在 Python 中使用离散傅里叶变换 (DFT)(和逆 DFT),我得到的结果有点奇怪,所以我尝试了一个小例子,但我不确定我是否理解错误(如果是数学或编码)。这是我的小版本代码:
from __future__ import division
import numpy as np
from pylab import *
pi = np.pi
def f(x):
return sin(x)
theta = np.arange(0,2*pi,2*pi/4)
k = np.arange(0,4,1)
x = f(theta)
y = np.fft.fft(x)
derivative = np.fft.ifft(1j*k*y)
print(derivative)
所以我要做的是在 0 到 2pi 之间的 4 个不同点对 sin 进行采样,并用这些数字创建一个向量 x。然后我取 x 的 DFT 得到 y。我想要的是在选定的点上得到 sin 的导数,所以要做到这一点,我将 y 乘以 k(波数,在这种情况下为 0、1、2、3)和我的虚数 1j(这是因为在傅里叶和中,我对每个术语都有一些形式为 e^{ikx})。所以最后我取 1jky 的逆 DFT,我应该得到 sin 的导数。但我得到的是这个。
[ -1.00000000e+00 -6.12323400e-17j -6.12323400e-17 +2.00000000e+00j
1.00000000e+00 +1.83697020e-16j 6.12323400e-17 -2.00000000e+00j]
当我应该得到这个时
[1,0,-1,0]
忽略舍入错误。有人可以告诉我我做错了什么吗?谢谢!
【问题讨论】: