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 + -
显示快捷键?