2012-07-23 89 views
0

我目前正在写一些应该对一组数据执行FFT的代码。我有一个python的点列表,我可以很容易地创建一个时间列表。当我运行fft(datalist)时,出现'TypeError:'numpy.ndarray'对象不可调用'错误。我认为(但请纠正我)问题是该列表是一个维度,并且他们通过使用上面的那一行代码根本没有时间依赖性。我的问题是,我必须输入一个包含时间和数据点的二维数组吗?还是我完全错了,不得不重新思考? 谢谢,迈克 编辑 - 忘了添加一些代码。 t =时间。难道是因为数组中的条目数不等于2^n,其中N是一个整数?Python SciPy FFT函数 - 输入?

sample_rate=10.00 
t=r_[0:191.6:1/sample_rate] 
S = fft([mylist]) 
print S 
+2

看起来你不小心覆盖'fft'使用数组。 'print fft'给出了什么? – DSM 2012-07-23 19:43:16

+0

什么都没有打印 – 2012-07-23 19:54:12

+0

我不明白这是怎么回事。 'print type(fft),repr(fft)'给出了什么? – DSM 2012-07-23 20:03:19

回答

0

Numpy和SciPy fft函数看起来有numpy数组作为输入,而不是本机python列表。他们的工作也很好,长度不是2的幂。在传递给fft之前,你可能只需要将你的列表转换为数组。

从你的示例代码上面的尝试:

from numpy.fftpack import fft 
from numpy import array 

""" However you generate your list goes here """ 

S = fft(array([mylist]))