FFTW:只对真实的结果感兴趣

FFTW: Only interested in real result

本文关键字:结果 感兴趣 真实 FFTW      更新时间:2023-10-16

我正在使用FFTW来计算二维复数数据的逆DFT。默认设置的输出(复数到复数)是复数,虚部不是零。然而,我只对结果的真实部分感兴趣,而对复杂部分不感兴趣。FFTW的交错实数复数输出对我来说并不理想,因为我想通过SSE对(实数)输出进行后处理。有没有办法从FFTW中获得唯一的实数数组?复杂到真实的计划似乎不起作用,因为输出不是真实的。

[时间|频率]域中的真实数据暗示了另一个域中关于零的共轭对称性。通过强制共轭对称(添加其自身的共轭翻转版本),可以有效地丢弃其他域中的虚部。这应该允许你在FFTW中使用真正的ifft,获得大约2倍的加速。请注意,FFTW实际ifft仅使用nfft/2+1个bin。

下面是一个1D示例来说明这一点:

X = randn(8,1)+j*randn(8,1);
Xsym = .5*(X + conj(X([1 8:-1:2]'))); % force the symmetric condition
err = real(ifft(X)) - ifft(Xsym); 

对于2D IFFT,最好用2次1d IFFT来执行2D IFFT,如另一个答案

中所述