我需要计算某种东西:
j,j' = 1 / N * sum(k = 1,...,N; e i * 2 * pi / N * j * k * sum(k'= 1,...,N; A' k,k' e -i * 2 * pi / N * j'* k' )) (i =想象单位)
最有效的方法是沿列使用FFT,沿行使用IFFT。我在C工作,我使用FFTW包。我想知道是否有可能创建一次计划同时进行二维FFT。另一种方法是逐列进行FFT,存储结果,然后逐行执行IFFT。如果有可能,我想避免这种情况。
问候
Giorgos
答案 0 :(得分:0)
不是我知道的。你一次只能做一个方向。最好你需要分配三个fftw_complex对象并创建两个计划。
答案 1 :(得分:0)
我很晚才看到答案,但无论如何,谢谢。我找到了一种方法,但我应该检查它是否比在两个不同维度上进行FFT和IFFT更有效。感兴趣的是以下内容:
除了因子之外,IFFT与数组逆的FFT相同。所以:
http://latex.codecogs.com/gif.latex?X_j= \ {sum_ K = 1} ^氖^ {I2 \ PI / NJK}
也等于:
http://latex.codecogs.com/gif.latex?X_j= \压裂{E 1 {I2 \ PI / NJ}} {N} \ sum_ {K '= 1} ^氖^ { - I 2 \ PI / NJK'} X_ {N-K” 1}
这可以通过索引k = N-k'+ 1的变化来显示(只需遵循等式的链接)。 如果可以以相反的顺序存储行,那么对于原始问题,一个2-D FFT计划就足够了,但是所有行仍然应该乘以常数。