python - numpy.fft() 返回值振幅+相移或角度是多少?

标签 python numpy fft

np.fft.fft() 返回一个复数数组....复数的含义是什么? 我想真正的部分是振幅! 虚部是相移 ?相位角 ?或者别的什么!

我发现数组中的位置代表频率。

最佳答案

这不是真正的编程问题,也不特定于 numpy .简而言之,复数的绝对值(sqrt(x.real**2 + x.imag**2)numpy.abs())就是振幅。

更详细,当您将 FFT 应用于数组时 X (比如说,它包含函数 X(t) 在不同值 t 的多个样本),您尝试将其表示为“平面波” exp(i w t) 的总和(其中 i 是虚数单位,w 是实值频率)具有不同的 w 值.也就是说,你想要类似的东西

X = A exp(i w1 t) + B exp(i w2 t) + ...

FFT 返回这些系数 A , B等对应一些固定频率w1 , w2等(在 numpy 中,您可以从 fftfreq() 中获取它们的值)。

现在,这些系数通常是复数。复数 A可以表示为“振幅”和“相位”的组合:

A = r exp(i p)

哪里r ( == numpy.abs(A) ) 是振幅, p ( == numpy.angle(A) ) 是相位,都是实数值。如果将其代入 FFT 展开中的项,您将得到

r exp(i p) exp(i w t) == r exp(i (w t + p))

因此,振幅 r改变项的绝对值和相位 p ,好吧,改变了阶段。因此,为了从 FFT 结果中获取振幅数组,您需要应用 numpy.abs


但我真的建议您阅读有关 FFT 理论的内容,周围有很多信息,例如 wiki .

关于python - numpy.fft() 返回值振幅+相移或角度是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28618591/

相关文章:

python - 是否有 pandas/numpy 函数可以将整数分布到后续的零中?

python - 绘制和提取 fft 相位

matlab - 音频信号中的峰值检测

python - 将 ImageDataGenerator 结果分配给 Numpy 数组

iphone - 确定 iPhone 上特定频率的大小

python - 身份验证无法使用pymongo连接到mongodb

Python2 "raise e[0], e[1], e[2]"和 python3 版本在一个文件中

python - 使用 asyncio 在 python 中每 n 秒运行一个函数

Python - 实现 __iter__ 或返回列表的 __iter__

python - 像 np.outer() 这样的 Numpy 最小值