我正在尝试根据测试目标计算 MTF。我很容易计算传播函数,但 FFT 结果对我来说意义不大。总而言之,这些值(value)观似乎交替出现,让我反射(reflect)了我的期望。为了进行测试,我使用了一个简单的方波和 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)
结果看起来是正确的,除了符号...我看到前 4 个值的示例如下:
30.00000000 +0.00000000e+00j
-29.02113033 +7.10542736e-15j
26.18033989 -1.24344979e-14j
-21.75570505 +1.24344979e-14j
所以我的问题是为什么在实平面上是positive->negative->positive->negative?这不是我所期望的……在我绘制它时,似乎正确的函数是围绕 x 轴镜像的。
注意:我期待以下示例:
这是我得到的:
最佳答案
您的脉冲是对称的并且位于 FFT 窗口的中心(大约 N/2)。对称实数据仅对应于 FFT 结果的余弦或“实”分量。请注意,余弦函数在 FFT 窗口的中心在 -1 和 1 之间交替,具体取决于频点索引(表示每个 FFT 宽度的余弦周期)。因此,只要脉冲窄于余弦周期的一半,这些 FFT 基函数与正向脉冲的相关性也会交替变化。
如果您希望最大的 FFT 系数大部分为正,请尝试将您的窄矩形脉冲集中在时间 0 附近(或循环,时间 N),其中余弦函数对于任何频率始终为 1。
关于python - 登录 fft 的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26171838/