【问题标题】:Fast Fourier Transform using NumPy: why it looks like this?使用 NumPy 进行快速傅立叶变换:为什么会这样?
【发布时间】:2013-02-09 19:45:58
【问题描述】:

据我所知,快速傅里叶变换是离散傅里叶变换计算的快速方法。

我一直在玩 NumPy 数学库,这段代码也有这样的情节:

import numpy as np
from numpy.fft import fft, fftfreq
import matplotlib.pyplot as plt

t = np.arange(0, 10, step=0.001)
signal = np.sin(t) + np.sin(10*t)
sp = fft(signal)
freq = fftfreq(signal.size, d=0.001)
plt.plot(freq, sp)
plt.show()

在我看来,它必须看起来像 d(x-1) + d(x-10) ... // d 是 delta-function

(据我所知,离散傅里叶变换必须看起来像简单的傅里叶变换,但边缘是倾斜的)

但事实并非如此。它看起来像“d(x-0.1) + d(x-1.5) ...”,我想知道为什么。 fftfreq 有问题吗?

【问题讨论】:

    标签: python numpy fft


    【解决方案1】:

    自从我研究这个以来已经有很多年了......

    您希望在 1 赫兹和 10 赫兹(周期/秒)处看到峰值? 然后你需要改变 sin 函数的参数。 sin 采用弧度作为 arg。 1 Hz 是 2*pi 弧度/秒,10 Hz 是 10*2*pi 弧度/秒

    改变你的信号 =np.sin(2*np.pi*t) + np.sin(10*2*np.pi*t) # 根据需要优化数学。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-15
      • 1970-01-01
      • 2016-08-01
      相关资源
      最近更新 更多