同时FFT和IFFT在不同的维度使用FFTW库



我需要计算这样的东西:

Aj,j' =1/N*sum(k=1,…,N;ei*2*pi/N*j*k * sum(k'=1,…,N;A'k,k' e-i*2*pi/N*j'*k'))(i =虚单位)

最有效的方法是沿列和沿行使用FFT。我在C工作,我使用FFTW包。我想知道是否有可能创建一个计划,在一次做这两个,作为2-D fft。另一种方法是逐列执行FFT,存储结果,然后逐行执行IFFT。如果有可能,我希望避免这种情况。

问候

乔治

据我所知没有。你一次只能做一个方向。最多只需要分配三个fftw_complex对象并创建两个计划。

我很晚才看到答案,但还是谢谢你。同时我找到了一种方法,但是我需要检查一下是否比仅仅在两个不同的维度上做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^{i2pi/Nj}}{N}sum _k'=1^Ne^-i2 {}{pi/Njk' x_n -k'+1

这可以通过索引k=N-k'+1的变化来表示(只需遵循方程的链接)。如果可以以相反的顺序存储行,那么二维FFT的一个计划对于原始问题是足够的,但是所有的行仍然应该乘以一个常数。

}{}

相关内容

  • 没有找到相关文章