lmsfilter.cpp
来自「Adaptive digital Filters in C++」· C++ 代码 · 共 40 行
CPP
40 行
// lmsfilter.c++
static const char rcsid[] = "@(#)lmsfilter.c++ 1.1 15:00:30 10/19/92 EFC";
#include <math.h>
#include <lmsfilter.hpp>
float LMSFilter::filter(const float xin)
{
shift(x, nm1); // shift data down one to allow next value
x[ nm1 ] = xin;
float e = x[ nm1 ] - convolve();
adapt( e );
if ( _output_error )
out_val = e;
return out_val;
}
void LMSFilter::adapt(const float e)
{
float errf = 2.0 * beta_coef * e;
for (int k = 0; k < nx; k++)
{
alpha[k] += errf * x[nm1 - k];
if ( fabs( alpha[k] ) > 1.0 )
alpha[k] = alpha[k] > 0.0 ? 1.0 : -1.0;
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?