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