Перейти к содержанию
    

фильтрация

Слышал тезис что при обработке блоков данных конечной длины например КИХ фильтром появляются "проблемы на краях сигнала". Я несовсем понял, но кажется речь шла о переходных процессах.

Вопрос как обрабатывать данные непрерывно? Скажем хочу промоделировать эти процессы на компьютере. Пишу программу на Си, которая заполняет массив (вместо реального АЦП). Данные нужно обрабатывать КИХ фильтром.

Как сделать "по уму"?

Я хочу сделать так: по указателю считать N отсчётов -> отфильтровать -> затем взять ещё N отсчётов - > отфильтровать....

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Слышал тезис что при обработке блоков данных конечной длины например КИХ фильтром появляются "проблемы на краях сигнала". Я несовсем понял, но кажется речь шла о переходных процессах.

Вопрос как обрабатывать данные непрерывно? Скажем хочу промоделировать эти процессы на компьютере. Пишу программу на Си, которая заполняет массив (вместо реального АЦП). Данные нужно обрабатывать КИХ фильтром.

Как сделать "по уму"?

Я хочу сделать так: по указателю считать N отсчётов -> отфильтровать -> затем взять ещё N отсчётов - > отфильтровать....

Для непрерывной обработки данных потребуется циклический буфер длиной N, где N - кол-во коэфф-тов импульсной хар-ки фильтра. Вдвигаете в буфер отсчёт вх. сигнала, перемножаете буфер с ИХ фильтра, произведения суммируете. Краевой эффект будет заметен при недостаточной длине фильтра.

 

Я хочу сделать так: по указателю считать N отсчётов -> отфильтровать -> затем взять ещё N отсчётов - > отфильтровать....

 

Получите ужосчто. Циклическая свёртка вместо линейной. Сигнал фильтровать нужно непрерывно, а не блоками. Для этого и нужен сдвиговый буфер.

 

Если хотите делать фильтрацию в частотной области, то гугль по ключ. слову overlap-save Вам в помощь.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

по поводу кольцевого буфера/адресации делал гиф анимацию, а так же расписывал алгоритм такого ких фильтра-дециматора. коль интересно гляньте здесь

 

сам блоки данных не обрабатывал.

о краевом эффекте не наслышан.. только когда фильтр не полностью сперва "загружен" входными отсчетами (а именно пока во входном буфере нет половины длины импульсной характеристики), то наблюдался переходный процесс, а потом тишь-гладь.

Изменено пользователем beaRTS

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для непрерывной обработки данных потребуется циклический буфер длиной N, где N - кол-во коэфф-тов импульсной хар-ки фильтра. Вдвигаете в буфер отсчёт вх. сигнала, перемножаете буфер с ИХ фильтра, произведения суммируете. Краевой эффект будет заметен при недостаточной длине фильтра.

 

 

 

Получите ужосчто. Циклическая свёртка вместо линейной. Сигнал фильтровать нужно непрерывно, а не блоками. Для этого и нужен сдвиговый буфер.

 

то что вы описали - это тоже длоками по N отсчётов(пусть N = кол-во к-ф фильтра).

 

так как же тогда на Си реализовать сдвиговый буфер?

или, если я правильно понял, делать нужно так: при каждой итеррации в умножениях участвуют N-1 старых отсчётов и один новый?

не до конца понимаю...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

или, если я правильно понял, делать нужно так: при каждой итеррации в умножениях участвуют N-1 старых отсчётов и один новый?

не до конца понимаю...

именно так

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...