【问题标题】:Why does fftfreq produce negative values?为什么 fftfreq 会产生负值?
【发布时间】:2016-03-26 21:38:19
【问题描述】:

来自fftfreq 的文档:

>>> signal = np.array([-2, 8, 6, 4, 1, 0, 3, 5], dtype=float)
>>> fourier = np.fft.fft(signal)
>>> n = signal.size
>>> timestep = 0.1
>>> freq = np.fft.fftfreq(n, d=timestep)
>>> freq
array([ 0.  ,  1.25,  2.5 ,  3.75, -5.  , -3.75, -2.5 , -1.25])

为什么输出数组中有负值?

我正在尝试绘制幅度与频率的关系图。我可以通过在fourier 的元素上运行abs() 函数来获得幅度,但是如何将freq 转换为在绘制fourier 时可以用作x 轴的一系列频率?

【问题讨论】:

  • 这些是您的 x 轴频率。如果您只想绘制正频率,请过滤/截断它们
  • 您是在问为什么傅里叶分析中有负频率,或者为什么在那个特定示例中存在负频率?
  • @Will 我不知道结果中编码了方向。谢谢,我将截断输出。

标签: python numpy


【解决方案1】:

这是 FFT 算法固有的。 FFT数组的后半部分是前半部分的共轭,所以不要包含任何新信息。

要可视化频谱,只需使用前半部分。

f=freq[:n/2]
s=abs(fourier[:n/2])
plot(f,s)

【讨论】:

  • 应该是 n//2 + 1?
猜你喜欢
  • 1970-01-01
  • 2015-08-29
  • 1970-01-01
  • 1970-01-01
  • 2015-09-14
  • 1970-01-01
  • 2017-06-10
  • 1970-01-01
  • 2015-12-02
相关资源
最近更新 更多