dft2.cpp

来自「Digital filter designer s handbook C++ c」· C++ 代码 · 共 44 行

CPP
44
字号
#include <stdlib.h> 
#include <math.h>
#include "d_cmplx.h"
#include "xforms.h"	
const double TWO_PI = 6.283185308;

void dft2( double_complex *x_in,
           double_complex *y_out,
           int num_samps)
{
 int n, m;
 int k;
 double *cos_val, *sin_val;
 double w_factor;
 double sum_real, sum_imag;
 
 cos_val = new double[num_samps];
 sin_val = new double[num_samps];
 w_factor = TWO_PI/num_samps;
 
 for( k=0; k<num_samps; k++)
   {
    cos_val[k] = (double)cos(w_factor * k);
    sin_val[k] = (double)sin(w_factor * k);
   }
   
 for( m =0; m<num_samps; m++)
   {
    sum_real = 0.0;
    sum_imag = 0.0;
    
    for( n =0; n<num_samps; n++)
      {
       k = (m*n) % num_samps;
       sum_real += (real(x_in[n]) * cos_val[k] + imag(x_in[n]) * sin_val[k]);
       sum_imag += (imag(x_in[n]) * cos_val[k] - real(x_in[n]) * sin_val[k]); 
      }     
    y_out[m] = double_complex(sum_real, sum_imag);
   }
 delete [] cos_val;
 delete [] sin_val; 
 return;
}    

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?