fir_util.cpp

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

CPP
51
字号
//
//  File = fir_util.cpp
//

#include "misdefs.h"
#include "math.h"
#include "fir_util.h"

void SymmetricFirResponse( int num_taps,
                           double *filter_coeffs,
                           int db_scale_enabled,
                           int num_plot_points,
                           double *mag_resp)
{
 int index, L, n;
 double lambda, work;
 
 for( L=0; L<=num_plot_points-1; L++)
   {
    lambda = L * PI / (double) num_plot_points;
    if(num_taps%2)       // odd
      {
       work = filter_coeffs[(num_taps-1)/2];
       for( n=1; n<=((num_taps-1)/2); n++)
         {
          index = (num_taps-1)/2 - n;
          work = work + 2.0 * filter_coeffs[index] * cos(n*lambda);
         }
      }
    else               // even
      {                       
       work = 0.0;
       for(n=1; n<=(num_taps/2); n++)
         {
          index = num_taps/2 - n;
          work = work + 2.0 * filter_coeffs[index] * cos((n-0.5)*lambda);
         }
      }
    if(db_scale_enabled)
      {
       mag_resp[L] = 20.0 * log10(fabs(work));
      }
    else
      {
       mag_resp[L] = fabs(work);
      }
   }
 return;
}

⌨️ 快捷键说明

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