【发布时间】:2016-01-12 07:28:35
【问题描述】:
我有一个读取的 csv 文件(在 Jupyter 笔记本上使用 python 3,但从终端获得相同的结果)。我正在通过 numpy.fft.fft 模块计算 fft 并得到奇怪的结果,即数据的 fft 返回原始数据 - 即实部完全等于(实部)输入数据和虚部的复数向量等于0。代码如下:
with open('/Users/amacrae/Documents/PMDi/MCT/Jan10/msin287.csv', 'r') as f:
c = csv.reader(f)
y = np.array(list(c),dtype=float)
YF = np.fft.fft(y)
print(np.sum(YF.real-y))
print(np.sum(YF.imag))
> 0.0
> 0.0
为了确保它不仅仅是数据,我在 matlab 中绘制了具有正确结果的相同数据(数据的设计使得 fft 的幅度在频率空间中的窗口上是恒定的并且具有真正的不确定性。)对应的matlab代码为:
y = csvread('/Users/amacrae/Documents/PMDi/MCT/Jan10/msin287.csv');
plot(abs(fft(y)))
据我所知,两种语言的结果应该是相同的......导入数据的实部在两种情况下都匹配(相同的长度和值),但 fft 不匹配。数据很长 - 100,000 个样本,但如果我在 python 中创建一个随机的 100,000 个样本数组,我会得到一个实数 + 虚数 fft。有谁知道这可能是什么原因造成的?
【问题讨论】: