gpt4 book ai didi

python - numpy 的快速傅里叶变换产生意想不到的结果

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

我正在为 numpy 的快速傅立叶变换实现而苦恼。我的信号不具有周期性,因此肯定不是理想的候选者,但是 FFT 的结果与我的预期相去甚远。这是相同的信号,只是被一些因素拉伸(stretch)了。我绘制了一条正弦曲线,在它旁边近似我的信号,这应该说明我正确使用了 FFT 函数:

import numpy as np
from matplotlib import pyplot as plt

signal = array([[ 0.], [ 0.1667557 ], [ 0.31103874], [ 0.44339886], [ 0.50747922],
[ 0.47848347], [ 0.64544846], [ 0.67861755], [ 0.69268326], [ 0.71581176],
[ 0.726552 ], [ 0.75032795], [ 0.77133769], [ 0.77379966], [ 0.80519187],
[ 0.78756476], [ 0.84179849], [ 0.85406538], [ 0.82852684], [ 0.87172407],
[ 0.9055542 ], [ 0.90563205], [ 0.92073452], [ 0.91178145], [ 0.8795554 ],
[ 0.89155587], [ 0.87965686], [ 0.91819571], [ 0.95774404], [ 0.95432073],
[ 0.96326252], [ 0.99480947], [ 0.94754962], [ 0.9818627 ], [ 0.9804966 ],
[ 1.], [ 0.99919711], [ 0.97202208], [ 0.99065786], [ 0.90567128],
[ 0.94300558], [ 0.89839004], [ 0.87312245], [ 0.86288378], [ 0.87301008],
[ 0.78184963], [ 0.73774451], [ 0.7450479 ], [ 0.67291666], [ 0.63518575],
[ 0.57036157], [ 0.5709147 ], [ 0.63079811], [ 0.61821523], [ 0.49526048],
[ 0.4434457 ], [ 0.29746173], [ 0.13024641], [ 0.17631683], [ 0.08590552]])

sinus = np.sin(np.linspace(0, np.pi, 60))

plt.plot(signal)
plt.plot(sinus)

蓝线是我的信号,绿线是窦。

raw.pdf

transformed_signal = abs(np.fft.fft(signal)[:30] / len(signal))
transformed_sinus = abs(np.fft.fft(sinus)[:30] / len(sinus))

plt.plot(transformed_signal)
plt.plot(transformed_sinus)

蓝线是transformed_signal,绿线是transformed_sinus

fft.pdf

仅绘制 transformed_signal 说明了上述行为:

enter image description here

谁能给我解释一下这是怎么回事?

更新

我确实是调用FFT的问题。这是正确的调用和正确的结果:

transformed_signal = abs(np.fft.fft(signal,axis=0)[:30] / len(signal))

enter image description here

最佳答案

Numpy 的 fft 默认应用于行。由于您的 signal 变量是列向量,因此 fft 应用于由一个元素组成的行并返回每个元素的单点 FFT。

使用 fft 的轴选项指定您希望将 FFT 应用于 signal 的列,即

transformed_signal = abs(np.fft.fft(signal,axis=0)[:30] / len(signal))

关于python - numpy 的快速傅里叶变换产生意想不到的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38812611/

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