1

我需要计算一些东西:

A 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 包。我想知道是否有可能制定一个计划一次性完成这两项工作,就像 2-D FFT 一样。另一种方法是逐列执行 FFT,存储结果,然后逐行执行 IFFT。如果有可能,我想避免这种情况。

问候

乔戈斯

4

2 回答 2

0

我很晚才看到答案,但无论如何谢谢。同时我找到了一种方法,但我应该检查它是否比在两个不同维度上进行 FFT 和 IFFT 更有效。对于感兴趣的,它是以下内容:

IFFT 与数组倒数的 FFT 相同,除了一个因子。所以:

http://latex.codecogs.com/gif.latex?X_j= \sum_{k=1}^Ne^{i2\pi/Njk}

也等于:

http://latex.codecogs.com/gif.latex?X_j= \frac{e^{i2\pi/Nj}}{N}\sum_{k'=1}^Ne^{-i2\pi/Njk '}x_{Nk'+1}

这可以通过索引 k=Nk'+1 的变化来显示(只需按照等式的链接)。如果可以以相反的顺序存储行,那么 2-D FFT 的一个计划就足以解决原始问题,但所有行仍应乘以一个常数。

于 2013-06-10T11:27:08.977 回答
0

从来没听说过。你一次只能做一个方向。充其量你需要分配三个 fftw_complex 对象并创建两个计划。

于 2013-05-27T18:32:38.270 回答