[an error occurred while processing this directive]
Научите, плиз, как эффективно реализовать КИХ-фильтр, если количество коэффициентов (+)
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено vinogradov aleksei 26 октября 2006 г. 14:14

его имп. х-ки не выражается степенью двойки.

Пример:
Для сохранения входных отсчетов используется циркулярный буфер "buffer_lp" длиной 32 байта, а 32 коэффициента имп. х-ки хранятся в массиве "coeffs_lp":

unsigned char low_pass_filter (unsigned char sample)
{
unsigned char i;
unsigned long int out_lp;

out_lp=0;
buffer_lp[offset_input]=sample;
for (i=0;i<32;i++) out_lp=out_lp + (unsigned long int)buffer_lp[(offset_input-i)&0x1f]*coeffs_lp[i];
offset_input=(offset_input+1)&0x1f;
return (out_lp>>12);
}

Если количество коэффициентов выражается степенью двойки, новое смещение в буфере вычисляется очень просто. Например, для буфера из 32 байт:

offset_input=(offset_input+1)&0x1f;

Для, например, 29-байтового буфера такой прием не подходит. Есть ли готовые эффективные решения, подходящие для такого случая ?

Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа
Имя (обязательно): 
Пароль: 
E-mail: 

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 
URL изображения: 


Rambler's Top100 Рейтинг@Mail.ru
Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание