2017-04-20 19 views
0

dst是复杂的DFT结果,也是此部分代码完成时的最后结果。opencv DFT源代码我知道如何使用N点复DFT获得2N点DFT,但不知道为什么它需要在该过程后进行另一次旋转

for(j = 2, wave++; j < n2; j += 2, wave++) 
{ 
    /* calc odd */ 
    h2_re = scale2*(dst[j+1] + t); 
    h2_im = scale2*(dst[n-j] - dst[j]); 

    /* calc even */ 
    h1_re = scale2*(dst[j] + dst[n-j]); 
    h1_im = scale2*(dst[j+1] - t); 

    /* rotate i can not understand this*/ 
    t = h2_re*wave->re - h2_im*wave->im; 
    h2_im = h2_re*wave->im + h2_im*wave->re; 
    h2_re = t; 
    t = dst[n-j-1]; 

    dst[j-1] = h1_re + h2_re; 
    dst[n-j-1] = h1_re - h2_re; 
    dst[j] = h1_im + h2_im; 
    dst[n-j] = h2_im - h1_im; 
} 

为什么需要另一个旋转其中/ *旋转*/

回答

0

由于奇数和偶数原始序列中的采样计算复数FFT首先,根据enter image description here

所以需要摆弄。

+0

谢谢!我是中国人,不擅长英语,对不起! – dahua