[an error occurred while processing this directive]
|
float Result;
float r = 0.0;
float uen = 0.0;
bool Dtd;
int i;
//insert new samples to circular buffer
*hFarEndBuffer = far_end;
*hNearEndBuffer = near_end;
//compute y(n)
//now pass input samples via FIR filter
for (i = 0; i < Taps; i++)
r += *(hCoeff + i) * *(hFarEndBuffer + i);
//update signal buffer
for (i = Taps - 1; i > 0; i--)
*(hFarEndBuffer + i) = *(hFarEndBuffer + i - 1);
Result = *hNearEndBuffer - r;
//now adoptation
uen = Mu * r;
//update coefficients
for (i = 0; i < Taps; i++)
{
*hCoeff = uen * *(hCoeff + i);
}
//update signal buffer
for (i = Taps - 1; i > 0; i--)
{
*hFarEndBuffer = *(hFarEndBuffer + i -1);
}
return Result;
E-mail: info@telesys.ru