gpt4 book ai didi

python - 为什么 FFT 结果显示单个频率样本有 2 个非零幅度?

转载 作者:行者123 更新时间:2023-11-28 21:35:45 25 4
gpt4 key购买 nike

通过简单的 FFT 运行来学习操作,我创建了一个包含 100 个元素的 NumPy 数组,数组中只有一个周期的正弦波。使用此代码:

...
n = 100
x = np.fromfunction(lambda a: np.sin(2 * np.pi * a / n), (n,), dtype=float)
res = np.fft.fft(x)
...

res 中的结果在 2 个不同的索引值处显示非零振幅:

idx           real         imag          abs
--- ---------- ---------- ----------
...
1: 0 -50.000 50.000
...
99: 0 50.000 50.000

我只希望在索引 1 处看到一个非零振幅。

为什么指数 1 和 99 的振幅都不为零,我如何从数学上理解这一点?

补充:也许高频实际上代表一个aliased频率,根据 Nyquist rate,采样率太低.

最佳答案

np.fft.fft() 函数返回双边 DFT 谱。您看到的是频率 w 和 -w 的峰值,其中 w 是正弦波的频率。

您可以通过运行 np.fft.fftfreq 自行检查并绘制结果:

x = np.linspace(0, 2)
y = np.sin(2*np.pi*x)
Y = np.fft.fft(y)
freqs = np.fft.fftfreq(len(x), d=x[1]-x[0])

# Plot the results
fig, (ax1, ax2) = plt.subplots(2, 1)
ax1.plot(x, y)
ax2.plot(freqs, np.abs(Y))

关于python - 为什么 FFT 结果显示单个频率样本有 2 个非零幅度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51963838/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com