Фильтр с конечной импульсной характеристикой

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск

Фильтр с конечной импульсной характеристикой (Нерекурсивный фильтр, КИХ-фильтр) или FIR-фильтр (FIR сокр. от finite impulse response — конечная импульсная характеристика) — один из видов линейных цифровых фильтров, характерной особенностью которого является ограниченность по времени его импульсной характеристики (с какого-то момента времени она становится точно равной нулю). Такой фильтр называют ещё нерекурсивным из-за отсутствия обратной связи. Знаменатель передаточной функции такого фильтра — некая константа.

Динамические характеристики[править | править исходный текст]

Разностное уравнение, описывающее связь между входным и выходным сигналами фильтра: y\left (n\right)=b_0 x\left(n\right)+ b_1 x\left(n-1 \right)+...+b_P x\left(n-P \right) где P — порядок фильтра, x(n) — входной сигнал, y(n) — выходной сигнал, а b_{i} — коэффициенты фильтра. Иными словами, значение любого отсчета выходного сигнала определяется суммой масштабированных значений P предыдущих отсчетов. Можно сказать иначе: значение выхода фильтра в любой момент времени есть значение отклика на мгновенное значение входа и сумма всех постепенно затухающих откликов P предыдущих отсчетов сигнала, которые всё ещё оказывают влияние на выход (после P-отсчетов импульсная переходная функция становится равной нулю, как уже было сказано, поэтому все члены после P-го тоже станут равными нулю). Запишем предыдущее уравнение в более ёмком виде:

y \left( n \right) = \sum_{i=0}^{P} b_i x \left( n-i \right)

Для того, чтобы найти ядро фильтра положим

x(n) = \delta(n)

где \delta(n) — дельта-функция. Тогда импульсная характеристика КИХ-фильтра может быть записана как:

h\left (n\right)=\sum_{i=0}^{P}b_i \delta\left(n-i\right)

Z-преобразование импульсной характеристики даёт нам передаточную функцию КИХ-фильтра:

H\left(z\right)=\sum_{i=0}^{P}b_i z^{-i}

Свойства[править | править исходный текст]

КИХ-фильтр обладает рядом полезных свойств, из-за которых он иногда более предпочтителен в использовании, чем БИХ-фильтр. Вот некоторые из них:

  • КИХ-фильтры устойчивы.
  • КИХ-фильтры при реализации не требуют наличия обратной связи.
  • Фаза КИХ-фильтров может быть сделана линейной

Прямая форма КИХ фильтра[править | править исходный текст]

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

Реализация прямой формы КИХ фильтра

Пример программы[править | править исходный текст]

Ниже приведен пример программы КИХ-фильтра, написанный на C :

#define N 100 // порядок фильтра
float h[N] = { #include “f1.h” }; //вставка файла с известными коэффициентами фильтра
float x[N];
float y[N];
 
short my_FIR(short sample_data)
{
  float result = 0;
 
  for ( int i = N - 2 ; i >= 0 ; i-- )
  {
    x[i + 1] = x[i];
    y[i + 1] = y[i];
  }
 
  x[0] = (float)sample_data;
 
  for (int k = 0; k < N; k++)
  {
    result = result + x[k]*h[k];
  }
  y[0] = result;
 
  return ((short)result);
}

См. также[править | править исходный текст]

Ссылки[править | править исходный текст]