[an error occurred while processing this directive]
Опять фильтры и IIR - как бороться?
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

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

Отправлено VVT 01 августа 2002 г. 10:33

Есть такой алгоритм (прямой IIR форма 1, порядок фильтра 2, соответсвенно Order=4, stopband, пробовал Баттерворта и Бесселя), который для начала моделируется в LabView:

for(i=0; i<=Order; i++) OutputData[i]=InputData[i];
for (i=Order; i< (Length); i++)
{
s1=0;
for (k=0; k<=Order; k++) s1=s1+a[k]*(InputData[i-k]);
s2=0;
for (k=1;k<= Order; k++) s2=s2+b[k-1]*(OutputData[i-k]);
OutputData[i]=s1-s2;
};

Все плавающее.
Пока длина последовательность велика - порядка 1024 и больше - все прекрасно, нужная частота давится. Но если ограничиваешься 64 - начинается странное. В спектре отфильтрованного сигнала появляется частота, на которую фильтр настроен.
С коэффициентами полный порядок - аналогичное IIR преобразование - родное в LabView прекрасно все фильтрует, никаких лишних частот в спектре.
Подозреваю, что проблема в первых элементах массива, которые не фильтруются в силу отсутствия предистории. Но ведь родной IIR работает! Как ему удается?
Подскажите, не дайте крыше уехать...

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

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru