[an error occurred while processing this directive]
|
IIR делать нельзя (ИХ-то бесконечная! А FFT конечный). А вот FIR легко.
Допустим есть сигнал из x() NN выборок и ИХ фильтра h() из M выборок. Как известно, ОБПФ от произведения преобразований Фурье двух сигналов есть цикличесткая свертка этих сигналов. Фильтрация линейной инвариантной к сдвигу во времени системой - по определению линейная свертка сигнала с ИХ. Нужно найти способ, как перемножением в частотной области (циклической сверткой) изобразить линейную. Это элементарно. Выбираем длину БПФ L>M-1. Вычисляем размер блока входного сигнала N=L-M+1. Бьем входной сигнал на блоки по N отсчетов.
ИХ фильтра добиваем до длины L нулями, и каждый из блоков входного сигнала добиваем до той-же длины. Далее считаем ОБПФ(БПФ(блок_сигнала_добитый_нулями)*БПФ(ИХ_добитая_нулями)). Далее. Размер перекрытия блока будет L-N. И складываем результаты вот так:
1 L-N L
предыдущий блок |----------|----|
текущий блок |-----------|---|
следующий блок |-----------|---|
--------------------------------------------------------------------
правильный результат |----------------------------------|
Этот метод называется блочная фильтрация с перекрытием и накоплением.
E-mail: info@telesys.ru