Пока я не совсем понимаю как оно работает.
void arm_lms_norm_init_f32   (   arm_lms_norm_instance_f32 *    S ,
uint16_t    numTaps ,
float32_t *    pCoeffs ,
float32_t *    pState ,
float32_t    му ,
uint32_t    размер блока 
)      
Параметры
[в]   S   указывает на экземпляр структуры фильтра LMS с плавающей запятой
[в]   numTaps   количество коэффициентов фильтра
[в]   pCoeffs   указывает на буфер коэффициентов
[в]   pState   указывает на буфер состояния
[в]   му   размер шага, который управляет обновлениями коэффициентов фильтра
[в]   размер блока   количество образцов для обработки
Возврат
никто
Детали
pCoeffs указывает на массив коэффициентов фильтра, хранящихся в обратном во времени порядке:
   {b [numTaps-1], b [numTaps-2], b [N-2], ..., b [1], b 
Начальные коэффициенты фильтра служат отправной точкой для адаптивного фильтра. pStateуказывает на массив numTaps+blockSize-1выборок длины , где blockSize- количество входных выборок, обработанных каждым вызовом arm_lms_norm_f32().
void arm_lms_norm_f32   (   arm_lms_norm_instance_f32 *    S ,
const float32_t *    pSrc ,
float32_t *    pRef ,
float32_t *    pOut ,
float32_t *    pErr ,
uint32_t    размер блока 
)      
Параметры
[в]   S   указывает на экземпляр структуры нормализованного фильтра LMS с плавающей запятой
[в]   pSrc   указывает на блок входных данных
[в]   pRef   указывает на блок справочных данных
[вне]   pOut   указывает на блок выходных данных
[вне]   pErr   указывает на блок данных об ошибке
[в]   размер блока   количество образцов для обработки