在实例中FFT前向与前向完全相关

时间:2014-07-17 17:24:49

标签: java fft

我正在探索JTransforms FFT,我尝试了FFT.realForward()FFT.realForwardFull(),我得到了这些结果:

RealForward

16.236587494
-2.3513066039999995    <----------------?
1.8268368691062924
-1.1179067733368138
6.698362081000001
5.353354667
-6.146021583106291
-12.013420149336813


RealForwardFull
16.236587494
0.0                      <------------------
1.8268368691062924
-1.1179067733368138
6.698362081000001
5.353354667
-6.146021583106291
-12.013420149336813
-2.3513066039999995  <-----------------
0.0                    <-------------
-6.146021583106291
12.013420149336813
6.698362081000001
-5.353354667
1.8268368691062924
1.1179067733368138

因此,正如您所看到的,realforwardFull()为第一个数字提供了不同的想象并添加了一对新的。不应该realforward()产生相同的结果减去任何重复吗?

2 个答案:

答案 0 :(得分:1)

因为实信号的FFT是对称的,所以k = 0和k = N / 2分量都是实数(你可以在“完整”输出中看到)。因此,它们在“非完整”输出中被打包在一起。

此输出布局在JavaDoc中进行了解释。

(注意:FFTW做同样的事情。)

答案 1 :(得分:0)

有关如何表示FFT输出数据的信息,请参阅JTransforms文档HERE

对于RealForwardFull,输出是常用的全FFT数据,即N-Complex数,实数和虚数组件交错。

对于RealForward,输出排列如下: - 前两个元素分别是第一个(k = 0)和中间(k = N / 2)FFT系数的实部,其余的FFT系数是然后在实际和虚构的组件交错后给出。

像Oli CharlesWorth提到的那样,k = 0和k = N / 2项的虚部将为零,因为输入信号是实数,因此Realforward不返回它们。它只返回足够的最小信息能够重建全谱。