【问题标题】:How can I calculate frequency axis after FFTFFT后如何计算频率轴
【发布时间】:2014-04-11 13:23:22
【问题描述】:

我有一个时间序列数据,我捕获其中的一部分,然后使用numpy.fft.rfft 命令,然后我使用

plt.plot(2*abs(result)/len(result))

显示rfft 结果如何计算频率轴?我的采样频率是 65536 Hz。

【问题讨论】:

标签: python numpy matplotlib fft frequency


【解决方案1】:

可以使用numpy.fft.rfftfreq方法生成rfft方法对应的频率数据。下面我生成了一个嘈杂的正弦波,傅里叶对其进行了变换并生成了频率数据。

import numpy as np
import matplotlib.pyplot as plt

N = 2048
x = np.sin(2*np.pi*10*np.linspace(0,10,N)) + np.random.random(N)*0.1

z = np.fft.rfft(x) # FFT
y = np.fft.rfftfreq(len(x)) # Frequency data

fig, ax = plt.subplots()
ax.plot(y, z)

plt.show()

【讨论】:

  • 感谢所有回复。 Ffisegydd 我试过你的代码,但我得到文件“/Users/buraknebioglu/Desktop/npfft_ex.py”,第 31 行,在 y = np.fft.rfftfreq(len(x)) # Frequency data AttributeError: 'module'对象没有属性 'rfftfreq' 错误我的 numpy 版本是 '1.6.2'
  • @BurakNebioglu 你能把代码复制到一个新的 Python 文件中(单独)并测试它吗?这行得通吗?如果是这样,那么将numpy.fft.rfftfreq 方法安装到您自己的代码中应该没有问题。
  • 我按照你说的做了,但现在失败了,我尝试 pip install -U numpy.我用 pip 安装但版本没有改变:(
【解决方案2】:

解决方案

rfftfreq 将起作用,正如另一张海报所提到的,如果你的系统中有它。

警告

但是,我认为您使用的是过时版本的 numpy。 Numpy 1.6.1 not 在包中没有 rfftfreq,因此您将看到 numpy.fft.rfftfreq 的“未找到”错误。

如果我使用旧版本的 python/numpy:

Speak 'Friend' and Enter: python2.7
Python 2.7.2 (default, Oct 11 2012, 20:14:37) 
[GCC 4.2.1 Compatible Apple Clang 4.0 (tags/Apple/clang-418.0.60)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy
>>> numpy.version.version
'1.6.1'
>>> numpy.fft.rfftfreq
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'rfftfreq'

现在使用新 numpy 的更新版本中的相同命令:

Speak 'Friend' and Enter: python3.3
Python 3.3.2 (v3.3.2:d047928ae3f6, May 13 2013, 13:52:24) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy
>>> numpy.version.version
'1.8.1'
>>> numpy.fft.fftfreq
<function fftfreq at 0x10114edd0>

我的建议

更新 numpy.您可能还需要更新 python。

实现这一点的简单方法(刚刚测试过):安装python3.3,然后安装pip(Installing pip for python3.3)。安装 pip 后,它将是一个简单的sudo pip3.3 install numpy,您将获得最新版本(撰写本文时为 1.8.1)。还有其他更新 python/numpy 的方法(例如 brew 或 apt 取决于您的系统),但 pip 在 ihmo 中工作得很好。

【讨论】:

  • 如果您喜欢这个答案,请考虑投票或接受它。
猜你喜欢
  • 2021-03-09
  • 2017-08-11
  • 1970-01-01
  • 2014-12-18
  • 2011-05-12
  • 1970-01-01
  • 2020-05-22
  • 2019-11-28
  • 2017-06-06
相关资源
最近更新 更多