opencv DFT源代码我知道如何使用N点复数DFT获得2N点DFT,但不知道为什么在该过程之后需要另一个旋转

时间:2017-04-20 10:03:51

标签: opencv dft

dst是复杂的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;
 }

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

1 个答案:

答案 0 :(得分:0)

因为根据enter image description here

,首先在原始序列的奇数和偶数样本上计算复数FFT

所以需要转动。