python - 登录 fft 的结果

标签 python math numpy fft

我正在尝试根据测试目标计算 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 轴镜像的。

注意:我期待以下示例: example image

这是我得到的: My results

最佳答案

您的脉冲是对称的并且位于 FFT 窗口的中心(大约 N/2)。对称实数据仅对应于 FFT 结果的余弦或“实”分量。请注意,余弦函数在 FFT 窗口的中心在 -1 和 1 之间交替,具体取决于频点索引(表示每个 FFT 宽度的余弦周期)。因此,只要脉冲窄于余弦周期的一半,这些 FFT 基函数与正向脉冲的相关性也会交替变化。

如果您希望最大的 FFT 系数大部分为正,请尝试将您的窄矩形脉冲集中在时间 0 附近(或循环,时间 N),其中余弦函数对于任何频率始终为 1。

关于python - 登录 fft 的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26171838/

相关文章:

python - Django 1.5.2 管理站点没有添加或更改按钮

python - 向量化稀疏矩阵的 hellinger - NumPy/Python

python - Numpy Where 有两个以上的条件

swift - 当我只有一组点时,我将如何实现寻根?

c++ - 获取最接近另一点的线段上的点

java - 求和求1000下5的最大倍数

python - 使用变量来描述数组/列表索引的索引范围/切片

python - 属性错误 : 'module' object has no attribute 'exist'

python - 使用 Django 过滤三个表

python - 无法获得不一致以在聊天中显示错误