小编nic*_*dds的帖子

离散傅立叶变换中的位移定理

我正在尝试解决python + numpy的问题,其中我有一些类型的函数 $ F(X-X_I,γ-Y_I,z)的$ 我需要与另一个函数进行卷积 $克(X,Y,Z,T)$.为了优化代码,我执行了f和g的fft,我将它们相乘,然后我执行逆变换以获得结果.

作为进一步的优化,我意识到,由于移位定理,我可以简单地计算一次f(x,y,z)的fft,然后将其乘以相位因子,这取决于 $(x_i,y_i)$ 获得fft $ F(X-X_I,γ-Y_I,z)的$.特别是,$\mathcal {F}(f(x-x_i,y-y_i,z))= exp ^ { -  2\pi j(x_i w_1 + y_i w_2)/ N}\mathcal {F}(f(x,y) ,Z))$,其中N是x和y的长度.

我尝试用python + numpy来实现这个简单的公式,但由于某些原因我目前无法理解它失败了,所以我要求SO社区的帮助来弄清楚我缺少的东西.

我还提供了一个简单的例子.

In [1]: import numpy as np
In [2]: x = np.arange(-10, 11)
In [3]: base = np.fft.fft(np.cos(x))
In [4]: shifted = np.fft.fft(np.cos(x-1))
In [5]: w = np.fft.fftfreq(x.size)
In [6]: phase = np.exp(-2*np.pi*1.0j*w/x.size)
In [7]: test = phase * base
In [8]: (test == shifted).all()
Out[8]: False
In [9]: shifted/base
Out[9]:
array([ 0.54030231 -0.j        ,  0.54030231 -0.23216322j,
        0.54030231 -0.47512034j,  0.54030231 -0.7417705j ,
        0.54030231 -1.05016033j,  0.54030231 -1.42919168j,
        0.54030231 -1.931478j …
Run Code Online (Sandbox Code Playgroud)

python numpy fft dft

5
推荐指数
1
解决办法
636
查看次数

标签 统计

dft ×1

fft ×1

numpy ×1

python ×1