【问题标题】:Python SciPy FFT function - Input?Python SciPy FFT 函数 - 输入?
【发布时间】:2012-07-22 02:10:42
【问题描述】:

我目前正在编写一些应该对一组数据执行 FFT 的代码。我有一个 python 点列表,我可以轻松创建一个时间列表。当我运行 fft(datalist) 时,我收到“TypeError: 'numpy.ndarray' object is not callable”错误。我认为(但请纠正我)问题在于该列表是一维的,并且通过使用上面的那一行代码,它们根本与时间无关。我的问题是,我是否必须输入带有时间和数据点的二维数组?还是我完全错了,必须重新考虑? 谢谢,迈克 编辑 - 忘记添加一些代码。 t=时间。可能是因为数组中的条目数不等于 2^n 其中 N 是整数?

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

【问题讨论】:

  • 看起来你不小心用数组覆盖了fftprint fft 给了什么?
  • 我不明白这是怎么回事。 print type(fft), repr(fft) 给了什么?
  • 将我的代码添加到顶部 - 非常感谢您的帮助!
  • 也没有完全阅读您的评论 - 以为您指的是 fft 结果。打印 fft 给出 [ 10.6 +0.00000000e+00j 0.1 +3.29089653e+00j -2.0 +0.00000000e+00j -0.2 +1.77635684e-15j -2.0 +0.00000000e+00j 0.1 -3.29089653e+00j]
  • 对我的代码进行了拖网搜索,并在页面前面有一些东西我忘了评论 - 感谢您的帮助。还在为 fft 的输入而苦恼吗?

标签: python scipy fft


【解决方案1】:

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]))

【讨论】:

    猜你喜欢
    • 2014-06-16
    • 1970-01-01
    • 2013-03-14
    • 2019-07-20
    • 2014-10-09
    • 1970-01-01
    • 2013-11-19
    • 2015-11-16
    • 2019-10-10
    相关资源
    最近更新 更多