Python fft()返回值振幅是多少;相移还是角度?

Python fft()返回值振幅是多少;相移还是角度?,python,numpy,fft,Python,Numpy,Fft,fft()返回一个复杂数组。。。。这个复数是什么意思? 我想真正的部分是振幅! 虚部是相移?相位角?或者别的什么 我计算出数组中的位置表示频率。这不是真正的编程问题,也不是特定于numpy。简而言之,复数的绝对值(sqrt(x.real**2+x.imag**2),或numpy.abs())是振幅 更详细地说,当您将FFT应用于数组X(例如,该数组包含函数X(t)在t的不同值处的多个样本)时,您尝试将其表示为“平面波”exp(i w t)(其中i是一个虚单位,w是一个实值频率)具有不同的w值。也

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
中,可以从中获取其值)

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

其中,
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理论的知识,例如,有大量的信息。

对于我所知道的任何DFT实现,你获得的值数组都是复数数组。复数有一个与振幅相对应的范数。根据实部和虚部,它在复平面上有一个角度(有时称为参数)。该角度对应于相位。复杂平面(从):

因此,数组包含实部和虚部的
x
y
。您对角度
θ
感兴趣。可以这样计算:

tan(θ)=y/x

theta=arctan(y/x)


这将产生以弧度为单位的角度。您可能还想看看。

给定频率下的幅值r表示原始信号中该频率的量。复数参数表示相位角θ

x+i*y=r*exp(i*theta)


其中x和y是numpy FFT返回的数字。

一般来说,要解释FFT,您需要绘制20*log(abs(FFT(x)),这会获取复数的大小,并将其放入dB scaleTanks中以获得答案……我试图从(时间,amp)中获取顶部(频率,amp,相位)通过FFT,然后使用生成的freq++绘制正弦波。不同之处在于我想在样本的时间范围之上/之后绘制。
r exp(i p) exp(i w t) == r exp(i (w t + p))