Python fft的登录结果
我试图从测试目标计算MTF。我很容易计算扩展函数,但FFT结果对我来说意义不大。总而言之,这些价值观似乎是交替的,让我对我的期望有所反映。为了测试,我使用了一个简单的方波和numpy:Python fft的登录结果,python,math,numpy,fft,Python,Math,Numpy,Fft,我试图从测试目标计算MTF。我很容易计算扩展函数,但FFT结果对我来说意义不大。总而言之,这些价值观似乎是交替的,让我对我的期望有所反映。为了测试,我使用了一个简单的方波和numpy: from numpy import fft data = [] for x in range (0, 20): data.append(0) data[9] = 10 data[10] = 10 data[11] = 10 dataFFT = fft.fft(data) 结果看起来是正确的,除了符
from numpy import fft
data = []
for x in range (0, 20):
data.append(0)
data[9] = 10
data[10] = 10
data[11] = 10
dataFFT = fft.fft(data)
结果看起来是正确的,除了符号。。。我以前4个值为例看到以下内容:
30.00000000+0.00000000 E+00j
-29.0211333+7.10542736e-15j
26.18033989-1.24344979e-14j
-21.75570505+1.24344979e-14j
所以我的问题是,为什么在真实的平面上,正->负->正->负?这不是我所期望的。。。如果我把它画出来,几乎可以看出正确的函数是围绕x轴镜像的
注意:我希望以下是一个例子:
这就是我得到的:
这并不完全出乎意料。如果你想对照传统的曲线图进行检查,在得出任何结论之前,一定要把这些信息转换成震级和相位
我用你的代码和numpy.abs快速检查了mag,numpy,phase的角度。在我看来,它确实像一个sinc()函数,如果时域是一个方脉冲,这就是所期望的。如果你这样做,你会发现一个相当宽的sinc,就像在如此少的样本上短时间脉冲所经历的那样。这并不是那么意外。如果你想对照传统的曲线图进行检查,在得出任何结论之前,一定要把这些信息转换成震级和相位 我用你的代码和numpy.abs快速检查了mag,numpy,phase的角度。在我看来,它确实像一个sinc()函数,如果时域是一个方脉冲,这就是所期望的。如果你这样做,你会发现一个相当宽的sinc,就像在如此少的样本上短时间的脉冲所经历的那样
- FFT输入可以是实域也可以是复域
- FFT输出是复数域
mag=sqrt(Re*Re+Im*Im); // power
ang=atanxy(Re,Im); // phase angle
atanxy(dx,dy)
是四象限arctan
也称为atan2
,但要注意使操作数顺序与atanxy/atan2
实现需要相同。也可以用我的{ a0,a1,a2,a3,...,a(n-1),a(n-1)...,a3,a2,a1,a0 }
与上图完全相同。左边是低频,中间是最高频率。如果输入信号是复数域,那么输出可以是任何东西
- FFT输入可以是实域也可以是复域
- FFT输出是复数域
mag=sqrt(Re*Re+Im*Im); // power
ang=atanxy(Re,Im); // phase angle
atanxy(dx,dy)
是四象限arctan
也称为atan2
,但要注意使操作数顺序与atanxy/atan2
实现需要相同。也可以用我的{ a0,a1,a2,a3,...,a(n-1),a(n-1)...,a3,a2,a1,a0 }
与上图完全相同。左边是低频,中间是最高频率。如果您的输入信号是复域信号,那么输出可以是任何信号。您的脉冲是对称的,并且位于FFT窗口的中心(大约N/2)。对称实数据仅对应于FFT结果的余弦或“实”分量。请注意,余弦函数在FFT窗口中心的-1和1之间交替,具体取决于频率